Awaking
Messages postés18Date d'inscriptionjeudi 19 août 2004StatutMembreDernière intervention23 mai 2005
-
29 août 2004 à 14:12
Awaking
Messages postés18Date d'inscriptionjeudi 19 août 2004StatutMembreDernière intervention23 mai 2005
-
29 août 2004 à 15:40
Lut all,
J'essaye de faire un petit jeu en 2d mais je suis bloqué dans sa création, c'est pourquoi je vous demande de l'aide.
Comment est ce que je pourrais faire pour attribuer les memes actions à environ 200 même procedure ? Une peu plus précisement, j'ai une form avec 200 carré de meme taille meme image, tout... sauf leur nom et pour chacun de ces carrés, il faut qu'il se passe qqch quand on clique avec la souris dessus. Je sais pas si vous connaissez un moyen un peu plus rapide que d'écrire 200 fois la même chose ?
cs_saib
Messages postés38Date d'inscriptionmercredi 12 mars 2003StatutMembreDernière intervention15 mars 2010 29 août 2004 à 15:34
Petite precision :
Pour faire une action specifique sur le carre sur lequel on clique, dans la pocedure ProcedureCarreClick tu fait les actions sur (Sender as TImage) :
Procedure CarreClick(Sender : TObject);
Begin
(Sender as TImage).Left := (Sender as TImage).Left + 1; // on decale le carre sur lequel on a cliqué de 1 vers la droite
(Sender as TImage).Visible := False // on cache le carre sur lequel on a cliqué
cs_saib
Messages postés38Date d'inscriptionmercredi 12 mars 2003StatutMembreDernière intervention15 mars 2010 29 août 2004 à 15:29
Salut
il y a 2 solutions :
- Soit tous tes carres sont crees a la conception, auquel cas tu peut tous leur assigner la meme procedure pour l'evenement OnClick (dans le concepteur de fiches)
- Soit tes carres sont crees dynamiquement a l'execution et dans ce cas lors de la creation tu assigne un procedure a l'evenement OnClick :
Tu peut egalement le faire dans une boucle apres que tes carres aient crees, mais c'est moins propre:
si tes carre sont des TImage et que leur nom commence toujours par 'Carre' tu peut faire:
For i := 0 to Form1.ComponentCount - 1 do
begin
if Form1.Component[i] is TImage then // on teste si le composant est un TImage
Begin
If MidStr((Form1.Component[i] as Timage).Name, 0, 4) = 'Carre' then // On teste si le nom du TImage commence par 'Carre'
Begin
(Form1.Component[i] as TImage).OnClick := ProcedureCarreOnClick; //On assigne la procedure ProcedureCarreOnClick a l'evenement OnClick du TImage dont le nom commence par 'Carre'
End;
end;
end;