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 :

Procédure onclick sur sous-menus dynamique


Sujet :

Langage Delphi

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 78
    Points : 54
    Points
    54
    Par défaut Procédure onclick sur sous-menus dynamique
    Bonjour à tous,
    J'ai crée dynamiquement des sous-menus par les quelques lignes qui suivent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i := 0 to base.RecnoCount-1 do
      begin
       xrubrique := tmenuitem.Create(mainmenu1);
       xrubrique.Caption := 'essai'+ inttostr(i);
       mainmenu1.items[0].Add(xrubrique);
      end;
    Je ne sais pas à l'avance combien j'aurai d'enregistrements dans la base et donc de sous-menus, comment puis-je gérer la procédure OnClick de chaque sous-menu créé ?

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Il te faut redéfinir la propriété OnClick pour chaque élément ...
    Dans la partie public, tu définis une procédure qui sera en fait le traitement à effectuer lors du clic sur un Item du MainMenu :

    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
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Menus;
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        MainMenu1: TMainMenu;
        gfdgd1: TMenuItem;
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
        procedure OnClickItem(Sender: TObject); // Déclaration du OnClick ici (peut importe le nom de la procédure... )
      end;
    Une fois que tu as déclaré la procédure, on va l'implémenter ...
    Ici, on ne va se contenter que d'afficher le Caption de l'Item cliqué
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.OnClickItem(Sender: TObject);
    begin
      ShowMessage(TMenuItem(Sender).Caption);
    end;
    Et enfin, il nous faut lier la "procédure" (c'est plutôt un événement) à l'item lors de sa création :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i:integer;
      xrubrique:TMenuItem;
    begin
    for i := 0 to base.RecnoCount-1 do
      begin
       xrubrique := TMenuItem.Create(MainMenu1);
       xrubrique.Caption := 'essai'+ IntToStr(i);
       xrubrique.OnClick:=OnClickItem; // C'est ici que ça se passe
       MainMenu1.Items[0].Add(xrubrique);
      end;
    end;
    Voila ... il ne reste plus qu'à modifier à ta guise ce que doit faire tel ou tel item lorsque l'on clique dessus (moi je n'ai fait qu'un ShowMessage pour tous)
    En espérant avoir put t'aider
    A+

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 78
    Points : 54
    Points
    54
    Par défaut J'ai encore besoin d'aide
    Tout d'abord merci pour ta réponse.
    J'ai pris exactement l'exemple que tu m'as donné
    à savoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private
        { Déclarations privées }
      public
        { Déclarations publiques }
        procedure OnClickItem(Sender: TObject);
      end;
     
    puis j'ai placé ma procédure dans la partie 'implémentation'
     
    procedure OnClickItem(Sender: TObject);
    begin
     ShowMessage(TMenuItem(Sender).Caption);
    end;
    à la compilation j'obtiens ce message d'erreur

    [Erreur] U_Principale.pas(30): Déclaration forward ou external non satisfaite : 'TF_Principale.OnClickItem'
    merci d'avance

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 78
    Points : 54
    Points
    54
    Par défaut Pardon pour le dérangement
    En fait je n'ai pas tout à fait recopier ton exemple, idiot que je suis.
    Il marche trés bien et va certainement résoudre mon problème.
    Merci pour cette réponse efficace et peut-être à bientôt sur le forum.
    Claude

Discussions similaires

  1. [PHP 5.4] Création menu et sous menus dynamique
    Par Mellowh dans le forum Langage
    Réponses: 0
    Dernier message: 16/04/2015, 10h53
  2. Remplissage des sous-menus dynamiquement
    Par guestCam dans le forum WebDev
    Réponses: 0
    Dernier message: 28/10/2009, 15h23
  3. affectation de onclick sur TImage créé dynamiquement
    Par Darkyl dans le forum Composants VCL
    Réponses: 17
    Dernier message: 12/09/2009, 18h53
  4. OnClick sur un Panel créé dynamiquement.
    Par tazthedev dans le forum Delphi
    Réponses: 8
    Dernier message: 21/10/2006, 01h07

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