Bonjour à tous.
J'ai une question : Peut-on changer la couleur de fond d'une barre de menu ?
Version imprimable
Bonjour à tous.
J'ai une question : Peut-on changer la couleur de fond d'une barre de menu ?
Salut oui c'est possible
Pièce jointe 577931
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
Bonjour
Merci pour ton code, je pense que je vais l'adapter aux popup.
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 :
A+Code:
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;
Effectivement avec Canvas.Pen.Color et Canvas.Brush.Style à bsClear ça marche.
Merci beaucoup.
J'ai un petit problème, les séparateur sont tronqués
Pièce jointe 577963
Dans ce cas, il faut faire comme dans mon premier exemple.
Code:
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;
Merci
ça marche...
Salut,
HS
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), :P
Hé ouais ! Et du coup j'en conclus qu'in fine elles ne servent à rien, :mrgreen:
Tiens, à la place tu devrais nous mettre une bombasse comme on en voit enroulées autour des pompes à essence, aux States, :zoubi:
T'as l'embarras du choix :
/HS