Donnez à vos menus (personnalisable) nouveau look avec ce composant


Créer un nouveau look pour vos menus avec cette VCL.
l'Ensemble de la Ownerdraw propriété du Menu, vous souhaitez changer de vrai, et l'appel de la méthode Execute.

unité de XpMenu
interface

& nbsp & nbsp Windows, les Classes, les Graphiques, les Menus
type
& nbsp & nbsp TXpMenu = class(TComponent)
& nbsp & nbsp privé
& ! & ! & ! & nbsp { Private declarations }
& nbsp & nbsp & nbsp FSelColor:TColor
& nbsp & nbsp & nbsp FStripColor:TColor
& nbsp & nbsp & nbsp FBackColor:TColor
& nbsp & nbsp & nbsp FStripWidth:integer
& nbsp & nbsp & nbsp FSelFontColor:TColor
& nbsp & nbsp & nbsp FNotSelFontColor:TColor
& nbsp & nbsp & nbsp FNotActiveColor:TColor
& nbsp & nbsp protégé
& ! & ! & ! & nbsp { déclarations Protégées }
& nbsp & nbsp public
& ! & ! & ! & nbsp { déclarations Publiques }
& ! & ! & ! & nbsp Procédure d'Exécution
& ! & ! & ! & nbsp Procédure RemoveXPs
& ! & ! & ! & nbsp Constructor Create(AOwner:TComponent) remplacer
& nbsp & nbsp publié
& ! & ! & ! & nbsp { Publié des déclarations }
& ! & ! & ! & nbsp procédure DefMenuDrawItem(Sender: TObject ACanvas: TCanvas
& ! & ! & ! & ! & ! & nbsp ARect: TRect Sélectionné: Boolean)
& ! & ! & ! & nbsp procédure DefMenuMeasureItem(Sender: TObject ACanvas: TCanvas
& ! & ! & ! & ! & ! & nbsp var Largeur, Hauteur: Entier)
& ! & ! & ! & nbsp procédure DefMenuAdvancedDrawItem(Sender: TObject ACanvas: TCanvas
& ! & ! & ! & ! & ! & nbsp ARect: TRect État: TOwnerDrawState)
& ! & ! & ! & nbsp propriété SelectionColor:TColor lire FSelColor écrire FSelColor
& ! & ! & ! & nbsp propriété SelectionFontColor: TColor lire FSelFontColor écrire FSelFontColor
& ! & ! & ! & nbsp propriété NotSelectedFontColor: TColor lire FNotSelFontColor écrire FNotSelFontColor
& ! & ! & ! & nbsp propriété NotActiveColor: TColor lire FNotActiveColor écrire FNotActiveColor
& ! & ! & ! & nbsp propriété StripColor:TColor lire FStripColor écrire FStripColor
& ! & ! & ! & nbsp propriété BackColor:TColor lire FBackColor écrire FBackColor
& ! & ! & ! & nbsp propriété StripWidth:integer lire FStripWidth écrire FStripWidth
& nbsp & nbsp fin
procédure Register
application
constructeur TXpMenu.Create(AOwner:TComponent)
begin
& nbsp & nbsp hérité Create(AOwner)
& nbsp & nbsp FSelFontColor:=clWhite
& nbsp & nbsp FSelColor:=$00FEC0D0
& nbsp & nbsp FStripColor:=clGray
& nbsp & nbsp FBackColor:=clWhite
& nbsp & nbsp FNotSelFontColor:=clBlack
& nbsp & nbsp FNotActiveColor:=clGray
& nbsp & nbsp FStripWidth:=20
fin

