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

Delphi Discussion :

On click sur Menu dynamique


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur indépendant
    Inscrit en
    Mai 2002
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur indépendant

    Informations forums :
    Inscription : Mai 2002
    Messages : 231
    Par défaut On click sur Menu dynamique
    Bonjour,

    J'ai crée un programme qui utilise un fichier ini pour constituer un menu dynamique :
    A cette constitution de menu , je lui intégre l'evenement Onclick qui l'appel à la procédure appelmenu.

    Toutes mes options vont appeler appelmenu , je voudrais pouvoir récupérer l'option du menu qui a fait l'appel pour faire un traitement en fonction de l'option d'appel
    exemple menu1 doit ouvrir un fichier
    menu2 doit enregistrer le fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    procedure TForm_Principale.AppelMenu(Sender: TObject);
    begin
     // appel de l'option
      showmessage('test du menu xxxx');
    // si menu1 alors faire ouvrir fichier 
    // si menu2 alors faire enregistrer fichier 
    end;
     
    procedure TForm_Principale.InsertMenu();
    var
     valeur_menu : string;
     indice  : integer;
      New_Item : TMenuItem;
     
    begin
       chemin:=ExtractFilePath(ParamStr(0));
      // recherche des informations dans fichier ini
       file_ini := TIniFile.Create(chemin + 'menu.Ini');
       // récupération des menus
       indice:=1;
       while valeur_menu <> 'Fin' do
         begin
          valeur_menu:=file_ini.ReadString('ModuleA', inttostr(indice) ,'Fin' );
          if valeur_menu <> 'Fin' then
           begin
           // création optio ndu menu dans ModuleA
             New_Item := TMenuItem.Create(Self);
             New_Item.Caption := valeur_menu;
             ModuleA.Add(New_Item);
             // création Onclick
             New_Item.OnClick:= AppelMenu;
           end;
          inc(indice);
        end;
       // libération mémoire
       File_ini.free;
    end;
    Merci pour vos réponses

    Philippe

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 930
    Billets dans le blog
    6
    Par défaut
    affecte à la création puis utilise le tag de l'item cliqué dans le paramètre sender de la procédure AppelMenu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if Sender is TMenuItem then
     case TMenuItem(Sender).Tag of
      1: // ouvre le fichier
      2: // nouveau document
     end;
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur indépendant
    Inscrit en
    Mai 2002
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur indépendant

    Informations forums :
    Inscription : Mai 2002
    Messages : 231
    Par défaut TMenuItem(Sender).Tag
    Bonjour,

    Merci pour ta réponse , j'ai intégré le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure TForm_Principale.AppelMenu(Sender: TObject);
    begin
    // appel de l'option
      if Sender is TMenuItem then
     case TMenuItem(Sender).Tag of
      1: showmessage('menu1');
      2: showmessage('menu2');
     end;
    end;
    Je fais un appel de ma procédure à partir du menu 1 ou 2

    Par contre la valeur de tag est toujours de 0 ce qui ne me permet pas de gérer le menu appelant.

    Je cherche mais merci pour vos réponses

    Philippe

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 184
    Par défaut
    Dans ta boucle de création des menuitems t'as oublié ceci
    New_Item.tag:=indice;

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur indépendant
    Inscrit en
    Mai 2002
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur indépendant

    Informations forums :
    Inscription : Mai 2002
    Messages : 231
    Par défaut Solution avec affectation du tag
    Bonjour,

    Effectivement cela fonctionne correctement maintenant , je ne connaissais pas l'usage du tag , je pensais qu'il récupérais les données via le menu.

    Merci pour vos solutions

    Philippe

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/09/2007, 17h06
  2. Réponses: 2
    Dernier message: 31/05/2007, 14h59
  3. Comment intégrer des onglets, sur un menu dynamique Javascript
    Par kervano dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 04/04/2007, 13h14
  4. Réponses: 12
    Dernier message: 11/10/2006, 22h43
  5. Menu dynamique : <LI> décalées sur IE
    Par speedev dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 19/09/2006, 17h08

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