Geben Sie Ihre Menüs einen (individuell konfigurierbar) neuen Look mit dieser Komponente


Erstellen Sie einen neuen Look für Ihre Menüs mit diesem VCL.
Legen Sie die Ownerdraw-Eigenschaft des Menüs in True ändern möchten, und rufen Sie die Execute-Methode auf.

Einheit XpMenu;
Schnittstelle
verwendet
Windows, Klassen, Grafiken, Menüs;
Typ
TXpMenu = class(TComponent)
Private
{Private Deklarationen}
FSelColor:TColor;
FStripColor:TColor;
FBackColor:TColor;
FStripWidth:integer;
FSelFontColor:TColor;
FNotSelFontColor:TColor;
FNotActiveColor:TColor;
geschützt
{Protected Deklarationen}
öffentliche
{Public Deklarationen}
Prozedur ausführen;
Prozedur RemoveXPs;
Überschreibung Konstruktor erstellen (AOwner:TComponent);
veröffentlicht
{Veröffentlichten Erklärungen}
Procedure DefMenuDrawItem (Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Ausgewählten: Boolean);
Procedure DefMenuMeasureItem (Sender: TObject; ACanvas: TCanvas;
Var Breite, Höhe: Integer);
Procedure DefMenuAdvancedDrawItem (Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Zustand: TOwnerDrawState);
Eigenschaft SelectionColor:TColor lesen FSelColor schreiben FSelColor;
Eigenschaft SelectionFontColor: TColor lesen FSelFontColor schreiben FSelFontColor;
Eigenschaft NotSelectedFontColor: TColor lesen FNotSelFontColor schreiben FNotSelFontColor;
Eigenschaft NotActiveColor: TColor lesen FNotActiveColor schreiben FNotActiveColor;
Eigenschaft StripColor:TColor lesen FStripColor schreiben FStripColor;
Eigenschaft BackColor:TColor lesen FBackColor schreiben FBackColor;
Eigenschaft StripWidth:integer lesen FStripWidth schreiben FStripWidth;
Ende;
Register des Verfahrens;
Umsetzung
Konstruktor TXpMenu.Create(AOwner:TComponent);
beginnen
geerbte Create(AOwner);
FSelFontColor: = ClWhite;
FSelColor: = $00FEC0D0;
FStripColor: = ClGray;
FBackColor: = ClWhite;
FNotSelFontColor: = ClBlack;
FNotActiveColor: = ClGray;
FStripWidth: = 20;
Ende;

