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 :

Création d'un menu (de langue) dynamiquement


Sujet :

Langage Delphi

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 16
    Points : 7
    Points
    7
    Par défaut Création d'un menu (de langue) dynamiquement
    bonjour,

    j'éprouve quelques difficultés lors de la création de nouveaux éléments de menu, avec NewItem. Lorsque je les déclare, l'évènement associé se déclenche à la création, puis ne se déclenche plus lors d'un clic souris.
    Voici le code de création des sous menus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure TForm1.FormCreate(Sender:TObject);
    var i: integer;
    begin
     for i := 0 to LangManager.LanguageCount-1 do
    langue1.Add(NewItem(LangManager.LanguageNames[i],1,false,true,LangChange(i),1,'langue'+inttostr(2+i)));
    end;
    et la fonction qui doit se déclencher lors d'un clic:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function LangChange(iIndex: integer):TnotifyEvent;
    begin
    LangManager.LanguageID:= LangManager.LanguageIDs[iIndex];
    end;
    Je dois surement rater quelque chose, dans mon code, mais là je sèche. Si quelqu'un peut m'éclairer, je suis preneur... En vous remerciant d'avance!

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut


    ta fonction doit renvoyer un tnotifyevent la elle affect une valeur
    mais ne renvoi rien

    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    D'accord, mais même si j'ai compris, je ne vois pas trop quelle piste explorer:
    • changer la déclaration de la fonction, mais du coup, cela bloque lors de la compilation, dans le NewItem
    • Changer la fonction elle même, passer par une procedure, mais du coup, je ne vois pas comment transmettre une valeur à cette procédure


    je patauge, un peu, là...

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function LangChange(iIndex: integer):TnotifyEvent;
    begin
    LangManager.LanguageID:= LangManager.LanguageIDs[iIndex];
    end;
    ta fonction est bien defini mais elle ne renvoi rien ton TnotifyEvent doit etre
    a nil

    si j'ai pige ton truc tu devrais faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function LangChange(iIndex: integer):TnotifyEvent;
    begin
       result := LangManager.LanguageIDs[iIndex].notifyevent ;
    end;
    si tu as construit ton langmanager

    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  5. #5
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    merci de tes réponses!
    mais...
    Si je suis ce que tu me dis, j'obtiens une erreur: 'word' ne contient pas un membre nommé 'notifyevent'...?

    >Pour LangManager, il appartient au package DKLang, je ne l'ai pas construit, je l'appelle pour changer la langue de l'application.

  6. #6
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut


    Bon, je n’avais pas bien compris ce que tu voulais faire
    Voila comment je procéderai

    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
     
    TMyForm = class(TForm)
      Langue1: TMenuItem;
     
    ...
    Protected 
      Procedure OnMyClickMnu(Sender : Tobject);
      Procedure GenereMnuLangue;
    Private 
    ...
    end;
     
    Procedure TMyForm.GenereMnuLangue;
    var
     Item : TMenuItem;
     
    begin
      Langue1.Items.Clear;
      for i := 0 to LangManager.LanguageCount-1 do 
      begin  
        Item := TMenuItem.Create(Langue1);
        Item.Caption := LangManager.LanguageNames[i];
        Item.Tag := i;
        Item.OnClick := OnMyClickMnu ;
        Langue1.Items.Add(Item);
    end;
     
     
    Procedure TMyForm.OnMyClickMnu(Sender : Tobject);
    begin
      LangManager.LanguageID:= LangManager.LanguageIDs[TMenuItem(Sender).Tag]; 
    end;
    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  7. #7
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Et ça marche! Merci beaucoup de ton aide!
    ( je rajouterai bien à charge de revanche, mais vu le boulot d'apprentissage qu'il me reste, je ne suis peut être pas prêt à pouvoir filer des coups de main... )

  8. #8
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    la premiere des chose serait de mettre resolu

    ensuite il n'y as pas de niveau pour aider quelqu'un

    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

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

Discussions similaires

  1. Création d'un menu de manière "dynamique"
    Par richard_sraing dans le forum Struts 1
    Réponses: 5
    Dernier message: 14/06/2013, 15h00
  2. Création d'un menu dynamique:
    Par koKoTis dans le forum Langage
    Réponses: 17
    Dernier message: 27/07/2012, 15h07
  3. Création d'un menu rempli dynamiquement
    Par cedekasme dans le forum Qt
    Réponses: 1
    Dernier message: 28/03/2010, 22h02
  4. Aide pour la création d'un menu dynamique
    Par manu11 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 11/11/2009, 23h30
  5. Création d'un menu contextuel dynamique.
    Par femfem dans le forum WinDev
    Réponses: 1
    Dernier message: 19/11/2007, 15h43

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