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

Composants VCL Delphi Discussion :

Créer deux barres de menu dans une application


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 82
    Points : 40
    Points
    40
    Par défaut Créer deux barres de menu dans une application
    Bonjour
    Je cherche à créer deux mainmenu (mainmenu1 et mainmenu2) avec chacun leur propres menuItem.
    C'est simplement pour pouvoir manipuler les deux mainmenu de façon différente (ownerdraw à false pour l'un et ownerdraw à true pour l'autre).
    Ca n'offre pas de difficultés pour les créer avec Delphi7.
    Le seul gros problème c'est que je ne vois que la barre de mainmenu1 et je ne vois pas la barre de mainmenu2
    Je m'imaginais (peut-être à tort) que les deux barres de menus allaient apparaitre l'une en dessous de l'autre ou l'une à côté de l'autre mais pas du tout.
    Pourtant tous les items du mainmenu2 ont la propriété visible à true.
    Peut-être qu'il n'est pas possible d'avoir deux mainmenu différents affichés en même temps avec Delphi ?
    A moins que l'on puisse mettre la propriété OwnerDraw à true pour un seul menuitem du mainmenu, ce qui simplifierait mon problème mais ça ne semble pas possible. Et mettre OwnerDraw à true pour un mainmenu fait perdre toutes les marques de check !!! Pas facile à manipuler ces menus !

  2. #2
    Membre averti Avatar de pascalCH
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Juillet 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 187
    Points : 369
    Points
    369
    Par défaut
    bonjour,

    l'affichage des deux en même temps ne sera pas possible, par contre, swapper les deux menus reste simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.Menu11Click(Sender: TObject);
    begin
      Self.Menu := MainMenu2;
    end;
     
    procedure TForm1.Menu21Click(Sender: TObject);
    begin
      Self.Menu := MainMenu1;
    end;
    La nature fait des choses extraordinaires, observons la et restons humble, on ne nous demande pas de refaire le monde mais juste de reproduire virtuellement des choses existantes ....

    et n'oubliez pas si vous aimez et quand vous avez la réponse

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 82
    Points : 40
    Points
    40
    Par défaut Re : Créer deux mainmenu dans une application
    Merci pour la réponse, malheureusement celà ne répond pas tout à fait à mon problème.
    J'aurais bien aimé voir mes deux barres de menus en même temps sur la fiche.
    J'ai cru comprendre qu'on pouvait par des paramêtres système mettre la propriété OwnerDrawn à true pour un seul menuItem d'un mainmenu.
    Quelqu'un a t-il déjà vu ça ?

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Tu ne peux avoir qu'un seul MainMenu car il faut l'associer à la fenêtre

    Tu peux mettre à la place une TToolBar avec des boutons comme on le voit dans Delphi, Notepad++, les anciens Excel, IE11 ...
    en fait comme dans toutes applications qui a besoin d'une seconde barre de menu !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    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

    tu as la methode OnDrawItem(Sender: TObject; ACanvas: TCanvas;
    ARect: TRect; Selected: Boolean)

    que tu peut utiliser pour modifier ou pas ton item de menu
    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

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 82
    Points : 40
    Points
    40
    Par défaut Re : Créer deux mainmenu dans une application
    Bsr
    La méthode OndrawItem permet effectivement de modifier l'aspect d'un item du mainmenu à condition de mettre la propriété Ownerdraw du mainmenu à true (on ne peut pas le faire uniquement pour un item particulier avec Delphi comme cela est possible dans VB ou C++) et le fait de mettre Ownerdraw à true dans le mainmenu fait perdre l'affichage de toutes les marques de checked dans tous les sous-menus. Après ça devient le bazar car on ne sait plus à l'affichage si le sous-menu est checké ou pas (alors que la proriété Checked est toujours active). Ou alors il faut gérer soi même l'affichage des marques de checked (point ou v) et là ça devient le binz, surtout quand la barre de menus contient une cinquantaine de sous-menus liés à différents items du menu principal.

  7. #7
    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

    il est vrai que d'ajouter un code du genre dans le ondrawitem est compliqué

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      if (Sender as TMenuItem).Checked then
         DrawFrameControl(Canvas.Handle, Rect, DFC_BUTTON, DFCS_BUTTONCHECK or DFCS_CHECKED)
      else
         DrawFrameControl(Canvas.Handle, Rect, DFC_BUTTON, DFCS_BUTTONCHECK)
    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

  8. #8
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 82
    Points : 40
    Points
    40
    Par défaut Re : Créer deux mainmenu dans une application
    Hum ... Ca vient mettre une case à cocher en plein milieu du caption.
    N'y aurait-il pas moyen retrouver le caption d'origine avec ou sans le signe de check (V ou point) devant le caption et pas cette case à cocher pas vraiment top !

Discussions similaires

  1. Barre d'icone dans une application
    Par Seb2000 dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 23/11/2010, 17h58
  2. Réponses: 5
    Dernier message: 03/08/2010, 10h53
  3. Tree : Menu dans une application
    Par BenHoit dans le forum Flex
    Réponses: 7
    Dernier message: 09/10/2009, 15h45
  4. Réponses: 1
    Dernier message: 25/11/2008, 11h03
  5. Ajouter un menu dans une application MFC AppWizard
    Par EmbeddedMan dans le forum MFC
    Réponses: 3
    Dernier message: 08/02/2007, 16h19

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