Bonjour!
Comment faire pour clicquer tous les bouttons en une seule instruction?
Merci!
Bonjour!
Comment faire pour clicquer tous les bouttons en une seule instruction?
Merci!
Personne ne le sait?Par ex: (Button1, Button2, Button3).click;
Mais ça marche pas![]()
bonjour,
si j'ai bien compris, tu veux cliquer sur des différents boutons en même temps!! Bon, je pense pas qu'il ya un instruction pour ce genre de truckikica a écrit :
Bonjour!
Comment faire pour clicquer tous les bouttons en une seule instruction?
Merci!
Personne ne le sait? Par ex: (Button1, Button2, Button3).click;
Mais ça marche pasmais tt simplement tu mes tout les instructions sous un seul bouton qui fera tout par la suite en cliquant dessus !
![]()
ben bah explique plus sinon ..
++
Si ce que tu veux faire c'est vraiment une procedure qui gere un clique sur 3 boutons en même temps, c'est que ton programme est mal fait.
Je m'explique: même si une telle chose était possible en delphi, pour pouvoir cliquer sur 3 boutons en même temps, il faudrait un ordinateur sur lequel on puisse installer et utiliser 3 souris en même temps, et egalement un humain qui dispose de 3 mains...
Tu vas peut-etre me dire : "oui mais je veux simuler un clic sur 3 boutons en même temps !".
Mais pourquoi simuler quelque chose d'impossible? Si tu as vraiment besoin qu'une certaine chose se passe quand 3 autres choses se passent en même temps, utilisent autre chose que des boutons.
Maintenant peut-etre que ce que tu veux c'est avoir 1 seule procédure qui gère les cliques sur plusieurs boutons.
Dans ce cas tu fais une procedure onClick sur un des boutons, et tu assignes cette procedure à l'evenement onClick de chaque bouton.
Et pour reconnaitre quel bouton a été cliqué tu utilises "sender as tbutton".
Tout comme les autres personnes ayant repondu avant je trouve ton probleme bizzar mais je vais quand meme te proposer une autre solution tu fais un tableau de boutonet apres tu peux utiliser une boucle for pour effectuer les differentes oppération pour un clique ce n'est pas tres utile mais pour par example mettre la propriété enable a false sur 20 bouttons c pas mal !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Bouton : Array of TButton;
Joyeuses fetes et tiens nous au courant
je passais par là et j'ai une question qui n'a rien à voir :
mushroom tu parles de "sender as tbutton"
moi j'utilise "TButton(Sender)"
c'est quoi la différence ?
Absolument aucune !Envoyé par Michel_57
C'est rigoureusement la même chose: un transtypage.
@+ Claudius
Pour aller un peu plus loin dans le résonnement je tiens à ajouter qu'un petit test pour éviter les violations d'acces serait utile :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if Sender is TButton then begin end;
Et si ton problème c'est bel et bien de cliquer sur tout les boutons de ta forme les uns à la suite des autres, tu peux toujours scanner tous les controles de ta forme comme ceci :
Voilà ca mange pas de pain, mais c'est bon de rappeler ce type de technique qui peut souvent alléger le code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 for i := 0 to ControlCount - 1 do begin if Controls[i] is TButton then TButton(Controls[i].Click; end;
Tu peux également imaginer de cliquer les boutons dans n'importe quel ordre... (toujours dans l'esprit d'un test) avec Randomise configuré pour ne jamais dépasser ControlCount -1.
J'ai appris il y a qq temps la méthode findcomponent et c'est efficace pour ce genre de problème :
et vous pouver minimiser le parcours de tous TControls. cette méthode cible directement les TButtons concernés :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for i:=1 to 3 do TButton(Findcomponent('Button'+inttostr(i))).Click
salut
si tu regarde le source de findcompoment tu t'apercois qu'il fait une boucle
le plus optimiser serait de boucler sur le array of tbutton
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Bouton : Array of TButton; ... for i:= low(Bouton) to High(Bouton) do (Bouton[i] as Tbutton).click; ...
@+ Phil
Salut anapurna,
j'ai essayé ton code :
Il me génére un message d'erreur à l'exécution "Violation d'accés" avec Delphi7.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Bouton : Array of TButton; ... for i:= low(Bouton) to High(Bouton) do (Bouton[i] as Tbutton).click; ...
Bonjour,
et avec ça :
a+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Bouton : Array of TButton; ... for i:= low(Bouton) to High(Bouton) do if assigned(Bouton[i]) and (Bouton[i] is Tbutton) then (Bouton[i] as Tbutton).click; ...
Non plus, Yurck, toujours une erreur.
Mais je ne sais quelle version vous utilisez.
Comment remplis-tu ton tableau
a+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 var Bouton : Array of TButton; i : integer; begin SetLength(Bouton,3); Bouton[0] := Button1; Bouton[1] := Button2; Bouton[2] := Button3; for i:= low(Bouton) to High(Bouton) do if assigned(Bouton[i]) and (Bouton[i] is Tbutton) then (Bouton[i] as Tbutton).click; end;
Attention, ca commence à avoir trop d'instructions (s'il s'agit de 100 élements du tableau).
et l'indice du tableau commence par 1 apparement :
sinon : Button1.Click;Button2.Click;Button3.Click c'est mieux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 var Bouton : Array of TButton; i : integer; begin SetLength(Bouton,3); Bouton[1] := Button1; Bouton[2] := Button2; Bouton[3] := Button3; //for i:= low(Bouton) to High(Bouton) do for i:= 1 to 3 do // c'est fixé 3 if assigned(Bouton[i]) and (Bouton[i] is Tbutton) then (Bouton[i] as Tbutton).click; end;
Si tu trouves qu'il y a trop d'instructions tu devrais utiliser FindComponent.Envoyé par abdelghani_k
certeset l'indice du tableau commence par 1 apparement :
C'est vous qui voyez !sinon : Button1.Click;Button2.Click;Button3.Click c'est mieux.
C'est à toi de réfléchir et de savoir dans quel contexte tu travailles, tu peux aussi boucler sur les controls et prendre ceux de la classe souohaitée.
a+
salut
@+ Phil
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 const nbButton = 100; var Bouton : Array of TButton; i : integer; ... // initialisation SetLength(Bouton,nbButton); for i:= low(Bouton) to High(Bouton) do begin Bouton[i] := TButton.create(nil); (Bouton[i] as TButton).name := format('Mybutton%d',[i]); end; ... //Utilisation if assigned(button) then begin for i:= low(Bouton) to High(Bouton) do if (Bouton[i] is Tbutton) then (Bouton[i] as Tbutton).click; end; ... //Destruction for i:= low(Bouton) to High(Bouton) do begin (Bouton[i] as TButton).free; end; Bouton := nil;
PS : les methode low et high evite les erreur d'index
Partager