Dar a sus menús (personalizable) nuevo look con este componente


Crear un nuevo look para tus menús con este VCL.
se Establece la propiedad Ownerdraw del Menú que desea cambiar a true, y llamar al método Execute.

unidad de XpMenu
interfaz
usos
& nbsp & nbsp Windows, las Clases, los Gráficos, los Menús
tipo
& nbsp & nbsp TXpMenu = clase(TComponent)
& nbsp & nbsp privada
& nbsp & nbsp & nbsp & 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 protegido
& nbsp & nbsp & nbsp & nbsp { declaraciones Protegidos }
& nbsp & nbsp pública
& nbsp & nbsp & nbsp & nbsp { Public declarations }
& nbsp & nbsp & nbsp & nbsp Procedimiento de Ejecución
& nbsp & nbsp & nbsp & nbsp Procedimiento RemoveXPs
& nbsp & nbsp & nbsp & nbsp Constructor Create(AOwner:TComponent) reemplazar
& nbsp & nbsp publicado
& nbsp & nbsp & nbsp & nbsp { Publicado declaraciones }
& nbsp & nbsp & nbsp & nbsp procedimiento DefMenuDrawItem(Sender: TObject ACanvas: TCanvas
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ARect: TRect Seleccionado: Boolean)
& nbsp & nbsp & nbsp & nbsp procedimiento DefMenuMeasureItem(Sender: TObject ACanvas: TCanvas
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp var Ancho, Altura: Entero)
& nbsp & nbsp & nbsp & nbsp procedimiento DefMenuAdvancedDrawItem(Sender: TObject ACanvas: TCanvas
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ARect: TRect Estado: TOwnerDrawState)
& nbsp & nbsp & nbsp & nbsp propiedad SelectionColor:TColor leer FSelColor escribir FSelColor
& nbsp & nbsp & nbsp & nbsp propiedad SelectionFontColor: TColor leer FSelFontColor escribir FSelFontColor
& nbsp & nbsp & nbsp & nbsp propiedad NotSelectedFontColor: TColor leer FNotSelFontColor escribir FNotSelFontColor
& nbsp & nbsp & nbsp & nbsp propiedad NotActiveColor: TColor leer FNotActiveColor escribir FNotActiveColor
& nbsp & nbsp & nbsp & nbsp propiedad StripColor:TColor leer FStripColor escribir FStripColor
& nbsp & nbsp & nbsp & nbsp propiedad BackColor:TColor leer FBackColor escribir FBackColor
& nbsp & nbsp & nbsp & nbsp propiedad StripWidth:entero leer FStripWidth escribir FStripWidth
& nbsp & nbsp final
procedimiento de Registro
aplicación
constructor TXpMenu.Create(AOwner:TComponent)
begin
& nbsp & nbsp inherited 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

