Ownerdrawn-Menü


Ownerdrawn-Menüs
Die Ownerdraw-Eigenschaft von der TMainMenu auf True und dann für jede Änderung
TMenuItem soll zu benutzerdefinierten Zeichnen Durcheinander mit OnDrawItem und
OnMeasureItem. Ein Beispiel frei nach aus einem MSDN konvertiert
Beispiel:
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem; Datei
N2: TMenuItem; Datei -> Regular
N3: TMenuItem; Datei -> Fett
N4: TMenuItem; Datei -> kursiv
N5: TMenuItem; Datei -> Unterstreichung
Procedure N1DrawItem (Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Ausgewählten: Boolean);
Procedure N1MeasureItem (Sender: TObject; ACanvas: TCanvas;
Var Breite, Höhe: Integer);
...
Procedure TForm1.N1DrawItem (Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Ausgewählten: Boolean);
var
ClrPrevText: TColor;
ClrPrevBkgnd: TColor;
beginnen
Fall (Sender als TMenuItem). Menüindex von
1: ACanvas.Font.Style: = [FsBold];
2: ACanvas.Font.Style: = [FsItalic];
3: ACanvas.Font.Style: = [FsUnderline];
Ende;
Speichern die Vordergrund-und Hintergrundfarben.
ClrPrevText: = ACanvas.Font.Color;
ClrPrevBkgnd: = ACanvas.Brush.Color;

Legen Sie die geeigneten Farben für Vorder- und Hintergrund.
Wenn dann ausgewählt
beginnen
ACanvas.Font.Color: = ClHighlightText;
ACanvas.Brush.Color: = ClHighlight;
Ende
sonst
beginnen
ACanvas.Font.Color: = ClMenuText;
ACanvas.Brush.Color: = ClMenu;
Ende;
Bestimmung des Orts zu ziehen und lassen Raum für ein Häkchen.
ExtTextOut (ACanvas.Handle, ARect.Left +
GetSystemMetrics(SM_CXMENUCHECK), ARect.Top + 1,
ETO_OPAQUE, @ARect, PChar ((Sender als TMenuItem). Caption),
Länge ((Sender als TMenuItem). Caption), null);
Wiederherstellen der ursprünglichen Schriftart und Farben.
ACanvas.Font.Color: = ClrPrevText;
ACanvas.Brush.Color: = ClrPrevBkgnd;
ACanvas.Font.Style: = [];
Ende;
Procedure TForm1.N1MeasureItem (Sender: TObject; ACanvas: TCanvas;
Var Breite, Höhe: Integer);
var
Größe: TSize;
beginnen
GetTextExtentPoint32(ACanvas.Handle,
PChar ((Sender als TMenuItem). Caption),
Länge ((Sender als TMenuItem). Beschriftung), Größe);
Breite: = size.cx + 2 * GetSystemMetrics(SM_CXMENUCHECK);
Höhe: = size.cy + 5;
Ende;









Ownerdrawn-Menü


Ownerdrawn-Menü : Mehreren tausend Tipps, um Ihr Leben einfacher machen.


Ownerdrawn-Menüs
Die Ownerdraw-Eigenschaft von der TMainMenu auf True und dann für jede Änderung
TMenuItem soll zu benutzerdefinierten Zeichnen Durcheinander mit OnDrawItem und
OnMeasureItem. Ein Beispiel frei nach aus einem MSDN konvertiert
Beispiel:
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem; Datei
N2: TMenuItem; Datei -> Regular
N3: TMenuItem; Datei -> Fett
N4: TMenuItem; Datei -> kursiv
N5: TMenuItem; Datei -> Unterstreichung
Procedure N1DrawItem (Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Ausgewählten: Boolean);
Procedure N1MeasureItem (Sender: TObject; ACanvas: TCanvas;
Var Breite, Höhe: Integer);
...
Procedure TForm1.N1DrawItem (Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Ausgewählten: Boolean);
var
ClrPrevText: TColor;
ClrPrevBkgnd: TColor;
beginnen
Fall (Sender als TMenuItem). Menüindex von
1: ACanvas.Font.Style: = [FsBold];
2: ACanvas.Font.Style: = [FsItalic];
3: ACanvas.Font.Style: = [FsUnderline];
Ende;
Speichern die Vordergrund-und Hintergrundfarben.
ClrPrevText: = ACanvas.Font.Color;
ClrPrevBkgnd: = ACanvas.Brush.Color;

Legen Sie die geeigneten Farben für Vorder- und Hintergrund.
Wenn dann ausgewählt
beginnen
ACanvas.Font.Color: = ClHighlightText;
ACanvas.Brush.Color: = ClHighlight;
Ende
sonst
beginnen
ACanvas.Font.Color: = ClMenuText;
ACanvas.Brush.Color: = ClMenu;
Ende;
Bestimmung des Orts zu ziehen und lassen Raum für ein Häkchen.
ExtTextOut (ACanvas.Handle, ARect.Left +
GetSystemMetrics(SM_CXMENUCHECK), ARect.Top + 1,
ETO_OPAQUE, @ARect, PChar ((Sender als TMenuItem). Caption),
Länge ((Sender als TMenuItem). Caption), null);
Wiederherstellen der ursprünglichen Schriftart und Farben.
ACanvas.Font.Color: = ClrPrevText;
ACanvas.Brush.Color: = ClrPrevBkgnd;
ACanvas.Font.Style: = [];
Ende;
Procedure TForm1.N1MeasureItem (Sender: TObject; ACanvas: TCanvas;
Var Breite, Höhe: Integer);
var
Größe: TSize;
beginnen
GetTextExtentPoint32(ACanvas.Handle,
PChar ((Sender als TMenuItem). Caption),
Länge ((Sender als TMenuItem). Beschriftung), Größe);
Breite: = size.cx + 2 * GetSystemMetrics(SM_CXMENUCHECK);
Höhe: = size.cy + 5;
Ende;


Ownerdrawn-Menü

Ownerdrawn-Menü : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Ownerdrawn-Menü
Wiezutun
Freunden empfehlen
  • gplus
  • pinterest

Kommentar

Einen Kommentar hinterlassen

Wertung