Procedure TXpMenu.DefMenuDrawItem (Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Ausgewählten: Boolean);
const
cHotkeyPrefix = '&';
Ausrichtungen: array [TPopupAlignment] des Wortes = (DT_LEFT, DT_RIGHT, DT_CENTER);
var
MyBaseR:TRect;
MyRect:TRect;
MyBRect:TRect;
MySrect:TRect;
vCaption:String;
vColumn:integer;
ParentMenu:TMenu;
Flaggen: Ganzzahl;
NotEnabled:boolean;
Ausrichtung: TPopupAlignment;
BitMp:TBitmap;
beginnen
BitMp:=TBitmap.Create;
ParentMenu: = TMenuItem(Sender). GetParentMenu;
NotEnabled: = TMenuItem(Sender). Aktiviert = False;
OutputDebugString(PChar(String(ParentMenu.ClassName)));
Wenn ParentMenu TMenu dann ist
Ausrichtung: = PaLeft
sonst wenn ParentMenu TPopupMenu, dann ist
Ausrichtung: = TPopupMenu(ParentMenu). Ausrichtung
sonst
Ausrichtung: = PaLeft;
myBaseR.Left:=ARect.Left;
myBaseR.Right:=myBaseR.Left+FStripWidth;
myBaseR.Top:=ARect.Top;
myBaseR.Bottom:=ARect.Bottom;
Myrect.Left:=ARect.Left+FStripWidth;
Myrect.Right:=ARect.Right;
Myrect.Top:=ARect.Top;
Myrect.Bottom:=ARect.Bottom;
mySrect.Left:=ARect.Left;
mySrect.Right:=ARect.Right;
mySrect.Top:=ARect.Top;
mySrect.Bottom:=ARect.Bottom;
Wenn nicht ((Sender als TMenuItem). Parent.Name= cm) dann
beginnen
ACanvas.Brush.Color:=FStripColor;
ACanvas.FillRect(myBaseR);
Wenn nicht ((Sender als TMenuItem). Caption ='-') dann
beginnen
Wenn dann ausgewählt
beginnen
ACanvas.Brush.Color:=FSelColor;//clSilver;
ACanvas.FillRect(Myrect);
ACanvas.Rectangle(mySrect);
Wenn (Sender als TMenuItem). Bitmap-<> NULL dann
beginnen
MyBrect.Left:=ARect.Left+2;
MyBrect.Right:=MyBrect.Left+ (Sender als TMenuItem). Bitmap.Width;
MyBrect.Top:=ARect.Top+2;
MyBrect.Bottom:=ARect.Top+ (Sender als TMenuItem). Bitmap.Height;
ACanvas.Brush.Color:=FStripColor;
ACanvas.FillRect(MyBrect);
Wenn (Sender als TMenuItem). ImageIndex >-1 dann
beginnen
(ParentMenu als TMainMenu). Images.GetBitmap ((Sender als TMenuItem). ImageIndex (Sender als TMenuItem). Bitmap);
Ende;
Wenn (Sender als TMenuItem). ImageIndex >-1 dann
beginnen
if (ParentMenu TMainMenu) dann
beginnen
Wenn nicht ((ParentMenu als TMainMenu). Bilder = null) dann
(ParentMenu als TMainMenu). Images.GetBitmap ((Sender als TMenuItem). ImageIndex, BitMp);
Ende
sonst
beginnen
Wenn nicht ((ParentMenu als TPopupMenu). Bilder = null) dann
(ParentMenu als TPopupMenu). Images.GetBitmap ((Sender als TMenuItem). ImageIndex, BitMp);
Ende;
ACanvas.Draw(mySrect.left+2,arect.top+2,BitMp);
Ende
sonst
ACanvas.Draw (mySrect.left,mySrect.top, (senden R als TMenuItem). Bitmap);
ACanvas.Brush.Color:=FSelColor;//clSilver;
Ende;
Ende
sonst
beginnen
ACanvas.Brush.Color:=FBackColor;
ACanvas.FillRect(Myrect);
Wenn (Sender als TMenuItem). ImageIndex >-1 dann
beginnen
if (ParentMenu TMainMenu) dann
beginnen
Wenn nicht ((ParentMenu als TMainMenu). Bilder = null) dann
(ParentMenu als TMainMenu). Images.GetBitmap ((Sender als TMenuItem). ImageIndex, BitMp);
(ParentMenu als TMainMenu). Images.GetBitmap ((Sender als TMenuItem). ImageIndex (Sender als TMenuItem). Bitmap);
Ende
sonst
beginnen
Wenn nicht ((ParentMenu als TPopupMenu). Bilder = null) dann
(ParentMenu als TPopupMenu). Images.GetBitmap ((Sender als TMenuItem). ImageIndex, BitMp);
(ParentMenu als TPopupMenu). Images.GetBitmap ((Sender als TMenuItem). ImageIndex (Sender als TMenuItem). Bitmap);
Ende;
ACanvas.Draw(mySrect.left+2,arect.top+2,BitMp);
Ende
sonst
ACanvas.Draw (mySrect.left+2,arect.top+2, (Sender als TMenuItem). Bitmap);
Ende;
MyRect.Left:=myRect.Left+4;
myRect.Top:=myRect.Top+1;
Flaggen: = DT_EXPANDTABS {oder DT_SINGLELINE oder DT_CALCRECT} oder DT_NOCLIP oder Ausrichtungen [Ausrichtung];
Wenn dann ausgewählt
beginnen
Wenn NotEnabled dann
ACanvas.Font.Color:=FNotActiveColor
sonst
ACanvas.Font.Color:=FSelFontColor;
DrawText (ACanvas.Handle,pchar ((Sender als TMenuItem). Caption), Länge ((Sender als TMenuItem). Beschriftung), Myrect, Flags);
Ende
sonst
beginnen
Wenn NotEnabled dann
ACanvas.Font.Color:=FNotActiveColor
sonst
ACanvas.Font.Color:=FNotSelFontColor;
DrawText (ACanvas.Handle,pchar ((Sender als TMenuItem). Caption), Länge ((Sender als TMenuItem). Beschriftung), Myrect, Flags);
Ende;
Wenn nicht (TMenuItem(Sender). GetParentComponent ist TMainMenu) dann
beginnen
OutputDebugstring (Pchar ());
MyRect.Left:=MyRect.Right-ACanvas.TextWidth (Shortcuttotext ((Sender als TMenuItem) .shortcut))-1;
Wenn dann ausgewählt
beginnen
Wenn NotEnabled dann
ACanvas.Font.Color:=FNotActiveColor
sonst
ACanvas.Font.Color:=FSelFontColor;
DrawText (ACanvas.Handle,pchar (Shortcuttotext ((Sender als TMenuItem) .shortcut)), Länge (Shortcuttotext ((Sender als TMenuItem) .shortcut)), Myrect, Flags);
Ende
sonst
beginnen
Wenn NotEnabled dann
ACanvas.Font.Color:=FNotActiveColor
sonst
ACanvas.Font.Color:=FNotSelFontColor;
DrawText (ACanvas.Handle,pchar (Shortcuttotext ((Sender als TMenuItem) .shortcut)), Länge (Shortcuttotext ((Sender als TMenuItem) .shortcut)), Myrect, Flags);
Ende;
Ende;
ACanvas.TextOut (Myrect.Left+4,arect.top+1, (Sender als TMenuItem). Beschriftung); //+shortcuttotext ((Sender als TMenuItem) .shortcut));
Ende
sonst
beginnen
ACanvas.Brush.Color:=FBackColor;
ACanvas.FillRect(Myrect);
myRect.Top:=myRect.Top+1;
myRect.Bottom:=myRect.Top+1;
MyRect. Links: Myrect =. Links + 12;
ACanvas.Brush.Color:=FStripColor;
ACanvas.FillRect(Myrect);
Ende;
Ende;
BitMp.free;
Ende;
Procedure TXpMenu.DefMenuMeasureItem (Sender: TObject; ACanvas: TCanvas;
Var Breite, Höhe: Integer);
beginnen
Breite: = Breite + FStripWidth;
Wenn (nicht (Shortcuttotext ((Sender als TMenuItem). Kontextmenü) ='')) oder (TMenuItem(Sender). GetParentComponent ist TPopupMenu) dann
& nbsp width:=width+ACanvas.TextWidth (Shortcuttotext ((Sender als TMenuItem) .shortcut));
Ende;
Procedure TXpMenu.DefMenuAdvancedDrawItem (Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Zustand: TOwnerDrawState);
const
cHotkeyPrefix = '&';

