Groupe de bouttons ? [Résolu]

Messages postés
18
Date d'inscription
dimanche 9 mai 2004
Statut
Membre
Dernière intervention
9 janvier 2006
- - Dernière réponse : neodelphi
Messages postés
442
Date d'inscription
jeudi 4 avril 2002
Statut
Membre
Dernière intervention
11 août 2008
- 8 janv. 2006 à 11:19
Bonjour je voudrai savoir comment faire pour attribuer 1 seul événement a plusieurs boutton .
par exemple , pour une calculatrice , je mé 10 bouton chacun a sur son caption un numéro entre 0 et 9 . A chaque clique sur un de ces bouttons , un seul et meme événement. ( l'affectation du numéro correspondant au bouton à une variable integer ) .


voila pour faire plus claire :


procedure TfrmMain.ButtonXClick(Sender: TObject);
begin
variable : = StrToInt(boutonx.caption)
end

il est possible de faire ça en VB , en créant des groupes de boutons , ( c comme des tableaux ) ; chaque bouton a un indice de 0 à n , le code sera donc :
variable := StrToInt(mongroupe[i].caption) , mongroupe[i] représentant le bouton clické .

Akrame
Afficher la suite 

8 réponses

Meilleure réponse
Messages postés
1649
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
7
3
Merci
salut,

tu peux utilisier une groupebox:

Begin

With GroupBox1 Do

For I := 0 To ControlCount-1 Do // avec tous les controles de GroupBox1 fait

If Controls[I] is TButton Then // si Controls[I] est un TButton alors

begin

//tu mets ton traitement

end;

end;



@+

jlen

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 223 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jlen100
Messages postés
207
Date d'inscription
mercredi 5 mars 2003
Statut
Membre
Dernière intervention
29 mars 2013
5
3
Merci
La méthode classique est de reprendre le paramètre sender et de le transtyper ex :


(cet événement sera le même i e tous les gestionnaires d'événements de tes boutons pointeront dessus).


procedure Button1Click (sender :TObject);
begin
variable :=TButton(sender).caption;
end;

Sender est l'"envoyeur" du message relatif à l'événement, reste à le transtyper en le type que l'on suppose qu'il est.

SISI231

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 223 internautes nous ont dit merci ce mois-ci

Commenter la réponse de sisi231
Messages postés
3809
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 septembre 2019
33
3
Merci
tu peux aussi utiliser les tags
pour 10 boutons de 0 à 9 dans l'inspecteur d'objets tu affectes 0 à Button0.Tag 1 à Button1.Tag etc etc
puis dans la procedure

Var IntValeur : Integer;
procedure Button1Click (sender :TObject);
begin
If (Sender is TButton) Then
IntValeur = TButton( sender ).Tag;
end;



Var IntValeur : Integer;
StrValeur : String;
Procedure Button1Click (Sender :TObject);
Begin
If (Sender is TButton) Then
With TButton(Sender) Do
Begin
IntValeur = Tag;
StrValeur = Caption;
End;
End;



@+
Cirec

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 223 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Cirec
Messages postés
1649
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
7
3
Merci
on peut même aller plus loin:

on utilse le tag pour affecter le type de touche pressée

si l'on met une action caculette qui sera appelée par chaque touche de la calculette on aura:

procedure TForm1.calculetteExecute(Sender: TObject);

begin

With clavier(Sender) Do

Begin
case tag of
0: //ajouter le chiffre à la saisie par exemple
saisie.text:=saisie.caption+clavier.caption;// l'utilisation d'un TEdit permet de saisir directement dans la zone on peut y rajouter un filtre de saisie

1://multiplication;
2://division;
3://addition
4://soustraction

.........// et ainsi de suite pour les atures opérations (sin,...,mise en mémoire etc...)

end;

End;

end;

@+

jlen

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 223 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jlen100
Messages postés
442
Date d'inscription
jeudi 4 avril 2002
Statut
Membre
Dernière intervention
11 août 2008
0
Merci
Je suis d'accord avec Cirec les tags c'est plus pratique et plus propre je pense...

neodelphi
Commenter la réponse de neodelphi
Messages postés
1649
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
7
0
Merci
dans le même genre comme les touches d'un clavier numérique n'ont
généralement comme caption que les chiffres '0'..'9' tu
peux aussi utiliser directement le caption en regroupant tous les
évènements soit dans un seul onclick (du bouton '0' par exemple) soit
ne ajoutant une actionlist

Var IntValeur : Integer;

Procedure clavierClick (Sender :TObject);

Begin
With clavier(Sender) Do

Begin

IntValeur = strtoint( Caption);

End;

End;

pour ce genre de programme il doit y avoir autan de solutions que de programmeurs!!

@+

jlen
Commenter la réponse de jlen100
Messages postés
18
Date d'inscription
dimanche 9 mai 2004
Statut
Membre
Dernière intervention
9 janvier 2006
0
Merci
Woah ya tellement de solutions ! :) Merci tout le monde :) merci infiniment .
Akrame ------
Commenter la réponse de cs_akrame
Messages postés
442
Date d'inscription
jeudi 4 avril 2002
Statut
Membre
Dernière intervention
11 août 2008
0
Merci
Essaye la solution de jlen, elle à l'avantage de pouvoir implémenter
une extension à ta calculatrice à l'avenir: la programmer. En effet si
par la suite tu as besoin d'exécuter une séquence de calcul depuis un
fichier, tu n'as juste qu'a faire une boucle et utiliser le case.

neodelphi
Commenter la réponse de neodelphi