Utilisation de Sender [Résolu]

Messages postés
6
Date d'inscription
vendredi 21 février 2003
Dernière intervention
4 avril 2005
- - Dernière réponse : cs_Delphiprog
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Dernière intervention
9 janvier 2013
- 7 déc. 2004 à 18:07
cocoriri
j'ai des menuitem qui renvoient sur une Form.L'evenement dans cette Form depend de quel menuitem est clické.
Normalement ceci est possible avec 'Sender'.Mais le parametre n'est pas passe avec la methode FormX.show(n'acceptepas de parametre)
Le code:
procedure optiondemenu1click(Sender:tobject);
begin
FormX.show;
end;

...... ' If sender = optiondemenu1click '( ne fonctionne pas)

Par contre tout est ok si on remplace formX.show par FormX.Formshow .
Mais l'aide DELPHI precise qu'on ne doit pas utiliser'FORMSHOW'!
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
1799
Date d'inscription
vendredi 27 décembre 2002
Dernière intervention
19 juillet 2018
3
Merci
Ca va mieux marcher comme ça :

 procedure optiondemenu1Click(Sender: TObject);
  if (Sender as TMenuItem).Name = 'optiondemenu1' then
  // l'instruction ici...
  FormX.show;


Bonne prog', faut pas mollir :-p

N'oubliez pas de valider "Réponse acceptée" si ça vous convient, de toute manière vous ne pouvez pas valider autre chose ! :big)

Merci japee 3

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

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de japee
Messages postés
1799
Date d'inscription
vendredi 27 décembre 2002
Dernière intervention
19 juillet 2018
3
Merci
Pour être plus exact, et si ton Form s'appelle 'MainForm' :

 procedure MainForm.optiondemenu1Click(Sender: TObject);
begin
  if (Sender as TMenuItem).Name = 'optiondemenu1' then
  // l'instruction ici...
  FormX.show;
end;


Et pourquoi ne pas utiliser les tags, surtout s'il y a beaucoup d'options de menu :

 procedure MainForm.optiondemenu1Click(Sender: TObject);
begin
  case (Sender as TMenuItem).Tag of
    0: // instruction A
    1: // instruction B
    2: // instruction C
  end;  
  FormX.show;
end;


Bonne prog', faut pas mollir :-p

N'oubliez pas de valider "Réponse acceptée" si ça vous convient, de toute manière vous ne pouvez pas valider autre chose ! :big)

Merci japee 3

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

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de japee
Messages postés
2354
Date d'inscription
dimanche 5 octobre 2003
Dernière intervention
18 novembre 2010
0
Merci
hello,

moi je fais : TMenuItem(Sender).Name
c idem ke toi japee ?

N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! ;)

-------------------------------------------
http://diabloporc.free.fr : mon site refait ! Delphi power !
Commenter la réponse de JulioDelphi
Messages postés
6
Date d'inscription
vendredi 21 février 2003
Dernière intervention
4 avril 2005
0
Merci
cocoriri
Merci pour toutes ces infos c'est ok
Commenter la réponse de cs_cocoriri
Messages postés
1799
Date d'inscription
vendredi 27 décembre 2002
Dernière intervention
19 juillet 2018
0
Merci
Salut, JulioDelphi

Les deux sont ok, j'utilise les deux syntaxes indifféremment. :approve)

N'oublie pas de valider nos réponses, puisqu'elles te conviennent, cocoriri !

Bonne prog', faut pas mollir :-p

N'oubliez pas de valider "Réponse acceptée" si ça vous convient, de toute manière vous ne pouvez pas valider autre chose ! :big)
Commenter la réponse de japee
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Dernière intervention
9 janvier 2013
0
Merci
Pourquoi passer par une comparaison de chaines en utilisant la propriété Name des TMenuItem ?
Directement :
if Sender = optiondemenu1 then ...


La proposition de Japee qui utilise la propriété Tag est surement la plus efficace pour gérer une telle situation. En plus, elle a le mérite de clarifier grandement le code.

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
May Delphi be with you
Commenter la réponse de cs_Delphiprog

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.