procedimiento TXpMenu.DefMenuDrawItem(Sender: TObject ACanvas: TCanvas
& nbsp & nbsp ARect: TRect Seleccionado: Boolean)
const
& nbsp & nbsp cHotkeyPrefix=' & '
& nbsp & nbsp Alineaciones: array[TPopupAlignment] de la Palabra = (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 Banderas:integer
& nbsp & nbsp NotEnabled:boolean
& nbsp & nbsp Alineación: TPopupAlignment
& nbsp & nbsp BitMp:TBitmap
begin
& nbsp & nbsp BitMp:=TBitmap.Crear
& nbsp & nbsp ParentMenu := TMenuItem(Remitente).GetParentMenu
& nbsp & nbsp NotEnabled:= TMenuItem(Remitente).Enabled = false
& nbsp & nbsp //outputdebugstring(pchar(string(ParentMenu.ClassName)))
& nbsp & nbsp si ParentMenu es TMenu, a continuación,
& nbsp & nbsp & nbsp & nbsp Alineación := paLeft
& nbsp & nbsp cosa si ParentMenu es TPopupMenu, a continuación,
& nbsp & nbsp & nbsp & nbsp Alineación := TPopupMenu(ParentMenu).Alineación
& nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp Alineación := paLeft
& nbsp & nbsp myBaseR.A La Izquierda:=ARect.A la izquierda
& nbsp & nbsp myBaseR.Derecha:=myBaseR.A la izquierda FStripWidth
& nbsp & nbsp myBaseR.Top:=ARect.La parte superior
& nbsp & nbsp myBaseR.Parte Inferior:=ARect.Inferior
& nbsp & nbsp Myrect.A La Izquierda:=ARect.A la izquierda FStripWidth
& nbsp & nbsp Myrect.Derecha:=ARect.A la derecha
& nbsp & nbsp Myrect.Top:=ARect.La parte superior
& nbsp & nbsp Myrect.Parte Inferior:=ARect.Inferior
& nbsp & nbsp mySrect.A La Izquierda:=ARect.A la izquierda
& nbsp & nbsp mySrect.Derecha:=ARect.A la derecha
& nbsp & nbsp mySrect.Top:=ARect.La parte superior
& nbsp & nbsp mySrect.Parte Inferior:=ARect.Inferior
& nbsp & nbsp si no ((Remitente como TMenuItem).El padre de familia.Name=')
& nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Cepillo.Color:=FStripColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.FillRect(myBaseR)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si no ((Remitente como TMenuItem).Caption='-') a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si se Selecciona, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Cepillo.Color:=FSelColor //clSilver
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.FillRect(Myrect)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Rectángulo(mySrect)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (Remitente como TMenuItem).Mapa de bits<>nil then
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp MyBrect.A La Izquierda:=ARect.A la izquierda 2
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp MyBrect.Derecha:=MyBrect.A la izquierda (Remitente como TMenuItem).Mapa de bits.Anchura
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp MyBrect.Top:=ARect.Top 2
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp MyBrect.Parte Inferior:=ARect.Parte superior (Remitente como TMenuItem).Mapa de bits.Altura
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Cepillo.Color:=FStripColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.FillRect(MyBrect)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //Si (Remitente como TMenuItem).ImageIndex>-1, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp // begin
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp // (ParentMenu como TMainMenu).Imágenes.GetBitmap((Remitente como TMenuItem).ImageIndex,(Remitente como TMenuItem).Mapa de bits)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp // fin
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Si (Remitente como TMenuItem).ImageIndex>-1, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if (ParentMenu es TMainMenu) a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si no ((ParentMenu como TMainMenu).Imágenes=nil) then
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp (ParentMenu como TMainMenu).Imágenes.GetBitmap((Remitente como TMenuItem).ImageIndex,BitMp)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si no ((ParentMenu como TPopupMenu).Imágenes=nil) then
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp (ParentMenu como TPopupMenu).Imágenes.GetBitmap((Remitente como TMenuItem).ImageIndex,BitMp)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Dibujar(mySrect.a la izquierda 2,arect.top 2,BitMp)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Dibujar(mySrect.a la izquierda,mySrect.la parte superior,(Remitente como TMenuItem).Mapa de bits)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Cepillo.Color:=FSelColor //clSilver
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Cepillo.Color:=FBackColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.FillRect(Myrect)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Si (Remitente como TMenuItem).ImageIndex>-1, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (ParentMenu es TMainMenu) a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si no ((ParentMenu como TMainMenu).Imágenes=nil) then
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp (ParentMenu como TMainMenu).Imágenes.GetBitmap((Remitente como TMenuItem).ImageIndex,BitMp)
// (ParentMenu como TMainMenu).Imágenes.GetBitmap((Remitente como TMenuItem).ImageIndex,(Remitente como TMenuItem).Mapa de bits)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si no ((ParentMenu como TPopupMenu).Imágenes=nil) then
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp (ParentMenu como TPopupMenu).Imágenes.GetBitmap((Remitente como TMenuItem).ImageIndex,BitMp)
// (ParentMenu como TPopupMenu).Imágenes.GetBitmap((Remitente como TMenuItem).ImageIndex,(Remitente como TMenuItem).Mapa de bits)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Dibujar(mySrect.a la izquierda 2,arect.top 2,BitMp)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Dibujar(mySrect.a la izquierda 2,arect.top 2,(Remitente como TMenuIte ).Mapa de bits)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Myrect.a la izquierda:=Myrect.left 4
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp myrect.top:=myrect.top 1
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp banderas:=DT_EXPANDTABS {o DT_SINGLELINE o DT_CALCRECT }o DT_NOCLIP o Alineaciones[Alineación]
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si se Selecciona, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si NotEnabled, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Fuente.Color:=FNotActiveColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Fuente.Color:=FSelFontColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp DrawText(ACanvas.Manejar,pchar((Remitente como TMenuItem).Pie de foto),longitud((Remitente como TMenuItem).Pie De Foto),Myrect,Banderas)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si NotEnabled, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Fuente.Color:=FNotActiveColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Fuente.Color:=FNotSelFontColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp DrawText(ACanvas.Manejar,pchar((Remitente como TMenuItem).Pie de foto),longitud((Remitente como TMenuItem).Pie de foto),Myrect,Banderas)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si no (TMenuItem(Remitente).GetParentComponent es TMainMenu), a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //outputDebugstring(pchar( ))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Myrect.a la izquierda:=MyRect.haga ACanvas.TextWidth(shortcuttotext((Remitente como TMenuItem).acceso directo))-1
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si se Selecciona, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si NotEnabled, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Fuente.Color:=FNotActiveColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Fuente.Color:=FSelFontColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp DrawText(ACanvas.Manejar,pchar(shortcuttotext((Remitente como TMenuItem).acceso directo)),longitud(shortcuttotext((Remitente como TMenuItem).acceso directo)),Myrect,Banderas)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si NotEnabled, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Fuente.Color:=FNotActiveColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Fuente.Color:=FNotSelFontColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp DrawText(ACanvas.Manejar,pchar(shortcuttotext((Remitente como TMenuItem).acceso directo)),longitud(shortcuttotext((Remitente como TMenuItem).acceso directo)),Myrect,Banderas)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //ACanvas.TextOut(Myrect.A la izquierda 4,arect.top 1,(Remitente como TMenuItem).Pie de foto) // shortcuttotext((Remitente como TMenuItem).acceso directo))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Cepillo.Color:=FBackColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.FillRect(Myrect)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp myrect.top:=myrect.top 1
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp myrect.parte inferior:=myrect.top 1
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp myrect.A la izquierda:=myrect.A la izquierda 12
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Cepillo.Color:=FStripColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.FillRect(Myrect)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp BitMp.libre
fin
procedimiento TXpMenu.DefMenuMeasureItem(Sender: TObject ACanvas: TCanvas
& nbs & nbsp var Ancho, Altura: Entero)
begin
& nbsp & nbsp ancho:=ancho FStripWidth
& nbsp & nbsp si (no (shortcuttotext((Remitente como TMenuItem).Acceso directo)=')) o (TMenuItem(Remitente).GetParentComponent es TPopupMenu), a continuación,
& nbsp & nbsp & nbsp & nbsp ancho:=ancho ACanvas.TextWidth(shortcuttotext((Remitente como TMenuItem).acceso directo))
fin
procedimiento TXpMenu.DefMenuAdvancedDrawItem(Sender: TObject ACanvas: TCanvas
& nbsp & nbsp ARect: TRect Estado: TOwnerDrawState)
const
& nbsp & nbsp cHotkeyPrefix=' & '

& nbsp & nbsp Alineaciones: array[TPopupAlignment] de la Palabra = (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 seleccionado:boolean
& nbsp & nbsp NotEnabled:boolean
& nbsp & nbsp pl:Array [0..3] de tpoint
& nbsp & nbsp ParentMenu:TMenu
& nbsp & nbsp Banderas:integer
& nbsp & nbsp Alineación: TPopupAlignment
begin
& nbsp & nbsp ParentMenu := TMenuItem(Remitente).GetParentMenu
& nbsp & nbsp si ParentMenu es TMenu, a continuación,
& nbsp & nbsp & nbsp & nbsp Alineación := paLeft
& nbsp & nbsp cosa si ParentMenu es TPopupMenu, a continuación,
& nbsp & nbsp & nbsp & nbsp Alineación := TPopupMenu(ParentMenu).Alineación
& nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp Alineación := paLeft
& nbsp & nbsp Seleccionado := odSelected en Estado
& nbsp & nbsp NotEnabled:= odDisabled en Estado
& nbsp & nbsp myBaseR.A La Izquierda:=ARect.A la izquierda
& nbsp & nbsp myBaseR.Derecha:=myBaseR.A la izquierda FStripWidth
& nbsp & nbsp myBaseR.Top:=ARect.La parte superior
& nbsp & nbsp myBaseR.Parte Inferior:=ARect.Inferior
& nbsp & nbsp Myrect.A La Izquierda:=ARect.A la izquierda FStripWidth
& nbsp & nbsp Myrect.Derecha:=ARect.A la derecha
& nbsp & nbsp Myrect.Top:=ARect.La parte superior
& nbsp & nbsp Myrect.Parte Inferior:=ARect.Inferior
& nbsp & nbsp mySrect.A La Izquierda:=ARect.A la izquierda
& nbsp & nbsp mySrect.Derecha:=ARect.A la derecha
& nbsp & nbsp mySrect.Top:=ARect.La parte superior
& nbsp & nbsp mySrect.Parte Inferior:=ARect.Inferior
& 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.Cepillo.Color:=FStripColor
& nbsp & nbsp si (TMenuItem(Remitente).GetParentComponent es TPopupMenu), a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.FillRect(myBaseR)
& nbsp & nbsp si no ((Remitente como TMenuItem).Caption=' -'), a continuación,
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if ((Remitente como TMenuItem).El padre de familia.Name=') a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si se Selecciona, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (TMenuItem(Remitente).GetParentComponent es TPopupMenu), a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Cepillo.Color:=FSelColor //clSilver
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.FillRect(mySrect)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Rectángulo(mySrect)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (Remitente como TMenuItem).Mapa de bits<>nil then
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp MyBrect.A La Izquierda:=ARect.A la izquierda 2
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp MyBrect.Derecha:=MyBrect.A la izquierda (Remitente como TMenuItem).Mapa de bits.Anchura
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp MyBrect.Top:=ARect.Top 2
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp MyBrect.Parte Inferior:=ARect.Parte superior (Remitente como TMenuItem).Mapa de bits.Altura
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Cepillo.Color:=FStripColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.FillRect(MyBrect)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Dibujar(mySrect.a la izquierda,mySrect.la parte superior,(Remitente como TMenuItem).Mapa de bits)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Cepillo.Color:=FSelColor //clSilver
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Cepillo.Color:=FBackColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.FillRect(mySrect)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Rectángulo(mySrect)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (TMenuItem(Remitente).GetParentComponent es TPopupMenu), a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Cepillo.Color:=FBackColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.FillRect(Myrect)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Si (Remitente como TMenuItem).ImageIndex>-1, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si no ((ParentMenu como TPopupMenu).








Dar a sus menus (personalizable) nuevo look con este componente


Dar a sus menus (personalizable) nuevo look con este componente : Multi-millones de consejos para hacer su vida mas facil.


Crear un nuevo look para tus menus con este VCL.
se Establece la propiedad Ownerdraw del Menu que desea cambiar a true, y llamar al metodo Execute.

unidad de XpMenu
interfaz
usos
& nbsp & nbsp Windows, las Clases, los Graficos, los Menus
tipo
& nbsp & nbsp TXpMenu = clase(TComponent)
& nbsp & nbsp privada
& nbsp & nbsp & nbsp & 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 protegido
& nbsp & nbsp & nbsp & nbsp { declaraciones Protegidos }
& nbsp & nbsp publica
& nbsp & nbsp & nbsp & nbsp { Public declarations }
& nbsp & nbsp & nbsp & nbsp Procedimiento de Ejecucion
& nbsp & nbsp & nbsp & nbsp Procedimiento RemoveXPs
& nbsp & nbsp & nbsp & nbsp Constructor Create(AOwner:TComponent) reemplazar
& nbsp & nbsp publicado
& nbsp & nbsp & nbsp & nbsp { Publicado declaraciones }
& nbsp & nbsp & nbsp & nbsp procedimiento DefMenuDrawItem(Sender: TObject ACanvas: TCanvas
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ARect: TRect Seleccionado: Boolean)
& nbsp & nbsp & nbsp & nbsp procedimiento DefMenuMeasureItem(Sender: TObject ACanvas: TCanvas
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp var Ancho, Altura: Entero)
& nbsp & nbsp & nbsp & nbsp procedimiento DefMenuAdvancedDrawItem(Sender: TObject ACanvas: TCanvas
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ARect: TRect Estado: TOwnerDrawState)
& nbsp & nbsp & nbsp & nbsp propiedad SelectionColor:TColor leer FSelColor escribir FSelColor
& nbsp & nbsp & nbsp & nbsp propiedad SelectionFontColor: TColor leer FSelFontColor escribir FSelFontColor
& nbsp & nbsp & nbsp & nbsp propiedad NotSelectedFontColor: TColor leer FNotSelFontColor escribir FNotSelFontColor
& nbsp & nbsp & nbsp & nbsp propiedad NotActiveColor: TColor leer FNotActiveColor escribir FNotActiveColor
& nbsp & nbsp & nbsp & nbsp propiedad StripColor:TColor leer FStripColor escribir FStripColor
& nbsp & nbsp & nbsp & nbsp propiedad BackColor:TColor leer FBackColor escribir FBackColor
& nbsp & nbsp & nbsp & nbsp propiedad StripWidth:entero leer FStripWidth escribir FStripWidth
& nbsp & nbsp final
procedimiento de Registro
aplicacion
constructor TXpMenu.Create(AOwner:TComponent)
begin
& nbsp & nbsp inherited 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

procedimiento TXpMenu.DefMenuDrawItem(Sender: TObject ACanvas: TCanvas
& nbsp & nbsp ARect: TRect Seleccionado: Boolean)
const
& nbsp & nbsp cHotkeyPrefix=' & '
& nbsp & nbsp Alineaciones: array[TPopupAlignment] de la Palabra = (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 Banderas:integer
& nbsp & nbsp NotEnabled:boolean
& nbsp & nbsp Alineacion: TPopupAlignment
& nbsp & nbsp BitMp:TBitmap
begin
& nbsp & nbsp BitMp:=TBitmap.Crear
& nbsp & nbsp ParentMenu := TMenuItem(Remitente).GetParentMenu
& nbsp & nbsp NotEnabled:= TMenuItem(Remitente).Enabled = false
& nbsp & nbsp //outputdebugstring(pchar(string(ParentMenu.ClassName)))
& nbsp & nbsp si ParentMenu es TMenu, a continuacion,
& nbsp & nbsp & nbsp & nbsp Alineacion := paLeft
& nbsp & nbsp cosa si ParentMenu es TPopupMenu, a continuacion,
& nbsp & nbsp & nbsp & nbsp Alineacion := TPopupMenu(ParentMenu).Alineacion
& nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp Alineacion := paLeft
& nbsp & nbsp myBaseR.A La Izquierda:=ARect.A la izquierda
& nbsp & nbsp myBaseR.Derecha:=myBaseR.A la izquierda FStripWidth
& nbsp & nbsp myBaseR.Top:=ARect.La parte superior
& nbsp & nbsp myBaseR.Parte Inferior:=ARect.Inferior
& nbsp & nbsp Myrect.A La Izquierda:=ARect.A la izquierda FStripWidth
& nbsp & nbsp Myrect.Derecha:=ARect.A la derecha
& nbsp & nbsp Myrect.Top:=ARect.La parte superior
& nbsp & nbsp Myrect.Parte Inferior:=ARect.Inferior
& nbsp & nbsp mySrect.A La Izquierda:=ARect.A la izquierda
& nbsp & nbsp mySrect.Derecha:=ARect.A la derecha
& nbsp & nbsp mySrect.Top:=ARect.La parte superior
& nbsp & nbsp mySrect.Parte Inferior:=ARect.Inferior
& nbsp & nbsp si no ((Remitente como TMenuItem).El padre de familia.Name=')
& nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Cepillo.Color:=FStripColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.FillRect(myBaseR)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si no ((Remitente como TMenuItem).Caption='-') a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si se Selecciona, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Cepillo.Color:=FSelColor //clSilver
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.FillRect(Myrect)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Rectangulo(mySrect)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (Remitente como TMenuItem).Mapa de bits<>nil then
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp MyBrect.A La Izquierda:=ARect.A la izquierda 2
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp MyBrect.Derecha:=MyBrect.A la izquierda (Remitente como TMenuItem).Mapa de bits.Anchura
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp MyBrect.Top:=ARect.Top 2
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp MyBrect.Parte Inferior:=ARect.Parte superior (Remitente como TMenuItem).Mapa de bits.Altura
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Cepillo.Color:=FStripColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.FillRect(MyBrect)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //Si (Remitente como TMenuItem).ImageIndex>-1, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp // begin
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp // (ParentMenu como TMainMenu).Imagenes.GetBitmap((Remitente como TMenuItem).ImageIndex,(Remitente como TMenuItem).Mapa de bits)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp // fin
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Si (Remitente como TMenuItem).ImageIndex>-1, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if (ParentMenu es TMainMenu) a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si no ((ParentMenu como TMainMenu).Imagenes=nil) then
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp (ParentMenu como TMainMenu).Imagenes.GetBitmap((Remitente como TMenuItem).ImageIndex,BitMp)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si no ((ParentMenu como TPopupMenu).Imagenes=nil) then
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp (ParentMenu como TPopupMenu).Imagenes.GetBitmap((Remitente como TMenuItem).ImageIndex,BitMp)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Dibujar(mySrect.a la izquierda 2,arect.top 2,BitMp)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Dibujar(mySrect.a la izquierda,mySrect.la parte superior,(Remitente como TMenuItem).Mapa de bits)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Cepillo.Color:=FSelColor //clSilver
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Cepillo.Color:=FBackColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.FillRect(Myrect)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Si (Remitente como TMenuItem).ImageIndex>-1, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (ParentMenu es TMainMenu) a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si no ((ParentMenu como TMainMenu).Imagenes=nil) then
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp (ParentMenu como TMainMenu).Imagenes.GetBitmap((Remitente como TMenuItem).ImageIndex,BitMp)
// (ParentMenu como TMainMenu).Imagenes.GetBitmap((Remitente como TMenuItem).ImageIndex,(Remitente como TMenuItem).Mapa de bits)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si no ((ParentMenu como TPopupMenu).Imagenes=nil) then
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp (ParentMenu como TPopupMenu).Imagenes.GetBitmap((Remitente como TMenuItem).ImageIndex,BitMp)
// (ParentMenu como TPopupMenu).Imagenes.GetBitmap((Remitente como TMenuItem).ImageIndex,(Remitente como TMenuItem).Mapa de bits)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Dibujar(mySrect.a la izquierda 2,arect.top 2,BitMp)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Dibujar(mySrect.a la izquierda 2,arect.top 2,(Remitente como TMenuIte ).Mapa de bits)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Myrect.a la izquierda:=Myrect.left 4
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp myrect.top:=myrect.top 1
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp banderas:=DT_EXPANDTABS {o DT_SINGLELINE o DT_CALCRECT }o DT_NOCLIP o Alineaciones[Alineacion]
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si se Selecciona, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si NotEnabled, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Fuente.Color:=FNotActiveColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Fuente.Color:=FSelFontColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp DrawText(ACanvas.Manejar,pchar((Remitente como TMenuItem).Pie de foto),longitud((Remitente como TMenuItem).Pie De Foto),Myrect,Banderas)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si NotEnabled, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Fuente.Color:=FNotActiveColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Fuente.Color:=FNotSelFontColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp DrawText(ACanvas.Manejar,pchar((Remitente como TMenuItem).Pie de foto),longitud((Remitente como TMenuItem).Pie de foto),Myrect,Banderas)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si no (TMenuItem(Remitente).GetParentComponent es TMainMenu), a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //outputDebugstring(pchar( ))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Myrect.a la izquierda:=MyRect.haga ACanvas.TextWidth(shortcuttotext((Remitente como TMenuItem).acceso directo))-1
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si se Selecciona, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si NotEnabled, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Fuente.Color:=FNotActiveColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Fuente.Color:=FSelFontColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp DrawText(ACanvas.Manejar,pchar(shortcuttotext((Remitente como TMenuItem).acceso directo)),longitud(shortcuttotext((Remitente como TMenuItem).acceso directo)),Myrect,Banderas)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si NotEnabled, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Fuente.Color:=FNotActiveColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Fuente.Color:=FNotSelFontColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp DrawText(ACanvas.Manejar,pchar(shortcuttotext((Remitente como TMenuItem).acceso directo)),longitud(shortcuttotext((Remitente como TMenuItem).acceso directo)),Myrect,Banderas)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //ACanvas.TextOut(Myrect.A la izquierda 4,arect.top 1,(Remitente como TMenuItem).Pie de foto) // shortcuttotext((Remitente como TMenuItem).acceso directo))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Cepillo.Color:=FBackColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.FillRect(Myrect)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp myrect.top:=myrect.top 1
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp myrect.parte inferior:=myrect.top 1
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp myrect.A la izquierda:=myrect.A la izquierda 12
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Cepillo.Color:=FStripColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.FillRect(Myrect)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp BitMp.libre
fin
procedimiento TXpMenu.DefMenuMeasureItem(Sender: TObject ACanvas: TCanvas
& nbs & nbsp var Ancho, Altura: Entero)
begin
& nbsp & nbsp ancho:=ancho FStripWidth
& nbsp & nbsp si (no (shortcuttotext((Remitente como TMenuItem).Acceso directo)=')) o (TMenuItem(Remitente).GetParentComponent es TPopupMenu), a continuacion,
& nbsp & nbsp & nbsp & nbsp ancho:=ancho ACanvas.TextWidth(shortcuttotext((Remitente como TMenuItem).acceso directo))
fin
procedimiento TXpMenu.DefMenuAdvancedDrawItem(Sender: TObject ACanvas: TCanvas
& nbsp & nbsp ARect: TRect Estado: TOwnerDrawState)
const
& nbsp & nbsp cHotkeyPrefix=' & '

& nbsp & nbsp Alineaciones: array[TPopupAlignment] de la Palabra = (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 seleccionado:boolean
& nbsp & nbsp NotEnabled:boolean
& nbsp & nbsp pl:Array [0..3] de tpoint
& nbsp & nbsp ParentMenu:TMenu
& nbsp & nbsp Banderas:integer
& nbsp & nbsp Alineacion: TPopupAlignment
begin
& nbsp & nbsp ParentMenu := TMenuItem(Remitente).GetParentMenu
& nbsp & nbsp si ParentMenu es TMenu, a continuacion,
& nbsp & nbsp & nbsp & nbsp Alineacion := paLeft
& nbsp & nbsp cosa si ParentMenu es TPopupMenu, a continuacion,
& nbsp & nbsp & nbsp & nbsp Alineacion := TPopupMenu(ParentMenu).Alineacion
& nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp Alineacion := paLeft
& nbsp & nbsp Seleccionado := odSelected en Estado
& nbsp & nbsp NotEnabled:= odDisabled en Estado
& nbsp & nbsp myBaseR.A La Izquierda:=ARect.A la izquierda
& nbsp & nbsp myBaseR.Derecha:=myBaseR.A la izquierda FStripWidth
& nbsp & nbsp myBaseR.Top:=ARect.La parte superior
& nbsp & nbsp myBaseR.Parte Inferior:=ARect.Inferior
& nbsp & nbsp Myrect.A La Izquierda:=ARect.A la izquierda FStripWidth
& nbsp & nbsp Myrect.Derecha:=ARect.A la derecha
& nbsp & nbsp Myrect.Top:=ARect.La parte superior
& nbsp & nbsp Myrect.Parte Inferior:=ARect.Inferior
& nbsp & nbsp mySrect.A La Izquierda:=ARect.A la izquierda
& nbsp & nbsp mySrect.Derecha:=ARect.A la derecha
& nbsp & nbsp mySrect.Top:=ARect.La parte superior
& nbsp & nbsp mySrect.Parte Inferior:=ARect.Inferior
& 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.Cepillo.Color:=FStripColor
& nbsp & nbsp si (TMenuItem(Remitente).GetParentComponent es TPopupMenu), a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.FillRect(myBaseR)
& nbsp & nbsp si no ((Remitente como TMenuItem).Caption=' -'), a continuacion,
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if ((Remitente como TMenuItem).El padre de familia.Name=') a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si se Selecciona, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (TMenuItem(Remitente).GetParentComponent es TPopupMenu), a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Cepillo.Color:=FSelColor //clSilver
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.FillRect(mySrect)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Rectangulo(mySrect)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (Remitente como TMenuItem).Mapa de bits<>nil then
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp MyBrect.A La Izquierda:=ARect.A la izquierda 2
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp MyBrect.Derecha:=MyBrect.A la izquierda (Remitente como TMenuItem).Mapa de bits.Anchura
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp MyBrect.Top:=ARect.Top 2
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp MyBrect.Parte Inferior:=ARect.Parte superior (Remitente como TMenuItem).Mapa de bits.Altura
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Cepillo.Color:=FStripColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.FillRect(MyBrect)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Dibujar(mySrect.a la izquierda,mySrect.la parte superior,(Remitente como TMenuItem).Mapa de bits)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Cepillo.Color:=FSelColor //clSilver
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Cepillo.Color:=FBackColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.FillRect(mySrect)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Rectangulo(mySrect)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (TMenuItem(Remitente).GetParentComponent es TPopupMenu), a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.Cepillo.Color:=FBackColor
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ACanvas.FillRect(Myrect)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Si (Remitente como TMenuItem).ImageIndex>-1, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si no ((ParentMenu como TPopupMenu).

Dar a sus menús (personalizable) nuevo look con este componente

Dar a sus menús (personalizable) nuevo look con este componente : Multi-millones de consejos para hacer su vida más fácil.
Recommander aux amis
  • gplus
  • pinterest

Comentario

Dejar un comentario

Clasificación