Ausrichtungen: array [TPopupAlignment] des Wortes = (DT_LEFT, DT_RIGHT, DT_CENTER);
var
MyBaseR:TRect;
MyRect:TRect;
MyBRect:TRect;
MySrect:TRect;
ausgewählten: boolean;
NotEnabled:boolean;
PL:Array [0..3] von Tpoint;
ParentMenu:TMenu;
Flaggen: Ganzzahl;
Ausrichtung: TPopupAlignment;
beginnen
ParentMenu: = TMenuItem(Sender). GetParentMenu;
Wenn ParentMenu TMenu dann ist
Ausrichtung: = PaLeft
sonst wenn ParentMenu TPopupMenu, dann ist
Ausrichtung: = TPopupMenu(ParentMenu). Ausrichtung
sonst
Ausrichtung: = PaLeft;
Ausgewählt: = OdSelected im Zustand;
NotEnabled: = OdDisabled im Zustand;
myBaseR.Left:=ARect.Left;
myBaseR.Right:=myBaseR.Left+FStripWidth;
myBaseR.Top:=ARect.Top;
myBaseR.Bottom:=ARect.Bottom;
Myrect.Left:=ARect.Left+FStripWidth;
Myrect.Right:=ARect.Right;
Myrect.Top:=ARect.Top;
Myrect.Bottom:=ARect.Bottom;
mySrect.Left:=ARect.Left;
mySrect.Right:=ARect.Right;
mySrect.Top:=ARect.Top;
mySrect.Bottom:=ARect.Bottom;
.x pl [0]: = MySRect.Left;
.y pl [0]: = MySRect.Bottom;
pl[1]:=mySRect.TopLeft;
.x pl [2]: = MySRect.Right;
.y pl [2]: = MySRect.Top;
pl[3]:=mySRect.BottomRight;
ACanvas.Brush.Color:=FStripColor;
Wenn (TMenuItem(Sender). GetParentComponent ist TPopupMenu) dann
ACanvas.FillRect(myBaseR);
Wenn nicht ((Sender als TMenuItem). Caption ='-') dann
beginnen
Wenn ((Sender als TMenuItem). Parent.Name= cm) dann
beginnen
Wenn dann ausgewählt
beginnen
Wenn (TMenuItem(Sender). GetParentComponent ist TPopupMenu) dann
beginnen
ACanvas.Brush.Color:=FSelColor;//clSilver;
ACanvas.FillRect(mySrect);
ACanvas.Rectangle(mySrect);
Wenn (Sender als TMenuItem). Bitmap-<> NULL dann
beginnen
MyBrect.Left:=ARect.Left+2;
MyBrect.Right:=MyBrect.Left+ (Sender als TMenuItem). Bitmap.Width;
MyBrect.Top:=ARect.Top+2;
MyBrect.Bottom:=ARect.Top+ (Sender als TMenuItem). Bitmap.Height;
ACanvas.Brush.Color:=FStripColor;
ACanvas.FillRect(MyBrect);
ACanvas.Draw (mySrect.left,mySrect.top, (Sender als TMenuItem). Bitmap);
ACanvas.Brush.Color:=FSelColor;//clSilver;
Ende;
Ende
sonst
beginnen
ACanvas.Brush.Color:=FBackColor;
ACanvas.FillRect(mySrect);
ACanvas.Rectangle(mySrect);
Ende;
Ende
sonst
beginnen
Wenn (TMenuItem(Sender). GetParentComponent ist TPopupMenu) dann
beginnen
ACanvas.Brush.Color:=FBackColor;
ACanvas.FillRect(Myrect);
Wenn (Sender als TMenuItem). ImageIndex >-1 dann
beginnen
Wenn nicht ((ParentMenu als TPopupMenu). Bilder = null) dann
(ParentMenu als TPopupMenu). Images.GetBitmap ((Sender als TMenuItem). ImageIndex (Sender als TMenuItem). Bitmap);
Ende;
ACanvas.Draw (mySrect.left+2,arect.top+2, (Sender als TMenuItem). Bitmap);
Ende
sonst
beginnen
ACanvas.Brush.Color:=clBtnFace;
ACanvas.FillRect(mySrect);
Wenn OdHotLight dann im Zustand
beginnen
ACanvas.Brush.Color:=FSelColor;//clSilver;
ACanvas.FillRect(mySrect);
ACanvas.Rectangle(mySrect);
Ende;
Ende;
Ende;
mySrect.left:=mySrect.left+4;
mySrect.top:=mySrect.top+1;
Flaggen: = DT_EXPANDTABS {oder DT_SINGLELINE oder DT_CALCRECT} oder DT_NOCLIP oder Ausrichtungen [Ausrichtung];
Wenn nicht (TMenuItem(Sender). GetParentComp minenter ist TPopupMenu) dann
beginnen
Wenn dann ausgewählt
beginnen
Wenn NotEnabled dann
ACanvas.Font.Color:=FNotActiveColor
sonst
ACanvas.Font.Color:=FSelFontColor;
DrawText (ACanvas.Handle,pchar ((Sender als TMenuItem). Caption), Länge ((Sender als TMenuItem). Caption), MySrect, Flags)
Ende
sonst
beginnen
Wenn NotEnabled dann
ACanvas.Font.Color:=FNotActiveColor
sonst
ACanvas.Font.Color:=FNotSelFontColor;
DrawText (ACanvas.Handle,pchar ((Sender als TMenuItem). Caption), Länge ((Sender als TMenuItem). Caption), MySrect, Flags)
Ende;
Ende
sonst
beginnen
myRect.Left:=myRect.Left+4;
myRect.Top:=myRect.Top+1;
Wenn dann ausgewählt
beginnen
Wenn NotEnabled dann
ACanvas.Font.Color:=FNotActiveColor
sonst
ACanvas.Font.Color:=FSelFontColor;
DrawText (ACanvas.Handle,pchar ((Sender als TMenuItem). Caption), Länge ((Sender als TMenuItem). Caption), Myrect, Flags);
Ende
sonst
beginnen
Wenn NotEnabled dann
ACanvas.Font.Color:=FNotActiveColor
sonst
ACanvas.Font.Color:=FNotSelFontColor;
DrawText (ACanvas.Handle,pchar ((Sender als TMenuItem). Caption), Länge ((Sender als TMenuItem). Caption), Myrect, Flags);
Ende;
MyRect.Left:=MyRect.Right-ACanvas.TextWidth (Shortcuttotext ((Sender als TMenuItem) .shortcut))-1;
Wenn dann ausgewählt
beginnen
Wenn NotEnabled dann
ACanvas.Font.Color:=FNotActiveColor
sonst
ACanvas.Font.Color:=FSelFontColor;
DrawText (ACanvas.Handle,pchar (Shortcuttotext ((Sender als TMenuItem) .shortcut)), Länge (Shortcuttotext ((Sender als TMenuItem) .shortcut)), Myrect, Flags);
Ende
sonst
beginnen
Wenn NotEnabled dann
ACanvas.Font.Color:=FNotActiveColor
sonst
ACanvas.Font.Color:=FNotSelFontColor;
DrawText (ACanvas.Handle,pchar (Shortcuttotext ((Sender als TMenuItem) .shortcut)), Länge (Shortcuttotext ((Sender als TMenuItem) .shortcut)), Myrect, Flags);
Ende;
Ende;
ACanvas.TextOut (mySrect.Left+4,mySrect.top+1, (Sender als TMenuItem). Caption);
Ende;
Ende
sonst
beginnen
ACanvas.Brush.Color:=FBackColor;
ACanvas.FillRect(Myrect);
myRect.Top:=myRect.Top+1;
myRect.Bottom:=myRect.Top+1;
MyRect. Links: Myrect =. Links + 12;
ACanvas.Brush.Color:=FStripColor;
ACanvas.FillRect(Myrect);
Ende;
Ende;
Prozedur TXpMenu.RemoveXPs;
var
I:Integer;
beginnen
mit Eigentümer-do
beginnen
für i: = 0 to ComponentCount-1
beginnen
Wenn Komponenten [i] ist dann TMenuItem.
beginnen
(Komponenten [i] als TMenuItem). OnDrawItem: = Nil;
(Komponenten [i] als TMenuItem). OnMeasureItem: = Nil;
(Komponenten [i] als TMenuItem). OnAdvancedDrawItem: = Nil;
Ende;
Ende;
Ende;
Ende;
Prozedur TXpMenu.Execute;
var
I:Integer;
beginnen
mit Eigentümer-do
beginnen
für i: = 0 to ComponentCount-1
beginnen
Wenn Komponenten [i] ist dann TMenuItem.

