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

Lazarus Pascal Discussion :

Problème avec des TMenuItem


Sujet :

Lazarus Pascal

  1. #1
    Membre éclairé
    Problème avec des TMenuItem
    Bonjour à toutes et à tous,

    Je veux créer des menus du type "les fichiers les plus récents" avec la particularité suivante :

    Les menus que je crée sont des "sous menu" d'un "sous menu". L'architecure est la suivante :

    Fichiers --> Edition -> ... > Employés
    ------------------------------|__> Editer
    ------------------------------|__> Afficher
    -------------------------------------|__> Employe N°1
    -------------------------------------|__> Employe N°2
    -------------------------------------|__> Employe N°3

    Pour ce faire, je crée une procédure :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      Afficher.Clear;
      for i:= 0 to High(Employes) do
      begin
        MenuEmpl:= TMenuItem.Create(Afficher);
        MenuEmpl.Caption:= Employe[i].Nom; // que j'ai symbolisé plus haut par Employe N°x
        MenuEmpl.OnClick:= @ClickMenu;
        Afficher.Add(MenuEmpl);
      end;


    Les trois sous menu Employe N°x sont bien affichés.

    puis la procédure ClickMenu :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TFntrPrinc.ClickMenu(Sender: Tobject);
    var
      S, T: String;
    begin
      S:= TMenuItem(Sender).Caption;
      T:= Owner.Name;
    end;


    Quand je clique sur un des 3 menus "Employe N°x", je suis bien dirigé vers la procédure ClickMenu, mais les chaîne S et T sont vides alors que, si je fais un click droit sur "Sender" de la procédure "ClickMenu", je vois bien, sous le rubrique "Caption" le nom de l'employé choisi ; je ne sais pas pour le "Owner".

    Pourquoi, je n'arrive pas a retrouver le "Caption" ?

    Merci de votre aide.

    Pierre

  2. #2
    Membre éclairé
    Bon, j'ai un autre programmes dans lequel j'ai la même chose et je vois le "Caption" affecté à sa bonne valeur.

    Le problème est que dans ce programme, je regardais, en mode débogage, avec un point d'arrêt après la ligne qui récupérait le "Caption" et le curseur sur la variable concernée alors que dans mon nouveau programme, j'avais mis mon point d'arrêt sur le "end" de la fonction "ClickMenu".

    Je ne sais plus si c'est systématique, en tous cas, je ne me souvenais plus que si le point d'arrêt est sur le "end", l'info récupérée sous le curseur n'est plus valable.

    Voilà, voilà ...

    Cordialement.

    Pierre.