"Thomas Eg Jørgensen" <thomas@kontorbutikken.dk> wrote in
news:b1evnr$230$1@sunsite.dk:
> Hej
>
> Jeg har lavet en grafisk komponent. Inde i denne komponent vil jeg
> gerne kunne flytte rundt på de grafiske "emner" på selve
> komponenten. Dette drag'n'drop vil jeg gerne have til at foregå i
> koden til komponenten. Ligledes vil jeg gerne kunne "trække" i min
> "emner" så de f.eks. bliver større eller mindre...
Det lyder som noget med at override metoderne:
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y:
Integer); dynamic;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); dynamic;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y:
Integer); dynamic;
Disse er nedarvet fra TControl og erklæret som dynamic, så det er bare at
gå i gang (husk at kalde inherited). Det er muligt der er metoder, der er
bedre det kommer lidt an på din opbygning af dine delkomponenter - fx.
procedure DragOver(Source: TObject; X, Y: Integer; State: TDragState;
var Accept: Boolean); dynamic;
procedure DoEndDrag(Target: TObject; X, Y: Integer); dynamic;
procedure DoStartDrag(var DragObject: TDragObject); dynamic;
men jeg tvivler på at det er noget du skal bruge.
> Mit problem ligger i at fange mouseover og benytte den inde i
> komponentkoden, jeg kan godt aktivere mouseover og så få
> komponentens parent til at reagere på den, men selve komponenten?.
> Når jeg så har mit "trækkeri" er færdig skal min komponent også
> udløse en event af en slags som fortæller hvad brugeren har
> lavet...Hvorledes klarer jeg den?
> Er der nogen der kan give mig en ledetråd til de to spørgsmål?
Til den sidste del lyder det om som du har brug for at definere dine egne
events, dette kan du gøre sådan at de sender lige præcis de information
med som du har brug for (det er dog pænest at bevare en "Sender: TObject"
parameter, men ikke en nødvendighed).
Som eksempel har jeg sakset lidt fra Borlands kode:
TMouseMoveEvent = procedure(Sender: TObject; Shift: TShiftState;
X, Y: Integer) of object;
TMyControl = class
private
FOnMouseMove: TMouseMoveEvent;
....
public
....
property OnMouseMove: TMouseMoveEvent read FOnMouseMove write
FOnMouseMove;
end;
/Claus
--
Claus Christiansen, <mailto:NOSPAM@unipeople.dk>, leave the adr. as it is
personal: <
http://unipeople.dk/~cch>; pythia: <
http://www.pythia.dk>
===========================================================--------------
"Computers are useless. They can only give you answers" - Pablo Picasso