Cliquer sur un bouton dont le nom est dans un variable

[Résolu]
Signaler
Messages postés
19
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
31 décembre 2005
-
Messages postés
1725
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
11 avril 2021
-
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

Messages postés
1725
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
11 avril 2021
8
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'
Messages postés
19
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
31 décembre 2005

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
Messages postés
19
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
31 décembre 2005

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
Messages postés
1725
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
11 avril 2021
8
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 !
Messages postés
19
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
31 décembre 2005

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
Messages postés
1725
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
11 avril 2021
8
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'