cs_OhAime
Messages postés18Date d'inscriptionvendredi 8 avril 2005StatutMembreDernière intervention 7 avril 2007
-
1 mars 2006 à 17:18
cs_OhAime
Messages postés18Date d'inscriptionvendredi 8 avril 2005StatutMembreDernière intervention 7 avril 2007
-
2 mars 2006 à 03:04
Bonjour!
Je suis débutant en delphi, et après avoir vu une source, je me pose une question!
En fait je voudrais faire un jeu de bataille naval, mais mon problème se pose presque dès le début lol! En fait j'ai donc créer un tableau de Tshape.
Alors en fait, mon problème est qu'en fait, je voudrais assigner à chaque Tshape ainsi créé, l'evement OnMouseDown, et je sais pas trop comment faire!
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 1 mars 2006 à 22:35
Par contre CptPingu le bout de code que tu as donné ne fonctionneras pas
il faut plus de paramètres :
type TForm1 = class (TForm)
procedure mon_action(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private { Déclarations privées }
public { Déclarations publiques }
end;
var Form1: TForm1;
tmp: TShape;
procedure TForm1.mon_action(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); // si non tu as belle erreur a la compilation
begin //...
end;
procedure TForm1.Button4Click(Sender: TObject);
begin tmp : = TShape.create(Self); // où Nil où tout autre composant conteneur mais pas rien
tmp.OnMouseDown := mon_action; //Le nom de ta procedure
end;
cptpingu
Messages postés3836Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention11 février 2023124 1 mars 2006 à 21:07
2 solutions:
- Soit tes TShapes existent à la création et tu clique sur onMouseDown dans l'inspecteur d'objet pour lui assigner une procedure
- Soit tes TShapes n'existent pas avant l'execution et tu assigne une procedure a l'evenement OnMouseDown pendant l'execution.
Lors de la création d'un TShape tu fais simplement ceci:
procedure mon_action()
begin ...
end;
var tmp: TShape
begin tmp := TShape.create();
tmp.OnMouseDown := mon_action //Le nom de ta procedure
end;
PS: L'expression "En fait" tu es pas obligé de la répéter 4 fois...