IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

TMethod enrichie...


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 169
    Points : 100
    Points
    100
    Par défaut TMethod enrichie...
    Bonjour,

    Je voudrais affecter dynamiquement un evenement avec variable à chaque item de menu.

    par exemple
    menu1
    ---ssmenu1 -> lance "delphi.exe"
    ---ssmenu2 > lance "explorer.exe c:\temp"
    etc...


    j'ai utilisé la methode: (je passe les déclarations des types, published...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    (avec Address: TMethod;)
     
    {pour chaque menu item créé}
    Address.Code := MethodAddress('MenuItemClick');
    Address.Data := Self;
    NouveauMenuItem.OnClick := TNotifyEvent(Address);
     
    Ma procedure "cible" étant MenuItemClick(Sender:TObject)
    Si cette methode declenche bien MenuItemClick pour chaque MenuUtem, elle ne permet pas de passer l'argument de type string ("delphi.exe";"explorer.exe c:\temp")

    MethodAdress semble ne pas accepter les arguments.

    Avez vous la clé ?

    Merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut
    pourquoi ne pas utiliser tout simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NouveauMenuItem.OnClick := MenuItemClick;
    avec dans MenuItemClick un test sur Sender.Name par exemple, pour savoir quel traitement effectuer..
    j ai peut etre pas bien compris le probleme...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 169
    Points : 100
    Points
    100
    Par défaut
    Citation Envoyé par copeau31
    j ai peut etre pas bien compris le probleme...
    oui en effet
    l'argument est variable , donc non "stocké" dans le MenuItem, on ne peut donc le récuperer par le Sender (ou alors il y a une methode que j'ignore)
    Je précise que cet argument est un texte et donc le tag est inutilisable


    Merci quand même

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut
    mais est ce que tu as un argument correspondant a un menu ?
    ou bien
    a un menu peut correspondre plusieurs arguments differents ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 169
    Points : 100
    Points
    100
    Par défaut
    Pour être précis, ce que je fais, c'est transformer un fichier XML qui a pour éléments Texte et Raccouci

    Je convertis ce XML en menu, donc je retrouve la structure du XML en menu et j'affecte Texte au menuitem.caption.
    Ce que j'aimerais en plus, c'est affecter à ce menuitem une action ayant pour argument Raccourci

    Donc: menuitem1 <--> action(arg1)
    menuitem2 <--> action(arg2) etc....

    Cette action commune serait du genre:

    ActionAuClickItem(Sender:TObject;Raccourci:string);
    executer(Raccourci)

    A+

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut
    ok
    une idee en vrac alors

    dans ton module, tu definis un objet perso pour rajouter le champ action a un objet menu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    type
      TMenuItemPerso = class(TMenuItem)
      private
        Raccourci: string;
      end;
    au lieu de creer des TMenuItem pour faire ton menu, tu crees des TMenuItemPerso, et tu renseignes le champ raccourci en lisant ton fichier.

    Apres quand tu cliques dessus, tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MenuItemClick(Sender:TComp);
    beg
      executer((Sender as TMenuItemPerso).raccourci);
    end
    enfin qqch comme ca

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 169
    Points : 100
    Points
    100
    Par défaut
    j'essaie ça.

    merci

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 169
    Points : 100
    Points
    100
    Par défaut
    C'est PAR-FAIT !

    Effectivement je n'ai pas pensé que l'on pouvait deriver la classe TMenuItem.

    Bon....j'apprends...

    Merci encore.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RAVE] Comment visualiser un texte enrichi ?
    Par ARDILLER dans le forum Composants VCL
    Réponses: 4
    Dernier message: 14/03/2006, 15h54
  2. [STRUTS] Recuperer valeurs d'une url enrichi ?
    Par Ev3rGlide dans le forum Struts 1
    Réponses: 3
    Dernier message: 07/04/2005, 11h39
  3. [VB.NET] Comment envoyer du texte enrichi(couleurs,style...)
    Par fdiedler dans le forum Windows Forms
    Réponses: 14
    Dernier message: 17/03/2005, 14h49
  4. Editeur de texte enrichi
    Par Bidouille dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/11/2004, 02h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo