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

C++Builder Discussion :

Barre Menu blanche


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 20
    Points : 22
    Points
    22
    Par défaut Barre Menu blanche
    Bonjour à tous,

    La barre de menu insérée dans une fiche C++ builder (6) est blanche or celle-ci devrait apparaître classiquement sur fond gris. Ceci se produit lorsque le style du bureau est "XP". Le problème n'apparait pas lorsque le style du bureau est "classique".
    Il en est de même pour les sous-menu qui apparaissent sur fond blanc et non sur fond gris.

    Avez vous des idées pour résoudre ce problème.

    Merci

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 190
    Points : 179
    Points
    179
    Par défaut
    Bonjour,

    Le thème Xp n'est pas complétement implémentée dans la vcl de Builder 6.

    Pour contourner le problème du TMainMenu, tu peux créer un composant héritant de TMainMenu, avec la propriété OwnerDraw à TRUE, et une surcharge de la méthode DrawMainMenuItem.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class MyMainMenu : public TMainMenu{
      public :
      __fatscall MyMainMenu(TComponent *Owner);
     
      private:
      void __fastcall DrawMainMenuItem(TObject* Sender, TCanvas* ACanvas,
                                       const TRect &ARect, TOwnerDrawState State);
     
    };
    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
    39
     
    __fatscall MyMainMenu::MyMainMenu(TComponent *Owner):TMainMenu(Owner){
      TMenu::OwnerDraw = TRUE;
    }
     
     
    void __fastcall MyMainMenu::DrawMainMenuItem(TObject* Sender, TCanvas* ACanvas,
                                          const TRect &ARect, TOwnerDrawState State){
     
      TMenuItem *temp = dynamic_cast<TMenuItem *>(Sender);
     
      TRect TempRect;
      TempRect = ARect;
     
      if (State.Contains(odSelected) && !State.Contains(odDisabled)){
        DrawEdge(ACanvas->Handle, (tagRECT *)&ARect, BDR_SUNKENOUTER, BF_RECT);
        TempRect.Top += 2;
        TempRect.Left += 2;
        TempRect.Right -= 2;
        TempRect.Bottom -= 2;
        ACanvas->Font->Color  = clMenuText;
      }
      else if (State.Contains(odDisabled)){
        ACanvas->Font->Color = clGrayText;
      }
      else if (State.Contains(odHotLight)){
        DrawEdge(ACanvas->Handle, (tagRECT *)&ARect, BDR_RAISEDINNER, BF_RECT);
        TempRect.Top += 2;
        TempRect.Left += 2;
        TempRect.Right -= 2;
        TempRect.Bottom -= 2;
        ACanvas->Font->Color = clMenuText;
      }
                                              //clBtnFace et non clMenuBar car sinon
      ACanvas->Brush->Color  = clBtnFace;     //mauvaise couleur en thème xp
      ACanvas->FillRect(TempRect);
      DrawText(ACanvas->Handle, temp->Caption.c_str(), -1, (tagRECT *)&TempRect,DT_SINGLELINE | DT_VCENTER | DT_CENTER);
     
    }
    Cordialement,

    Benjamin

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 20
    Points : 22
    Points
    22
    Par défaut
    Grand merci pour ce travail.

    J'ai donc créé un nouveau composant dans la palette "supplément" avec le code que vous m'avez indiquer. Malheureusement ma barre de Menu reste blanche. Votre code est correct sinon le composant ne se serait pas créé ...

    Tanpis pour le thème Xp...

    Encore Merci
    Xavier

Discussions similaires

  1. Récupérer la barre menu sur BO C/S
    Par pendulaire dans le forum Administration-Migration
    Réponses: 3
    Dernier message: 31/12/2008, 14h14
  2. Barre Menu Personnelle
    Par benejepo dans le forum Access
    Réponses: 2
    Dernier message: 26/02/2007, 14h44
  3. eliminer les menus de la barre "menu bar" access
    Par mapmip dans le forum Access
    Réponses: 3
    Dernier message: 12/02/2007, 19h27
  4. Modifier barre menu avec CSS
    Par Nimajneb dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 09/06/2006, 17h47
  5. [word]barre Menu Perdu Dans Word
    Par WELCOMSMAIL dans le forum Word
    Réponses: 5
    Dernier message: 02/06/2006, 16h07

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