> beginnen
(Komponenten [i] als TMenuItem). OnDrawItem:=Self.DefMenuDrawItem;
(Komponenten [i] als TMenuItem). OnMeasureItem:=Self.DefMenuMeasureItem;
(Komponenten [i] als TMenuItem). OnAdvancedDrawItem:=Self.DefMenuAdvancedDrawItem;
Ende;
Ende;
Ende;
Ende;
Register des Verfahrens;
beginnen
RegisterComponents ('VNPVcls', [TXpMenu]);
Ende;
Ende.









Geben Sie Ihre Menüs einen (individuell konfigurierbar) neuen Look mit dieser Komponente


Geben Sie Ihre Menüs einen (individuell konfigurierbar) neuen Look mit dieser Komponente : Mehreren tausend Tipps, um Ihr Leben einfacher machen.


Erstellen Sie einen neuen Look für Ihre Menüs mit diesem VCL.
Legen Sie die Ownerdraw-Eigenschaft des Menüs in True ändern möchten, und rufen Sie die Execute-Methode auf.

Einheit XpMenu;
Schnittstelle
verwendet
Windows, Klassen, Grafiken, Menüs;
Typ
TXpMenu = class(TComponent)
Private
{Private Deklarationen}
FSelColor:TColor;
FStripColor:TColor;
FBackColor:TColor;
FStripWidth:integer;
FSelFontColor:TColor;
FNotSelFontColor:TColor;
FNotActiveColor:TColor;
geschützt
{Protected Deklarationen}
öffentliche
{Public Deklarationen}
Prozedur ausführen;
Prozedur RemoveXPs;
Überschreibung Konstruktor erstellen (AOwner:TComponent);
veröffentlicht
{Veröffentlichten Erklärungen}
Procedure DefMenuDrawItem (Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Ausgewählten: Boolean);
Procedure DefMenuMeasureItem (Sender: TObject; ACanvas: TCanvas;
Var Breite, Höhe: Integer);
Procedure DefMenuAdvancedDrawItem (Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Zustand: TOwnerDrawState);
Eigenschaft SelectionColor:TColor lesen FSelColor schreiben FSelColor;
Eigenschaft SelectionFontColor: TColor lesen FSelFontColor schreiben FSelFontColor;
Eigenschaft NotSelectedFontColor: TColor lesen FNotSelFontColor schreiben FNotSelFontColor;
Eigenschaft NotActiveColor: TColor lesen FNotActiveColor schreiben FNotActiveColor;
Eigenschaft StripColor:TColor lesen FStripColor schreiben FStripColor;
Eigenschaft BackColor:TColor lesen FBackColor schreiben FBackColor;
Eigenschaft StripWidth:integer lesen FStripWidth schreiben FStripWidth;
Ende;
Register des Verfahrens;
Umsetzung
Konstruktor TXpMenu.Create(AOwner:TComponent);
beginnen
geerbte Create(AOwner);
FSelFontColor: = ClWhite;
FSelColor: = $00FEC0D0;
FStripColor: = ClGray;
FBackColor: = ClWhite;
FNotSelFontColor: = ClBlack;
FNotActiveColor: = ClGray;
FStripWidth: = 20;
Ende;

