Evenement sur un Tshape créé [Résolu]

Signaler
Messages postés
18
Date d'inscription
vendredi 8 avril 2005
Statut
Membre
Dernière intervention
7 avril 2007
-
Messages postés
18
Date d'inscription
vendredi 8 avril 2005
Statut
Membre
Dernière intervention
7 avril 2007
-
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!

Si quelqu'un pouvait m'éclairer?!!

Merci d'avance! @++

4 réponses

Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
42
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;

Comme ceci ça fonctionne

@+
Cirec
Messages postés
3839
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 avril 2021
120
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...
Messages postés
3839
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 avril 2021
120
Oui c'est exact, je l'ai fais un peu "l'arrache" (ca fait un moment que je suis passer au C, j'oubli parfois quelques details...)
Messages postés
18
Date d'inscription
vendredi 8 avril 2005
Statut
Membre
Dernière intervention
7 avril 2007

Merci beaucoup!!