Utilisation de Sender [Résolu]

cs_cocoriri 6 Messages postés vendredi 21 février 2003Date d'inscription 4 avril 2005 Dernière intervention - 7 déc. 2004 à 10:54 - Dernière réponse : cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention
- 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
japee 1799 Messages postés vendredi 27 décembre 2002Date d'inscription 19 juillet 2018 Dernière intervention - 7 déc. 2004 à 11:34
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de japee
Meilleure réponse
japee 1799 Messages postés vendredi 27 décembre 2002Date d'inscription 19 juillet 2018 Dernière intervention - 7 déc. 2004 à 11:43
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de japee
JulioDelphi 2354 Messages postés dimanche 5 octobre 2003Date d'inscription 18 novembre 2010 Dernière intervention - 7 déc. 2004 à 11:48
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
cs_cocoriri 6 Messages postés vendredi 21 février 2003Date d'inscription 4 avril 2005 Dernière intervention - 7 déc. 2004 à 12:39
0
Merci
cocoriri
Merci pour toutes ces infos c'est ok
Commenter la réponse de cs_cocoriri
japee 1799 Messages postés vendredi 27 décembre 2002Date d'inscription 19 juillet 2018 Dernière intervention - 7 déc. 2004 à 16:52
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
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 7 déc. 2004 à 18:07
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.