Evenement sur un Tshape créé

Résolu
cs_OhAime Messages postés 18 Date d'inscription vendredi 8 avril 2005 Statut Membre Dernière intervention 7 avril 2007 - 1 mars 2006 à 17:18
cs_OhAime Messages postés 18 Date d'inscription vendredi 8 avril 2005 Statut Membre Derniè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!

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

Merci d'avance! @++

4 réponses

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
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;

Comme ceci ça fonctionne

@+
Cirec
3
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
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...
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
1 mars 2006 à 23:30
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...)
0
cs_OhAime Messages postés 18 Date d'inscription vendredi 8 avril 2005 Statut Membre Dernière intervention 7 avril 2007
2 mars 2006 à 03:04
Merci beaucoup!!
0
Rejoignez-nous