![]() |
Wie kann ich die Breite eines TPopupMenu festlegen?
Hallo!
Wie kann ich die Breite eines Popup-Menüs festlegen? Ich möchte es in Verbindung mit einem TButton auf die selbe Breite bringen. Danke. |
Re: Wie kann ich die Breite eines TPopupMenu festlegen?
Die Breite des StandardPopups von Windows kann nicht verändert werden. Diese berechnet Windows anhand der eingetragenen Menupunkte.
|
Re: Wie kann ich die Breite eines TPopupMenu festlegen?
Kann ich denn OnDrawItem nutzen um das ARect zu verändern?
Delphi-Quellcode:
OnDrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; Selected: Boolean);
var a: TRect; begin a := ARect; a.Right := 200; inherited; // geht nicht, wie rufe ich die ursprüngliche DrawItem Prozedur auf? end; |
Re: Wie kann ich die Breite eines TPopupMenu festlegen?
:gruebel: Dein Menu hat ein onDrawItem-Ereignis?
Das scheint was neues zu sein. Aber ich habe noch nicht gesehen, dass Windows hier das Zepter abgibt. |
Re: Wie kann ich die Breite eines TPopupMenu festlegen?
Hallo,
TMenuItem.OnMeasureItem ist das richtige Ereignis - vorausgesetzt, beim PopupMenu ist das Flag OwnerDraw gesetzt. Gruß Hawkeye |
Re: Wie kann ich die Breite eines TPopupMenu festlegen?
Tatsächlich, geht super einfach und die Zeichenfunktion bleibt auch erhalten (ich muss also nicht per Hand zeichnen):
Beim PopupMenu OwnerDraw auf True, bei allen TMenuItems bei OnMeasureItem die Prozedur verlinken:
Delphi-Quellcode:
Einwandfrei gelöst, vielen Dank, Hawkeye!
procedure TForm1.MyMeasureItem(Sender: TObject; ACanvas: TCanvas; var Width, Height: Integer);
begin Width := 200; // Oder eigenen Wert, ist ja klar end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz