Cliquer sur un bouton dont le nom est dans un variable

Résolu
azertyloris Messages postés 19 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 31 décembre 2005 - 17 févr. 2005 à 15:23
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 - 18 févr. 2005 à 22:03
Bonjour,

Tout est dans le titre,

en fait je souhaiterai cliquer sur un combobox donc le nom est Combo+VARIABLE

mais la fontion Combo+variable.Click; ne marche bien sur pas. Il me
semble avoir deja vu la solution et il faut utiliser il me semble with
tobject do mais je suis pas sur du tout et je ne sais pas comment
utiliser cette fonction . Si quelqu'un pourrai m'aider svp :)



merci beaucoup

6 réponses

japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
18 févr. 2005 à 01:45
Si j'ai bien compris ta question, azertyloris, tu voudrais déclencher
l'évènement OnClick sur un des ComboBox se trouvant sur ton Form en
fonction d'une variable qui, ajoutée à 'ComboBox', donnerait le nom du
ComboBox sur lequel tu voudrais agir ?



Par exemple :



Variable := 2 et l'évènement OnClick serait envoyé à ComboBox2 ?



Ca serait vraiment trop simple, s'il s'agissait d'un Bouton au lieu d'un Combo, ça donnerait :



procedure TForm1.ClicOnBtn(Index: Byte);

var i: Integer;

begin

for i := 0 to ComponentCount -1 do

if Components[i] is TButton then

if (Components[i] as TButton).Name = 'Button' + IntToStr(Index) then

(Components[i] as TButton).Click;

end;




Qui fait que si ton instruction est:

ClicOnBtn(3);

l'évènement OnClick sera déclenché sur Button3.



Hélas, l'évènement "ComboBox1.Click" n'existe pas.

Tu ne peux déclencher l'évènement OnClick que par l'instruction :

Button1Click();

ce qui semble compliquer le problème, hein ? Hé hé...



Voici ma solution, en espérant qu'il n'y a pas 50 ComboBox sur ta fiche, sinon tu vas transpirer sur le clavier, lol :



procedure TForm1.ClicOnComboBox(Index: Byte);

var i: Integer;

begin

for i := 0 to ComponentCount -1 do

if Components[i] is TComboBox then

if (Components[i] as TComboBox).Name = 'ComboBox' + IntToStr(Index) then

//(Components[i] as TComboBox).Click; // trop beau !

case Index of

1: ComboBox1Click(nil);

2: ComboBox2Click(nil);

3: ComboBox3Click(nil);

// etc, suivant le nombre de ComboBox...

end;

end;




Donc, si tu veux déclencher l'évènement OnClick sur le ComboBox3, par exemple, ça donne :

ClicOnComboBox(3);



Si ça te convient, n'oublie pas de cliquer sur Réponse Acceptée !



C'est pas le code qui m'a posé problème, c'est le travail de saisie, lol...



Bonne prog'
3
azertyloris Messages postés 19 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 31 décembre 2005
17 févr. 2005 à 20:46
Je vien d'essayer

(Form1.lastlien1 as TObject).Click ;

ou

('Form1.'+lastlien1 as TObject).Click ;

et quelque autres trucs mais en vain :'(

pouvez vous m'aider svp ?

meric beaucoup
0
azertyloris Messages postés 19 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 31 décembre 2005
18 févr. 2005 à 09:22
merci,

c'est presque ca sauf que ma variable ne contient pas un numero mais le nom ! je vais essayer d'adapter le code

( case Index of

1: ComboBox1Click(nil);

2: ComboBox2Click(nil);

3: ComboBox3Click(nil);

// etc, suivant le nombre de ComboBox...

end;)

mais ca risque etre long ! car je voualsi justement ce code pour simplifier la vie
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
18 févr. 2005 à 13:04
J'ai inutil
ement compliqué, je suis parti dans un délire, quoi, désolé...


En fait, ma procedure, une fois simplifiée, devient :



procedure TForm1.ClicOnComboBox(Index: Byte);

var i: Integer;

begin

case Index of

1: ComboBox1Click(nil);

2: ComboBox2Click(nil);

3: ComboBox3Click(nil);

// etc, suivant le nombre de ComboBox...

end;

end;



Ce qui ne fait pas faire un pas de géant à la programmation en Delphi !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
azertyloris Messages postés 19 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 31 décembre 2005
18 févr. 2005 à 20:29
effectivement, j'avais vu que le debut etait inutile sauf que dans mon
cas cela ne marche pas car la variable (que tu appelle index) ne
contient pas un numero mais le nom (dans mon cas) et case ... of ne
marche qu'avec des nombre entier il me semble
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
18 févr. 2005 à 22:03
Exact, azertyloris, pour le case...of, même s'il y a des astuces pour
le faire fonctionner avec des strings, il y a une source sur le site
par Caribensila, je crois.



Si tu veux, essaye de formuler le plus exactement possible ce que tu veux faire, j'essaierai de t'aider.



Essaye de m'expliquer par exemple comment s'appelle ta variable, le nom
du memo que tu veux atteindre avec cette variable, combien y a-t'il de
memos sur ta fiche...



Et peut-être devrais tu poster une nouvelle question (et de manière
plus précise), tu aurais plus de chances sans doute d'avoir une
réponse, puisque le problème est marqué ici comme résolu...



Bonne prog'
0