Procedure TXpMenu.DefMenuDrawItem (Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Ausgewählten: Boolean);
const
cHotkeyPrefix = '&';
Ausrichtungen: array [TPopupAlignment] des Wortes = (DT_LEFT, DT_RIGHT, DT_CENTER);
var
MyBaseR:TRect;
MyRect:TRect;
MyBRect:TRect;
MySrect:TRect;
vCaption:String;
vColumn:integer;
ParentMenu:TMenu;
Flaggen: Ganzzahl;
NotEnabled:boolean;
Ausrichtung: TPopupAlignment;
BitMp:TBitmap;
beginnen
BitMp:=TBitmap.Create;
ParentMenu: = TMenuItem(Sender). GetParentMenu;
NotEnabled: = TMenuItem(Sender). Aktiviert = False;
OutputDebugString(PChar(String(ParentMenu.ClassName)));
Wenn ParentMenu TMenu dann ist
Ausrichtung: = PaLeft
sonst wenn ParentMenu TPopupMenu, dann ist
Ausrichtung: = TPopupMenu(ParentMenu). Ausrichtung
sonst
Ausrichtung: = PaLeft;
myBaseR.Left:=ARect.Left;
myBaseR.Right:=myBaseR.Left+FStripWidth;
myBaseR.Top:=ARect.Top;
myBaseR.Bottom:=ARect.Bottom;
Myrect.Left:=ARect.Left+FStripWidth;
Myrect.Right:=ARect.Right;
Myrect.Top:=ARect.Top;
Myrect.Bottom:=ARect.Bottom;
mySrect.Left:=ARect.Left;
mySrect.Right:=ARect.Right;
mySrect.Top:=ARect.Top;
mySrect.Bottom:=ARect.Bottom;
Wenn nicht ((Sender als TMenuItem). Parent.Name= cm) dann
beginnen
ACanvas.Brush.Color:=FStripColor;
ACanvas.FillRect(myBaseR);
Wenn nicht ((Sender als TMenuItem). Caption ='-') dann
beginnen
Wenn dann ausgewählt
beginnen
ACanvas.Brush.Color:=FSelColor;//clSilver;
ACanvas.FillRect(Myrect);
ACanvas.Rectangle(mySrect);
Wenn (Sender als TMenuItem). Bitmap-<> NULL dann
beginnen
MyBrect.Left:=ARect.Left+2;
MyBrect.Right:=MyBrect.Left+ (Sender als TMenuItem). Bitmap.Width;
MyBrect.Top:=ARect.Top+2;
MyBrect.Bottom:=ARect.Top+ (Sender als TMenuItem). Bitmap.Height;
ACanvas.Brush.Color:=FStripColor;
ACanvas.FillRect(MyBrect);
Wenn (Sender als TMenuItem). ImageIndex >-1 dann
beginnen
(ParentMenu als TMainMenu). Images.GetBitmap ((Sender als TMenuItem). ImageIndex (Sender als TMenuItem). Bitmap);
Ende;
Wenn (Sender als TMenuItem). ImageIndex >-1 dann
beginnen
if (ParentMenu TMainMenu) dann
beginnen
Wenn nicht ((ParentMenu als TMainMenu). Bilder = null) dann
(ParentMenu als TMainMenu). Images.GetBitmap ((Sender als TMenuItem). ImageIndex, BitMp);
Ende
sonst
beginnen
Wenn nicht ((ParentMenu als TPopupMenu). Bilder = null) dann
(ParentMenu als TPopupMenu). Images.GetBitmap ((Sender als TMenuItem). ImageIndex, BitMp);
Ende;
ACanvas.Draw(mySrect.left+2,arect.top+2,BitMp);
Ende
sonst
ACanvas.Draw (mySrect.left,mySrect.top, (senden R als TMenuItem). Bitmap);
ACanvas.Brush.Color:=FSelColor;//clSilver;
Ende;
Ende
sonst
beginnen
ACanvas.Brush.Color:=FBackColor;
ACanvas.FillRect(Myrect);
Wenn (Sender als TMenuItem). ImageIndex >-1 dann
beginnen
if (ParentMenu TMainMenu) dann
beginnen
Wenn nicht ((ParentMenu als TMainMenu). Bilder = null) dann
(ParentMenu als TMainMenu). Images.GetBitmap ((Sender als TMenuItem). ImageIndex, BitMp);
(ParentMenu als TMainMenu). Images.GetBitmap ((Sender als TMenuItem). ImageIndex (Sender als TMenuItem). Bitmap);
Ende
sonst
beginnen
Wenn nicht ((ParentMenu als TPopupMenu). Bilder = null) dann
(ParentMenu als TPopupMenu). Images.GetBitmap ((Sender als TMenuItem). ImageIndex, BitMp);
(ParentMenu als TPopupMenu). Images.GetBitmap ((Sender als TMenuItem). ImageIndex (Sender als TMenuItem). Bitmap);
Ende;
ACanvas.Draw(mySrect.left+2,arect.top+2,BitMp);
Ende
sonst
ACanvas.Draw (mySrect.left+2,arect.top+2, (Sender als TMenuItem). Bitmap);
Ende;
MyRect.Left:=myRect.Left+4;
myRect.Top:=myRect.Top+1;
Flaggen: = DT_EXPANDTABS {oder DT_SINGLELINE oder DT_CALCRECT} oder DT_NOCLIP oder Ausrichtungen [Ausrichtung];
Wenn dann ausgewählt
beginnen
Wenn NotEnabled dann
ACanvas.Font.Color:=FNotActiveColor
sonst
ACanvas.Font.Color:=FSelFontColor;
DrawText (ACanvas.Handle,pchar ((Sender als TMenuItem). Caption), Länge ((Sender als TMenuItem). Beschriftung), Myrect, Flags);
Ende
sonst
beginnen
Wenn NotEnabled dann
ACanvas.Font.Color:=FNotActiveColor
sonst
ACanvas.Font.Color:=FNotSelFontColor;
DrawText (ACanvas.Handle,pchar ((Sender als TMenuItem). Caption), Länge ((Sender als TMenuItem). Beschriftung), Myrect, Flags);
Ende;
Wenn nicht (TMenuItem(Sender). GetParentComponent ist TMainMenu) dann
beginnen
OutputDebugstring (Pchar ());
MyRect.Left:=MyRect.Right-ACanvas.TextWidth (Shortcuttotext ((Sender als TMenuItem) .shortcut))-1;
Wenn dann ausgewählt
beginnen
Wenn NotEnabled dann
ACanvas.Font.Color:=FNotActiveColor
sonst
ACanvas.Font.Color:=FSelFontColor;
DrawText (ACanvas.Handle,pchar (Shortcuttotext ((Sender als TMenuItem) .shortcut)), Länge (Shortcuttotext ((Sender als TMenuItem) .shortcut)), Myrect, Flags);
Ende
sonst
beginnen
Wenn NotEnabled dann
ACanvas.Font.Color:=FNotActiveColor
sonst
ACanvas.Font.Color:=FNotSelFontColor;
DrawText (ACanvas.Handle,pchar (Shortcuttotext ((Sender als TMenuItem) .shortcut)), Länge (Shortcuttotext ((Sender als TMenuItem) .shortcut)), Myrect, Flags);
Ende;
Ende;
ACanvas.TextOut (Myrect.Left+4,arect.top+1, (Sender als TMenuItem). Beschriftung); //+shortcuttotext ((Sender als TMenuItem) .shortcut));
Ende
sonst
beginnen
ACanvas.Brush.Color:=FBackColor;
ACanvas.FillRect(Myrect);
myRect.Top:=myRect.Top+1;
myRect.Bottom:=myRect.Top+1;
MyRect. Links: Myrect =. Links + 12;
ACanvas.Brush.Color:=FStripColor;
ACanvas.FillRect(Myrect);
Ende;
Ende;
BitMp.free;
Ende;
Procedure TXpMenu.DefMenuMeasureItem (Sender: TObject; ACanvas: TCanvas;
Var Breite, Höhe: Integer);
beginnen
Breite: = Breite + FStripWidth;
Wenn (nicht (Shortcuttotext ((Sender als TMenuItem). Kontextmenü) ='')) oder (TMenuItem(Sender). GetParentComponent ist TPopupMenu) dann
& nbsp width:=width+ACanvas.TextWidth (Shortcuttotext ((Sender als TMenuItem) .shortcut));
Ende;
Procedure TXpMenu.DefMenuAdvancedDrawItem (Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Zustand: TOwnerDrawState);
const
cHotkeyPrefix = '&';

Ausrichtungen: array [TPopupAlignment] des Wortes = (DT_LEFT, DT_RIGHT, DT_CENTER);
var
MyBaseR:TRect;
MyRect:TRect;
MyBRect:TRect;
MySrect:TRect;
ausgewählten: boolean;
NotEnabled:boolean;
PL:Array [0..3] von Tpoint;
ParentMenu:TMenu;
Flaggen: Ganzzahl;
Ausrichtung: TPopupAlignment;
beginnen
ParentMenu: = TMenuItem(Sender). GetParentMenu;
Wenn ParentMenu TMenu dann ist
Ausrichtung: = PaLeft
sonst wenn ParentMenu TPopupMenu, dann ist
Ausrichtung: = TPopupMenu(ParentMenu). Ausrichtung
sonst
Ausrichtung: = PaLeft;
Ausgewählt: = OdSelected im Zustand;
NotEnabled: = OdDisabled im Zustand;
myBaseR.Left:=ARect.Left;
myBaseR.Right:=myBaseR.Left+FStripWidth;
myBaseR.Top:=ARect.Top;
myBaseR.Bottom:=ARect.Bottom;
Myrect.Left:=ARect.Left+FStripWidth;
Myrect.Right:=ARect.Right;
Myrect.Top:=ARect.Top;
Myrect.Bottom:=ARect.Bottom;
mySrect.Left:=ARect.Left;
mySrect.Right:=ARect.Right;
mySrect.Top:=ARect.Top;
mySrect.Bottom:=ARect.Bottom;
.x pl [0]: = MySRect.Left;
.y pl [0]: = MySRect.Bottom;
pl[1]:=mySRect.TopLeft;
.x pl [2]: = MySRect.Right;
.y pl [2]: = MySRect.Top;
pl[3]:=mySRect.BottomRight;
ACanvas.Brush.Color:=FStripColor;
Wenn (TMenuItem(Sender). GetParentComponent ist TPopupMenu) dann
ACanvas.FillRect(myBaseR);
Wenn nicht ((Sender als TMenuItem). Caption ='-') dann
beginnen
Wenn ((Sender als TMenuItem). Parent.Name= cm) dann
beginnen
Wenn dann ausgewählt
beginnen
Wenn (TMenuItem(Sender). GetParentComponent ist TPopupMenu) dann
beginnen
ACanvas.Brush.Color:=FSelColor;//clSilver;
ACanvas.FillRect(mySrect);
ACanvas.Rectangle(mySrect);
Wenn (Sender als TMenuItem). Bitmap-<> NULL dann
beginnen
MyBrect.Left:=ARect.Left+2;
MyBrect.Right:=MyBrect.Left+ (Sender als TMenuItem). Bitmap.Width;
MyBrect.Top:=ARect.Top+2;
MyBrect.Bottom:=ARect.Top+ (Sender als TMenuItem). Bitmap.Height;
ACanvas.Brush.Color:=FStripColor;
ACanvas.FillRect(MyBrect);
ACanvas.Draw (mySrect.left,mySrect.top, (Sender als TMenuItem). Bitmap);
ACanvas.Brush.Color:=FSelColor;//clSilver;
Ende;
Ende
sonst
beginnen
ACanvas.Brush.Color:=FBackColor;
ACanvas.FillRect(mySrect);
ACanvas.Rectangle(mySrect);
Ende;
Ende
sonst
beginnen
Wenn (TMenuItem(Sender). GetParentComponent ist TPopupMenu) dann
beginnen
ACanvas.Brush.Color:=FBackColor;
ACanvas.FillRect(Myrect);
Wenn (Sender als TMenuItem). ImageIndex >-1 dann
beginnen
Wenn nicht ((ParentMenu als TPopupMenu). Bilder = null) dann
(ParentMenu als TPopupMenu). Images.GetBitmap ((Sender als TMenuItem). ImageIndex (Sender als TMenuItem). Bitmap);
Ende;
ACanvas.Draw (mySrect.left+2,arect.top+2, (Sender als TMenuItem). Bitmap);
Ende
sonst
beginnen
ACanvas.Brush.Color:=clBtnFace;
ACanvas.FillRect(mySrect);
Wenn OdHotLight dann im Zustand
beginnen
ACanvas.Brush.Color:=FSelColor;//clSilver;
ACanvas.FillRect(mySrect);
ACanvas.Rectangle(mySrect);
Ende;
Ende;
Ende;
mySrect.left:=mySrect.left+4;
mySrect.top:=mySrect.top+1;
Flaggen: = DT_EXPANDTABS {oder DT_SINGLELINE oder DT_CALCRECT} oder DT_NOCLIP oder Ausrichtungen [Ausrichtung];
Wenn nicht (TMenuItem(Sender). GetParentComp minenter ist TPopupMenu) dann
beginnen
Wenn dann ausgewählt
beginnen
Wenn NotEnabled dann
ACanvas.Font.Color:=FNotActiveColor
sonst
ACanvas.Font.Color:=FSelFontColor;
DrawText (ACanvas.Handle,pchar ((Sender als TMenuItem). Caption), Länge ((Sender als TMenuItem). Caption), MySrect, Flags)
Ende
sonst
beginnen
Wenn NotEnabled dann
ACanvas.Font.Color:=FNotActiveColor
sonst
ACanvas.Font.Color:=FNotSelFontColor;
DrawText (ACanvas.Handle,pchar ((Sender als TMenuItem). Caption), Länge ((Sender als TMenuItem). Caption), MySrect, Flags)
Ende;
Ende
sonst
beginnen
myRect.Left:=myRect.Left+4;
myRect.Top:=myRect.Top+1;
Wenn dann ausgewählt
beginnen
Wenn NotEnabled dann
ACanvas.Font.Color:=FNotActiveColor
sonst
ACanvas.Font.Color:=FSelFontColor;
DrawText (ACanvas.Handle,pchar ((Sender als TMenuItem). Caption), Länge ((Sender als TMenuItem). Caption), Myrect, Flags);
Ende
sonst
beginnen
Wenn NotEnabled dann
ACanvas.Font.Color:=FNotActiveColor
sonst
ACanvas.Font.Color:=FNotSelFontColor;
DrawText (ACanvas.Handle,pchar ((Sender als TMenuItem). Caption), Länge ((Sender als TMenuItem). Caption), Myrect, Flags);
Ende;
MyRect.Left:=MyRect.Right-ACanvas.TextWidth (Shortcuttotext ((Sender als TMenuItem) .shortcut))-1;
Wenn dann ausgewählt
beginnen
Wenn NotEnabled dann
ACanvas.Font.Color:=FNotActiveColor
sonst
ACanvas.Font.Color:=FSelFontColor;
DrawText (ACanvas.Handle,pchar (Shortcuttotext ((Sender als TMenuItem) .shortcut)), Länge (Shortcuttotext ((Sender als TMenuItem) .shortcut)), Myrect, Flags);
Ende
sonst
beginnen
Wenn NotEnabled dann
ACanvas.Font.Color:=FNotActiveColor
sonst
ACanvas.Font.Color:=FNotSelFontColor;
DrawText (ACanvas.Handle,pchar (Shortcuttotext ((Sender als TMenuItem) .shortcut)), Länge (Shortcuttotext ((Sender als TMenuItem) .shortcut)), Myrect, Flags);
Ende;
Ende;
ACanvas.TextOut (mySrect.Left+4,mySrect.top+1, (Sender als TMenuItem). Caption);
Ende;
Ende
sonst
beginnen
ACanvas.Brush.Color:=FBackColor;
ACanvas.FillRect(Myrect);
myRect.Top:=myRect.Top+1;
myRect.Bottom:=myRect.Top+1;
MyRect. Links: Myrect =. Links + 12;
ACanvas.Brush.Color:=FStripColor;
ACanvas.FillRect(Myrect);
Ende;
Ende;
Prozedur TXpMenu.RemoveXPs;
var
I:Integer;
beginnen
mit Eigentümer-do
beginnen
für i: = 0 to ComponentCount-1
beginnen
Wenn Komponenten [i] ist dann TMenuItem.
beginnen
(Komponenten [i] als TMenuItem). OnDrawItem: = Nil;
(Komponenten [i] als TMenuItem). OnMeasureItem: = Nil;
(Komponenten [i] als TMenuItem). OnAdvancedDrawItem: = Nil;
Ende;
Ende;
Ende;
Ende;
Prozedur TXpMenu.Execute;
var
I:Integer;
beginnen
mit Eigentümer-do
beginnen
für i: = 0 to ComponentCount-1
beginnen
Wenn Komponenten [i] ist dann TMenuItem.

> beginnen
(Komponenten [i] als TMenuItem). OnDrawItem:=Self.DefMenuDrawItem;
(Komponenten [i] als TMenuItem). OnMeasureItem:=Self.DefMenuMeasureItem;
(Komponenten [i] als TMenuItem). OnAdvancedDrawItem:=Self.DefMenuAdvancedDrawItem;
Ende;
Ende;
Ende;
Ende;
Register des Verfahrens;
beginnen
RegisterComponents ('VNPVcls', [TXpMenu]);
Ende;
Ende.


Geben Sie Ihre Menüs einen (individuell konfigurierbar) neuen Look mit dieser Komponente

Geben Sie Ihre Menüs einen (individuell konfigurierbar) neuen Look mit dieser Komponente : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Geben Sie Ihre Menüs einen (individuell konfigurierbar) neuen Look mit dieser Komponente
Wiezutun
Freunden empfehlen
  • gplus
  • pinterest

Kommentar

Einen Kommentar hinterlassen

Wertung