procédure TXpMenu.DefMenuDrawItem(Sender: TObject ACanvas: TCanvas
& nbsp & nbsp ARect: TRect Sélectionné: Boolean)
const
& nbsp & nbsp cHotkeyPrefix=' & '
& nbsp & nbsp Alignements: array[TPopupAlignment] de Word = (DT_LEFT, DT_RIGHT, DT_CENTER)
var
& nbsp & nbsp myBaseR:TRect
& nbsp & nbsp myrect:TRect
& nbsp & nbsp myBRect:TRect
& nbsp & nbsp mySrect:TRect
& nbsp & nbsp vCaption:String
& nbsp & nbsp vColumn:integer
& nbsp & nbsp ParentMenu:TMenu
& nbsp & nbsp Drapeaux:integer
& nbsp & nbsp NotEnabled:boolean
& nbsp & nbsp Alignement: TPopupAlignment
& nbsp & nbsp BitMp:TBitmap
begin
& nbsp & nbsp BitMp:=TBitmap.Créer
& nbsp & nbsp ParentMenu := TMenuItem(Expéditeur).GetParentMenu
& nbsp & nbsp NotEnabled:= TMenuItem(Expéditeur).Enabled = false
& nbsp & nbsp //outputdebugstring(pchar(string(ParentMenu.ClassName)))
& nbsp & nbsp si ParentMenu est TMenu puis
& ! & ! & ! & nbsp Alignement := paLeft
& nbsp & nbsp sinon si ParentMenu est TPopupMenu puis
& ! & ! & ! & nbsp Alignement := TPopupMenu(ParentMenu).L'alignement
& nbsp & nbsp else
& ! & ! & ! & nbsp Alignement := paLeft
& nbsp & nbsp myBaseR.À Gauche:=ARect.Gauche
& nbsp & nbsp myBaseR.Droit:=myBaseR.Gauche FStripWidth
& nbsp & nbsp myBaseR.Haut:=ARect.Top
& nbsp & nbsp myBaseR.En Bas:=ARect.Bas
& nbsp & nbsp Myrect.À Gauche:=ARect.Gauche FStripWidth
& nbsp & nbsp Myrect.Droit:=ARect.Droite
& nbsp & nbsp Myrect.Haut:=ARect.Top
& nbsp & nbsp Myrect.En Bas:=ARect.Bas
& nbsp & nbsp mySrect.À Gauche:=ARect.Gauche
& nbsp & nbsp mySrect.Droit:=ARect.Droite
& nbsp & nbsp mySrect.Haut:=ARect.Top
& nbsp & nbsp mySrect.En Bas:=ARect.Bas
& nbsp & nbsp si non ((Expéditeur TMenuItem).Parent.Name=')
& nbsp & nbsp & nbsp commencer
& ! & ! & ! & ! & ! & nbsp ACanvas.La brosse.Couleur:=FStripColor
& ! & ! & ! & ! & ! & nbsp ACanvas.FillRect(myBaseR)
& ! & ! & ! & ! & ! & nbsp si non ((Expéditeur TMenuItem).Caption='-') puis
& ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si cette option est Sélectionnée, puis
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp & ! & ! & ! & ! & nbsp ACanvas.La brosse.Couleur:=FSelColor //clSilver
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.FillRect(Myrect)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.Rectangle(mySrect)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si (Expéditeur TMenuItem).Bitmap<>nil then
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp MyBrect.À Gauche:=ARect.Gauche 2
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp MyBrect.Droit:=MyBrect.Gauche (Expéditeur TMenuItem).Bitmap.La largeur
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp MyBrect.Haut:=ARect.Haut de la page 2
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp MyBrect.En Bas:=ARect.En haut (de l'Expéditeur comme TMenuItem).Bitmap.Hauteur
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La brosse.Couleur:=FStripColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.FillRect(MyBrect)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //Si (Expéditeur TMenuItem).ImageIndex>-1 then
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp // commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp // (ParentMenu comme TMainMenu).Les Images.GetBitmap((Expéditeur TMenuItem).ImageIndex,(Expéditeur TMenuItem).Bitmap)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp // fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp Si (Expéditeur TMenuItem).ImageIndex>-1 then
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si (ParentMenu est TMainMenu) puis
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp & ! & ! & ! & ! & nbsp si non ((ParentMenu comme TMainMenu).Images=nil) then
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp (ParentMenu comme TMainMenu).Les Images.GetBitmap((Expéditeur TMenuItem).ImageIndex,BitMp)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp & ! & ! & ! & ! & nbsp si non ((ParentMenu comme TPopupMenu).Images=nil) then
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp (ParentMenu comme TPopupMenu).Les Images.GetBitmap((Expéditeur TMenuItem).ImageIndex,BitMp)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.Tirage(mySrect.gauche 2,arect.top 2,BitMp)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & nbsp & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.Tirage(mySrect.à gauche,mySrect.haut,(Expéditeur TMenuItem).Bitmap)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La brosse.Couleur:=FSelColor //clSilver
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La brosse.Couleur:=FBackColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.FillRect(Myrect)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp Si (Expéditeur TMenuItem).ImageIndex>-1 then
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si (ParentMenu est TMainMenu) puis
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si non ((ParentMenu comme TMainMenu).Images=nil) then
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp (ParentMenu comme TMainMenu).Les Images.GetBitmap((Expéditeur TMenuItem).ImageIndex,BitMp)
// (ParentMenu comme TMainMenu).Les Images.GetBitmap((Expéditeur TMenuItem).ImageIndex,(Expéditeur TMenuItem).Bitmap)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & nbsp & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si non ((ParentMenu comme TPopupMenu).Images=nil) then
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp (ParentMenu comme TPopupMenu).Les Images.GetBitmap((Expéditeur TMenuItem).ImageIndex,BitMp)
// (ParentMenu comme TPopupMenu).Les Images.GetBitmap((Expéditeur TMenuItem).ImageIndex,(Expéditeur TMenuItem).Bitmap)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.Tirage(mySrect.gauche 2,arect.top 2,BitMp)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp & nbsp & nbsp & nbsp ACanvas.Tirage(mySrect.gauche 2,arect.top 2,(Expéditeur TMenuIte ).Bitmap)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp Myrect.à gauche:=Myrect.left 4
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp myrect.haut:=myrect.top 1
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp drapeaux:=DT_EXPANDTABS {ou DT_SINGLELINE ou DT_CALCRECT }ou DT_NOCLIP ou des Alignements[Alignement]
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si cette option est Sélectionnée, puis
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si NotEnabled puis
& ! & ! & nbsp & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La police.Couleur:=FNotActiveColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La police.Couleur:=FSelFontColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp DrawText(ACanvas.Poignée,pchar((Expéditeur TMenuItem).La légende),longueur((Expéditeur TMenuItem).La Légende),Myrect,Drapeaux)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & nbsp & ! & ! & ! & ! & ! & ! & nbsp si NotEnabled puis
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La police.Couleur:=FNotActiveColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La police.Couleur:=FNotSelFontColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp DrawText(ACanvas.Poignée,pchar((Expéditeur TMenuItem).La légende),longueur((Expéditeur TMenuItem).La légende),Myrect,Drapeaux)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si ce n' (TMenuItem(Expéditeur).GetParentComponent est TMainMenu)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //outputDebugstring(pchar( ))
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp Myrect.à gauche:=MyRect.droit-ACanvas.TextWidth(shortcuttotext((Expéditeur TMenuItem).raccourci))-1
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si cette option est Sélectionnée, puis
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp & ! & ! & ! & ! & ! & nbsp si NotEnabled puis
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La police.Couleur:=FNotActiveColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La police.Couleur:=FSelFontColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp DrawText(ACanvas.Poignée,pchar(shortcuttotext((Expéditeur TMenuItem).raccourci)),longueur(shortcuttotext((Expéditeur TMenuItem).raccourci)),Myrect,Drapeaux)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp & nbsp & nbsp & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si NotEnabled puis
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La police.Couleur:=FNotActiveColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La police.Couleur:=FNotSelFontColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp DrawText(ACanvas.Poignée,pchar(shortcuttotext((Expéditeur TMenuItem).raccourci)),longueur(shortcuttotext((Expéditeur TMenuItem).raccourci)),Myrect,Drapeaux)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //ACanvas.TextOut(Myrect.Left 4,arect.top 1,(Expéditeur TMenuItem).La légende) // shortcuttotext((Expéditeur TMenuItem).raccourci))
& ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La brosse.Couleur:=FBackColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.FillRect(Myrect)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp myrect.haut:=myrect.top 1
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp myrect.en bas:=myrect.top 1
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp myrect.À gauche:=myrect.À gauche 12
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La brosse.Couleur:=FStripColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.FillRect(Myrect)
& ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp fin
& nbsp & nbsp BitMp.gratuit
fin
procédure TXpMenu.DefMenuMeasureItem(Sender: TObject ACanvas: TCanvas
& nbs & nbsp var Largeur, Hauteur: Entier)
begin
& nbsp & nbsp largeur:=largeur FStripWidth
& nbsp & nbsp si (non (shortcuttotext((Expéditeur TMenuItem).Raccourci)=')) ou (TMenuItem(Expéditeur).GetParentComponent est TPopupMenu)
& ! & ! & ! & nbsp largeur:=largeur ACanvas.TextWidth(shortcuttotext((Expéditeur TMenuItem).raccourci))
fin
procédure TXpMenu.DefMenuAdvancedDrawItem(Sender: TObject ACanvas: TCanvas
& nbsp & nbsp ARect: TRect État: TOwnerDrawState)
const
& nbsp & nbsp cHotkeyPrefix=' & '

& nbsp & nbsp Alignements: array[TPopupAlignment] de Word = (DT_LEFT, DT_RIGHT, DT_CENTER)
var
& nbsp & nbsp myBaseR:TRect
& nbsp & nbsp myrect:TRect
& nbsp & nbsp myBRect:TRect
& nbsp & nbsp mySrect:TRect
& nbsp & nbsp sélectionné:boolean
& nbsp & nbsp NotEnabled:boolean
& nbsp & nbsp pl:Array [0..3] de tpoint
& nbsp & nbsp ParentMenu:TMenu
& nbsp & nbsp Drapeaux:integer
& nbsp & nbsp Alignement: TPopupAlignment
begin
& nbsp & nbsp ParentMenu := TMenuItem(Expéditeur).GetParentMenu
& nbsp & nbsp si ParentMenu est TMenu puis
& ! & ! & ! & nbsp Alignement := paLeft
& nbsp & nbsp sinon si ParentMenu est TPopupMenu puis
& ! & ! & ! & nbsp Alignement := TPopupMenu(ParentMenu).L'alignement
& nbsp & nbsp else
& ! & ! & ! & nbsp Alignement := paLeft
& nbsp & nbsp Sélectionné := odSelected dans l'État
& nbsp & nbsp NotEnabled:= odDisabled dans l'État
& nbsp & nbsp myBaseR.À Gauche:=ARect.Gauche
& nbsp & nbsp myBaseR.Droit:=myBaseR.Gauche FStripWidth
& nbsp & nbsp myBaseR.Haut:=ARect.Top
& nbsp & nbsp myBaseR.En Bas:=ARect.Bas
& nbsp & nbsp Myrect.À Gauche:=ARect.Gauche FStripWidth
& nbsp & nbsp Myrect.Droit:=ARect.Droite
& nbsp & nbsp Myrect.Haut:=ARect.Top
& nbsp & nbsp Myrect.En Bas:=ARect.Bas
& nbsp & nbsp mySrect.À Gauche:=ARect.Gauche
& nbsp & nbsp mySrect.Droit:=ARect.Droite
& nbsp & nbsp mySrect.Haut:=ARect.Top
& nbsp & nbsp mySrect.En Bas:=ARect.Bas
& nbsp & nbsp pl[0].x:=mySRect.Left
& nbsp & nbsp pl[0].y:=mySRect.Bottom
& nbsp & nbsp pl[1]:=mySRect.TopLeft
& nbsp & nbsp pl[2].x:=mySRect.Right
& nbsp & nbsp pl[2].y:=mySRect.Top
& nbsp & nbsp pl[3]:=mySRect.BottomRight
& nbsp & nbsp ACanvas.La brosse.Couleur:=FStripColor
& nbsp & nbsp si (TMenuItem(Expéditeur).GetParentComponent est TPopupMenu)
& ! & ! & ! & ! & nbsp ACanvas.FillRect(myBaseR)
& nbsp & nbsp si non ((Expéditeur TMenuItem).Caption=' -')
& ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & nbsp si ((Expéditeur TMenuItem).Parent.Name=') puis
& ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si cette option est Sélectionnée, puis
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp & ! & ! & ! & ! & nbsp si (TMenuItem(Expéditeur).GetParentComponent est TPopupMenu)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La brosse.Couleur:=FSelColor //clSilver
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.FillRect(mySrect)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.Rectangle(mySrect)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si (Expéditeur TMenuItem).Bitmap<>nil then
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp MyBrect.À Gauche:=ARect.Gauche 2
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp MyBrect.Droit:=MyBrect.Gauche (Expéditeur TMenuItem).Bitmap.La largeur
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp MyBrect.Haut:=ARect.Haut de la page 2
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp MyBrect.En Bas:=ARect.En haut (de l'Expéditeur comme TMenuItem).Bitmap.Hauteur
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La brosse.Couleur:=FStripColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.FillRect(MyBrect)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.Tirage(mySrect.à gauche,mySrect.haut,(Expéditeur TMenuItem).Bitmap)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La brosse.Couleur:=FSelColor //clSilver
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & nbsp & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La brosse.Couleur:=FBackColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.FillRect(mySrect)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.Rectangle(mySrect)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & nbsp & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si (TMenuItem(Expéditeur).GetParentComponent est TPopupMenu)
& ! & ! & ! & ! & ! & ! & nbsp & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La brosse.Couleur:=FBackColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.FillRect(Myrect)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp Si (Expéditeur TMenuItem).ImageIndex>-1 then
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si non ((ParentMenu comme TPopupMenu).








Donnez a vos menus (personnalisable) nouveau look avec ce composant


Donnez a vos menus (personnalisable) nouveau look avec ce composant : Plusieurs milliers de conseils pour vous faciliter la vie.


Creer un nouveau look pour vos menus avec cette VCL.
l'Ensemble de la Ownerdraw propriete du Menu, vous souhaitez changer de vrai, et l'appel de la methode Execute.

unite de XpMenu
interface

& nbsp & nbsp Windows, les Classes, les Graphiques, les Menus
type
& nbsp & nbsp TXpMenu = class(TComponent)
& nbsp & nbsp prive
& ! & ! & ! & nbsp { Private declarations }
& nbsp & nbsp & nbsp FSelColor:TColor
& nbsp & nbsp & nbsp FStripColor:TColor
& nbsp & nbsp & nbsp FBackColor:TColor
& nbsp & nbsp & nbsp FStripWidth:integer
& nbsp & nbsp & nbsp FSelFontColor:TColor
& nbsp & nbsp & nbsp FNotSelFontColor:TColor
& nbsp & nbsp & nbsp FNotActiveColor:TColor
& nbsp & nbsp protege
& ! & ! & ! & nbsp { declarations Protegees }
& nbsp & nbsp public
& ! & ! & ! & nbsp { declarations Publiques }
& ! & ! & ! & nbsp Procedure d'Execution
& ! & ! & ! & nbsp Procedure RemoveXPs
& ! & ! & ! & nbsp Constructor Create(AOwner:TComponent) remplacer
& nbsp & nbsp publie
& ! & ! & ! & nbsp { Publie des declarations }
& ! & ! & ! & nbsp procedure DefMenuDrawItem(Sender: TObject ACanvas: TCanvas
& ! & ! & ! & ! & ! & nbsp ARect: TRect Selectionne: Boolean)
& ! & ! & ! & nbsp procedure DefMenuMeasureItem(Sender: TObject ACanvas: TCanvas
& ! & ! & ! & ! & ! & nbsp var Largeur, Hauteur: Entier)
& ! & ! & ! & nbsp procedure DefMenuAdvancedDrawItem(Sender: TObject ACanvas: TCanvas
& ! & ! & ! & ! & ! & nbsp ARect: TRect Etat: TOwnerDrawState)
& ! & ! & ! & nbsp propriete SelectionColor:TColor lire FSelColor ecrire FSelColor
& ! & ! & ! & nbsp propriete SelectionFontColor: TColor lire FSelFontColor ecrire FSelFontColor
& ! & ! & ! & nbsp propriete NotSelectedFontColor: TColor lire FNotSelFontColor ecrire FNotSelFontColor
& ! & ! & ! & nbsp propriete NotActiveColor: TColor lire FNotActiveColor ecrire FNotActiveColor
& ! & ! & ! & nbsp propriete StripColor:TColor lire FStripColor ecrire FStripColor
& ! & ! & ! & nbsp propriete BackColor:TColor lire FBackColor ecrire FBackColor
& ! & ! & ! & nbsp propriete StripWidth:integer lire FStripWidth ecrire FStripWidth
& nbsp & nbsp fin
procedure Register
application
constructeur TXpMenu.Create(AOwner:TComponent)
begin
& nbsp & nbsp herite Create(AOwner)
& nbsp & nbsp FSelFontColor:=clWhite
& nbsp & nbsp FSelColor:=$00FEC0D0
& nbsp & nbsp FStripColor:=clGray
& nbsp & nbsp FBackColor:=clWhite
& nbsp & nbsp FNotSelFontColor:=clBlack
& nbsp & nbsp FNotActiveColor:=clGray
& nbsp & nbsp FStripWidth:=20
fin

procedure TXpMenu.DefMenuDrawItem(Sender: TObject ACanvas: TCanvas
& nbsp & nbsp ARect: TRect Selectionne: Boolean)
const
& nbsp & nbsp cHotkeyPrefix=' & '
& nbsp & nbsp Alignements: array[TPopupAlignment] de Word = (DT_LEFT, DT_RIGHT, DT_CENTER)
var
& nbsp & nbsp myBaseR:TRect
& nbsp & nbsp myrect:TRect
& nbsp & nbsp myBRect:TRect
& nbsp & nbsp mySrect:TRect
& nbsp & nbsp vCaption:String
& nbsp & nbsp vColumn:integer
& nbsp & nbsp ParentMenu:TMenu
& nbsp & nbsp Drapeaux:integer
& nbsp & nbsp NotEnabled:boolean
& nbsp & nbsp Alignement: TPopupAlignment
& nbsp & nbsp BitMp:TBitmap
begin
& nbsp & nbsp BitMp:=TBitmap.Creer
& nbsp & nbsp ParentMenu := TMenuItem(Expediteur).GetParentMenu
& nbsp & nbsp NotEnabled:= TMenuItem(Expediteur).Enabled = false
& nbsp & nbsp //outputdebugstring(pchar(string(ParentMenu.ClassName)))
& nbsp & nbsp si ParentMenu est TMenu puis
& ! & ! & ! & nbsp Alignement := paLeft
& nbsp & nbsp sinon si ParentMenu est TPopupMenu puis
& ! & ! & ! & nbsp Alignement := TPopupMenu(ParentMenu).L'alignement
& nbsp & nbsp else
& ! & ! & ! & nbsp Alignement := paLeft
& nbsp & nbsp myBaseR.A Gauche:=ARect.Gauche
& nbsp & nbsp myBaseR.Droit:=myBaseR.Gauche FStripWidth
& nbsp & nbsp myBaseR.Haut:=ARect.Top
& nbsp & nbsp myBaseR.En Bas:=ARect.Bas
& nbsp & nbsp Myrect.A Gauche:=ARect.Gauche FStripWidth
& nbsp & nbsp Myrect.Droit:=ARect.Droite
& nbsp & nbsp Myrect.Haut:=ARect.Top
& nbsp & nbsp Myrect.En Bas:=ARect.Bas
& nbsp & nbsp mySrect.A Gauche:=ARect.Gauche
& nbsp & nbsp mySrect.Droit:=ARect.Droite
& nbsp & nbsp mySrect.Haut:=ARect.Top
& nbsp & nbsp mySrect.En Bas:=ARect.Bas
& nbsp & nbsp si non ((Expediteur TMenuItem).Parent.Name=')
& nbsp & nbsp & nbsp commencer
& ! & ! & ! & ! & ! & nbsp ACanvas.La brosse.Couleur:=FStripColor
& ! & ! & ! & ! & ! & nbsp ACanvas.FillRect(myBaseR)
& ! & ! & ! & ! & ! & nbsp si non ((Expediteur TMenuItem).Caption='-') puis
& ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si cette option est Selectionnee, puis
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp & ! & ! & ! & ! & nbsp ACanvas.La brosse.Couleur:=FSelColor //clSilver
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.FillRect(Myrect)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.Rectangle(mySrect)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si (Expediteur TMenuItem).Bitmap<>nil then
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp MyBrect.A Gauche:=ARect.Gauche 2
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp MyBrect.Droit:=MyBrect.Gauche (Expediteur TMenuItem).Bitmap.La largeur
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp MyBrect.Haut:=ARect.Haut de la page 2
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp MyBrect.En Bas:=ARect.En haut (de l'Expediteur comme TMenuItem).Bitmap.Hauteur
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La brosse.Couleur:=FStripColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.FillRect(MyBrect)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //Si (Expediteur TMenuItem).ImageIndex>-1 then
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp // commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp // (ParentMenu comme TMainMenu).Les Images.GetBitmap((Expediteur TMenuItem).ImageIndex,(Expediteur TMenuItem).Bitmap)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp // fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp Si (Expediteur TMenuItem).ImageIndex>-1 then
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si (ParentMenu est TMainMenu) puis
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp & ! & ! & ! & ! & nbsp si non ((ParentMenu comme TMainMenu).Images=nil) then
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp (ParentMenu comme TMainMenu).Les Images.GetBitmap((Expediteur TMenuItem).ImageIndex,BitMp)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp & ! & ! & ! & ! & nbsp si non ((ParentMenu comme TPopupMenu).Images=nil) then
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp (ParentMenu comme TPopupMenu).Les Images.GetBitmap((Expediteur TMenuItem).ImageIndex,BitMp)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.Tirage(mySrect.gauche 2,arect.top 2,BitMp)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & nbsp & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.Tirage(mySrect.a gauche,mySrect.haut,(Expediteur TMenuItem).Bitmap)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La brosse.Couleur:=FSelColor //clSilver
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La brosse.Couleur:=FBackColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.FillRect(Myrect)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp Si (Expediteur TMenuItem).ImageIndex>-1 then
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si (ParentMenu est TMainMenu) puis
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si non ((ParentMenu comme TMainMenu).Images=nil) then
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp (ParentMenu comme TMainMenu).Les Images.GetBitmap((Expediteur TMenuItem).ImageIndex,BitMp)
// (ParentMenu comme TMainMenu).Les Images.GetBitmap((Expediteur TMenuItem).ImageIndex,(Expediteur TMenuItem).Bitmap)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & nbsp & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si non ((ParentMenu comme TPopupMenu).Images=nil) then
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp (ParentMenu comme TPopupMenu).Les Images.GetBitmap((Expediteur TMenuItem).ImageIndex,BitMp)
// (ParentMenu comme TPopupMenu).Les Images.GetBitmap((Expediteur TMenuItem).ImageIndex,(Expediteur TMenuItem).Bitmap)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.Tirage(mySrect.gauche 2,arect.top 2,BitMp)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp & nbsp & nbsp & nbsp ACanvas.Tirage(mySrect.gauche 2,arect.top 2,(Expediteur TMenuIte ).Bitmap)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp Myrect.a gauche:=Myrect.left 4
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp myrect.haut:=myrect.top 1
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp drapeaux:=DT_EXPANDTABS {ou DT_SINGLELINE ou DT_CALCRECT }ou DT_NOCLIP ou des Alignements[Alignement]
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si cette option est Selectionnee, puis
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si NotEnabled puis
& ! & ! & nbsp & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La police.Couleur:=FNotActiveColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La police.Couleur:=FSelFontColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp DrawText(ACanvas.Poignee,pchar((Expediteur TMenuItem).La legende),longueur((Expediteur TMenuItem).La Legende),Myrect,Drapeaux)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & nbsp & ! & ! & ! & ! & ! & ! & nbsp si NotEnabled puis
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La police.Couleur:=FNotActiveColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La police.Couleur:=FNotSelFontColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp DrawText(ACanvas.Poignee,pchar((Expediteur TMenuItem).La legende),longueur((Expediteur TMenuItem).La legende),Myrect,Drapeaux)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si ce n' (TMenuItem(Expediteur).GetParentComponent est TMainMenu)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //outputDebugstring(pchar( ))
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp Myrect.a gauche:=MyRect.droit-ACanvas.TextWidth(shortcuttotext((Expediteur TMenuItem).raccourci))-1
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si cette option est Selectionnee, puis
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp & ! & ! & ! & ! & ! & nbsp si NotEnabled puis
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La police.Couleur:=FNotActiveColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La police.Couleur:=FSelFontColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp DrawText(ACanvas.Poignee,pchar(shortcuttotext((Expediteur TMenuItem).raccourci)),longueur(shortcuttotext((Expediteur TMenuItem).raccourci)),Myrect,Drapeaux)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp & nbsp & nbsp & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si NotEnabled puis
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La police.Couleur:=FNotActiveColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La police.Couleur:=FNotSelFontColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp DrawText(ACanvas.Poignee,pchar(shortcuttotext((Expediteur TMenuItem).raccourci)),longueur(shortcuttotext((Expediteur TMenuItem).raccourci)),Myrect,Drapeaux)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //ACanvas.TextOut(Myrect.Left 4,arect.top 1,(Expediteur TMenuItem).La legende) // shortcuttotext((Expediteur TMenuItem).raccourci))
& ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La brosse.Couleur:=FBackColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.FillRect(Myrect)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp myrect.haut:=myrect.top 1
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp myrect.en bas:=myrect.top 1
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp myrect.A gauche:=myrect.A gauche 12
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La brosse.Couleur:=FStripColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.FillRect(Myrect)
& ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp fin
& nbsp & nbsp BitMp.gratuit
fin
procedure TXpMenu.DefMenuMeasureItem(Sender: TObject ACanvas: TCanvas
& nbs & nbsp var Largeur, Hauteur: Entier)
begin
& nbsp & nbsp largeur:=largeur FStripWidth
& nbsp & nbsp si (non (shortcuttotext((Expediteur TMenuItem).Raccourci)=')) ou (TMenuItem(Expediteur).GetParentComponent est TPopupMenu)
& ! & ! & ! & nbsp largeur:=largeur ACanvas.TextWidth(shortcuttotext((Expediteur TMenuItem).raccourci))
fin
procedure TXpMenu.DefMenuAdvancedDrawItem(Sender: TObject ACanvas: TCanvas
& nbsp & nbsp ARect: TRect Etat: TOwnerDrawState)
const
& nbsp & nbsp cHotkeyPrefix=' & '

& nbsp & nbsp Alignements: array[TPopupAlignment] de Word = (DT_LEFT, DT_RIGHT, DT_CENTER)
var
& nbsp & nbsp myBaseR:TRect
& nbsp & nbsp myrect:TRect
& nbsp & nbsp myBRect:TRect
& nbsp & nbsp mySrect:TRect
& nbsp & nbsp selectionne:boolean
& nbsp & nbsp NotEnabled:boolean
& nbsp & nbsp pl:Array [0..3] de tpoint
& nbsp & nbsp ParentMenu:TMenu
& nbsp & nbsp Drapeaux:integer
& nbsp & nbsp Alignement: TPopupAlignment
begin
& nbsp & nbsp ParentMenu := TMenuItem(Expediteur).GetParentMenu
& nbsp & nbsp si ParentMenu est TMenu puis
& ! & ! & ! & nbsp Alignement := paLeft
& nbsp & nbsp sinon si ParentMenu est TPopupMenu puis
& ! & ! & ! & nbsp Alignement := TPopupMenu(ParentMenu).L'alignement
& nbsp & nbsp else
& ! & ! & ! & nbsp Alignement := paLeft
& nbsp & nbsp Selectionne := odSelected dans l'Etat
& nbsp & nbsp NotEnabled:= odDisabled dans l'Etat
& nbsp & nbsp myBaseR.A Gauche:=ARect.Gauche
& nbsp & nbsp myBaseR.Droit:=myBaseR.Gauche FStripWidth
& nbsp & nbsp myBaseR.Haut:=ARect.Top
& nbsp & nbsp myBaseR.En Bas:=ARect.Bas
& nbsp & nbsp Myrect.A Gauche:=ARect.Gauche FStripWidth
& nbsp & nbsp Myrect.Droit:=ARect.Droite
& nbsp & nbsp Myrect.Haut:=ARect.Top
& nbsp & nbsp Myrect.En Bas:=ARect.Bas
& nbsp & nbsp mySrect.A Gauche:=ARect.Gauche
& nbsp & nbsp mySrect.Droit:=ARect.Droite
& nbsp & nbsp mySrect.Haut:=ARect.Top
& nbsp & nbsp mySrect.En Bas:=ARect.Bas
& nbsp & nbsp pl[0].x:=mySRect.Left
& nbsp & nbsp pl[0].y:=mySRect.Bottom
& nbsp & nbsp pl[1]:=mySRect.TopLeft
& nbsp & nbsp pl[2].x:=mySRect.Right
& nbsp & nbsp pl[2].y:=mySRect.Top
& nbsp & nbsp pl[3]:=mySRect.BottomRight
& nbsp & nbsp ACanvas.La brosse.Couleur:=FStripColor
& nbsp & nbsp si (TMenuItem(Expediteur).GetParentComponent est TPopupMenu)
& ! & ! & ! & ! & nbsp ACanvas.FillRect(myBaseR)
& nbsp & nbsp si non ((Expediteur TMenuItem).Caption=' -')
& ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & nbsp si ((Expediteur TMenuItem).Parent.Name=') puis
& ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si cette option est Selectionnee, puis
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp & ! & ! & ! & ! & nbsp si (TMenuItem(Expediteur).GetParentComponent est TPopupMenu)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La brosse.Couleur:=FSelColor //clSilver
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.FillRect(mySrect)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.Rectangle(mySrect)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si (Expediteur TMenuItem).Bitmap<>nil then
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp MyBrect.A Gauche:=ARect.Gauche 2
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp MyBrect.Droit:=MyBrect.Gauche (Expediteur TMenuItem).Bitmap.La largeur
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp MyBrect.Haut:=ARect.Haut de la page 2
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp MyBrect.En Bas:=ARect.En haut (de l'Expediteur comme TMenuItem).Bitmap.Hauteur
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La brosse.Couleur:=FStripColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.FillRect(MyBrect)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.Tirage(mySrect.a gauche,mySrect.haut,(Expediteur TMenuItem).Bitmap)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La brosse.Couleur:=FSelColor //clSilver
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & nbsp & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La brosse.Couleur:=FBackColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.FillRect(mySrect)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.Rectangle(mySrect)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & nbsp & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si (TMenuItem(Expediteur).GetParentComponent est TPopupMenu)
& ! & ! & ! & ! & ! & ! & nbsp & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.La brosse.Couleur:=FBackColor
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp ACanvas.FillRect(Myrect)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp Si (Expediteur TMenuItem).ImageIndex>-1 then
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp si non ((ParentMenu comme TPopupMenu).

Donnez à vos menus (personnalisable) nouveau look avec ce composant

Donnez à vos menus (personnalisable) nouveau look avec ce composant : Plusieurs milliers de conseils pour vous faciliter la vie.
Recommander aux amis
  • gplus
  • pinterest

Messages récents

Commentaire

Laisser un commentaire

évaluation