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

Lazarus Pascal Discussion :

Couleur de la barre de menu [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre actif
    Avatar de sematimo
    Profil pro
    Inscrit en
    Février 2009
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 287
    Points : 276
    Points
    276
    Par défaut Couleur de la barre de menu
    Bonjour à tous.

    J'ai une question : Peut-on changer la couleur de fond d'une barre de menu ?

  2. #2
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par sematimo Voir le message
    Bonjour à tous.

    J'ai une question : Peut-on changer la couleur de fond d'une barre de menu ?
    Salut oui c'est possible

    Nom : 2020-08-26_201439.jpg
Affichages : 708
Taille : 9,3 Ko


    Il faut mettre la propriété TMenu.OwnerDraw à True et assigner l'évènement OnDrawItem.
    C'est également la même chose avec un TPopUpMenu.

    Un petit exemple en prime, pour mieux comprendre

    A+

    Jérôme
    Fichiers attachés Fichiers attachés
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  3. #3
    Membre actif
    Avatar de sematimo
    Profil pro
    Inscrit en
    Février 2009
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 287
    Points : 276
    Points
    276
    Par défaut
    Bonjour

    Merci pour ton code, je pense que je vais l'adapter aux popup.

  4. #4
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par sematimo Voir le message
    Bonjour
    Mon menu normal:

    J'ai donc mis OwnerDraw à true et OnDrawItem à MainMenu1DrawItem.
    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.MainMenu1DrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState);
    var
      s: string;
    begin
      ACanvas.Brush.Color := clSkyBlue;
      ACanvas.Rectangle(ARect);
      s := (Sender as TMenuItem).Caption;
      ACanvas.TextOut(ARect.Left, ARect.Top, s);
    end;
    Et voici le résultat:

    Plutôt bizarre...
    Bonjour,

    si tu parles des bordures, c'est normal. car tu n'as pas définis Canvas.Pen.Color et Canvas.Brush.Style à bsClear avant l'écriture du texte

    Essayes :

    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
    procedure TForm1.MMMenuDrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState);
    var
      s: string;
      x, y : Integer;
    begin
          ACanvas.Pen.Color := clSkyBlue;
      ACanvas.Brush.Color := clSkyBlue;
      ACanvas.Rectangle(ARect);
      s := (Sender as TMenuItem).Caption;
     
          ACanvas.Brush.Style := bsClear;
      x :=  ARect.Left + 4;
      y := (ARect.Top + ARect.Bottom - ACanvas.TextHeight('Tq')) div 2;
      ACanvas.TextOut(x, y, s);
    end;
    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  5. #5
    Membre actif
    Avatar de sematimo
    Profil pro
    Inscrit en
    Février 2009
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 287
    Points : 276
    Points
    276
    Par défaut
    Effectivement avec Canvas.Pen.Color et Canvas.Brush.Style à bsClear ça marche.
    Merci beaucoup.

  6. #6
    Membre actif
    Avatar de sematimo
    Profil pro
    Inscrit en
    Février 2009
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 287
    Points : 276
    Points
    276
    Par défaut
    J'ai un petit problème, les séparateur sont tronqués
    Nom : menu_custom.jpg
Affichages : 432
Taille : 10,6 Ko

  7. #7
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par sematimo Voir le message
    J'ai un petit problème, les séparateur sont tronqués
    Dans ce cas, il faut faire comme dans mon premier exemple.

    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
    procedure TForm1.MMMenuDrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState);
    var
      s: string;
      x, y : Integer;
    begin
      ACanvas.Pen.Color := clSkyBlue;
      ACanvas.Brush.Color := clSkyBlue;
      ACanvas.Rectangle(ARect);
      s := (Sender as TMenuItem).Caption;
     
      ACanvas.Brush.Style := bsClear;
     
      x :=  ARect.Left;
      y := (ARect.Top + ARect.Bottom - ACanvas.TextHeight('Tq')) div 2;
     
      if s = '-' then  // Séparateur
      begin
        ACanvas.Pen.Color := clGray;
        ACanvas.Line(ARect.Left, ARect.Top + 2, ARect.Right, ARect.Top + 2);
      end
      else
      begin
        x :=  x + 4;
        ACanvas.TextOut(x, y, s);
      end;
    end;
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  8. #8
    Membre actif
    Avatar de sematimo
    Profil pro
    Inscrit en
    Février 2009
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 287
    Points : 276
    Points
    276
    Par défaut
    Merci
    ça marche...

  9. #9
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Salut,

    HS
    Citation Envoyé par BeanzMaster Voir le message
    Nom : 2020-08-26_201439.jpg
Affichages : 708
Taille : 9,3 Ko
    Ah, c'est rigolo, quand je regarde attentivement ta copie d'écran, qui ressemble à s'y méprendre à une situation IRL, je réalise que j'ai plus vite fait de lire les textes que de décoder les icônes (même si je les connais par cœur),

    Hé ouais ! Et du coup j'en conclus qu'in fine elles ne servent à rien,
    Tiens, à la place tu devrais nous mettre une bombasse comme on en voit enroulées autour des pompes à essence, aux States,
    T'as l'embarras du choix :
    Nom : pinups_pompes-à-essence.jpg
Affichages : 392
Taille : 56,5 Ko

    /HS
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

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

Discussions similaires

  1. afficher la barre de menus complète avec vba
    Par jejestyle dans le forum Access
    Réponses: 7
    Dernier message: 07/09/2006, 18h07
  2. Réponses: 1
    Dernier message: 01/12/2005, 17h52
  3. [VBA-E]Supprimer l'affichage des barres de menus
    Par ecoinfo dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/10/2005, 00h48
  4. Menu dans la barre des menus OS X
    Par SHiSo dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 02/06/2005, 20h16
  5. Ajout de bouton de commandes dans la barre de menus
    Par vanessaf22 dans le forum IHM
    Réponses: 9
    Dernier message: 21/07/2003, 11h38

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