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

cs_OhAime 18 Messages postés vendredi 8 avril 2005Date d'inscription 7 avril 2007 Dernière intervention - 1 mars 2006 à 17:18 - Dernière réponse : cs_OhAime 18 Messages postés vendredi 8 avril 2005Date d'inscription 7 avril 2007 Dernière intervention
- 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! @++
Afficher la suite 

5 réponses

Répondre au sujet
Cirec 4217 Messages postés vendredi 23 juillet 2004Date d'inscription 3 avril 2018 Dernière intervention - 1 mars 2006 à 22:35
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Cirec
cptpingu 3784 Messages postés dimanche 12 décembre 2004Date d'inscription 18 avril 2018 Dernière intervention - 1 mars 2006 à 21:07
0
Utile
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...
Commenter la réponse de cptpingu
Cirec 4217 Messages postés vendredi 23 juillet 2004Date d'inscription 3 avril 2018 Dernière intervention - 1 mars 2006 à 22:22
0
Utile
Salut,
Regarde cette source :
http://www.delphifr.com/codes/REALISER-DEGRADE-SUR-PLUSIEURS-COULEURS-AVEC-API-WINDOWS_35784.aspx

Dans l'unité Briques il y a tout ce que tu demandes et dans l'unité UColorSelect il y a l'utilisation d'un array of Brique (TShape)

@+
Cirec
Commenter la réponse de Cirec
cptpingu 3784 Messages postés dimanche 12 décembre 2004Date d'inscription 18 avril 2018 Dernière intervention - 1 mars 2006 à 23:30
0
Utile
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...)
Commenter la réponse de cptpingu
cs_OhAime 18 Messages postés vendredi 8 avril 2005Date d'inscription 7 avril 2007 Dernière intervention - 2 mars 2006 à 03:04
0
Utile
Merci beaucoup!!
Commenter la réponse de cs_OhAime

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.