cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 2018
-
9 juin 2013 à 16:38
cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 2018
-
9 juin 2013 à 17:04
Bonjour,
Je créé un nombre variable de Tshape dynamiquement :
...
With ListShapes[nC-1] do
begin
Parent := Form1;
Shape := stRectangle;
Brush.Color := Form1.Color;
pen.Color := Clblack;
height := HC;
width := WC;
Left := Ox + WC * (j-1) - j;
Top := Oy + HC * (i-1) - i;
//OnMouseDown(@Self,mbLeft,[]{Shift},0,0);
end;
...
J'ai besoin d'identifier un clic de souris sur l'un des Tshape ainsi créé. Mais je n'y arrive pas.
Je sais gérer des évènements Onclick dynamiquement mais TShape ne possède pas cet évènement.
qu'elqu'un a t-il fait?
Je n'arrive même pas à déclarer la propriété:
J'ai trouvé une solution avec un hook souris pour identifier un clic en coordonnées écran, mais dès que la souris se balade hors de la fenêtre, elle plante tout. Je ne maîtrise pas suffisamment les Hook que je trouve trop lourd pour gérer des clics sur Tshape.
Mais je vois que OnMousedown n'est pas très simple non plus à gérer.
cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 20183 9 juin 2013 à 17:04
Bon ça doit-être la fatigue de la semaine, j'avais pourtant essayé hier!
//dans la zone public
...
procedure ShapeMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
end;
procedure TForm1.ShapeMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
showmessage('clic de '+Tshape(Sender).Name+' en '+inttostr(X)+'-'+inttostr(Y));
end;
Procedure TForm1.CreationZones;
begin
...
ListShapes[nC-1] := TShape.Create(Form1);
With ListShapes[nC-1] do
begin
...
OnMouseDown := ShapeMouseDown;
end;
end;