Groupe de bouttons ?

Résolu
cs_akrame Messages postés 18 Date d'inscription dimanche 9 mai 2004 Statut Membre Dernière intervention 9 janvier 2006 - 6 janv. 2006 à 18:00
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

8 réponses

jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
6 janv. 2006 à 19:06
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
3
sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 29 mars 2013 5
6 janv. 2006 à 20:40
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
3
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
7 janv. 2006 à 03:54
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
3
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
7 janv. 2006 à 09:06
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
3

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

Posez votre question
neodelphi Messages postés 442 Date d'inscription jeudi 4 avril 2002 Statut Membre Dernière intervention 11 août 2008
7 janv. 2006 à 07:02
Je suis d'accord avec Cirec les tags c'est plus pratique et plus propre je pense...

neodelphi
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
7 janv. 2006 à 08:23
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
0
cs_akrame Messages postés 18 Date d'inscription dimanche 9 mai 2004 Statut Membre Dernière intervention 9 janvier 2006
7 janv. 2006 à 12:18
Woah ya tellement de solutions ! :) Merci tout le monde :) merci infiniment .
Akrame ------
0
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
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
0
Rejoignez-nous