![]() |
Breite eines PopUpMenüs ermitteln
Wie kann man die Breite und Höhe eines Popupmenus ermitteln, die es geöffnet auf dem Bildschirm einnimmt?
|
Re: Breite eines PopUpMenüs ermitteln
Die Eigenschaft OwnerDraw des PopUpMenus auf True;
In einem der MenuItems das Ereignis OnMeasureItem abfragen, dort ist Width und Height abgreifbar ! Height * Anzahl Items ergibt die Gesamthöhe ! |
Re: Breite eines PopUpMenüs ermitteln
leider ist es da schon zu spät, da ich vor dem Popup wissen muss, wie Breit es wird. dementsprechend soll der Popuppunkt angepasst werden
|
Re: Breite eines PopUpMenüs ermitteln
Versuch mal das (Allerdings nicht getestet)
Mglw müssen da noch ein paar Pixel dazu ! [EDIT] Überarbeitete Version !
Delphi-Quellcode:
function GetPopUpMenuWidth(PopUpMenu : TPopUpMenu; Canvas : TCanvas) : Integer;
var i : Integer; LongestCaption : Integer; begin LongestCaption := -1; Result := 0; for i := 0 to PopUpMenu.Items.Count -1 do if LongestCaption < length(TMenuItem(PopUpMenu.Items[i]).Caption) then begin LongestCaption := length(TMenuItem(PopUpMenu.Items[i]).Caption); Result := Canvas.TextWidth(TMenuItem(PopUpMenu.Items[i]).Caption ); end; end; function GetPopUpMenuHeight(PopUpMenu : TPopUpMenu; Canvas : TCanvas) : Integer; begin Result := 0; if PopUpMenu.Items.Count > 0 then Result := Canvas.TextHeight(PopUpMenu.Items[0].Caption) + 21 * PopUpMenu.Items.Count; end; procedure TForm1.Button1Click(Sender: TObject); begin showmessage(Inttostr(GetPopUpMenuWidth(PopUpMenu1,Canvas))); showmessage(Inttostr(GetPopUpMenuHeight(PopUpMenu1,Canvas))); end; |
Re: Breite eines PopUpMenüs ermitteln
Hallo Sven,
Zitat:
Grüße vom marabu |
Re: Breite eines PopUpMenüs ermitteln
Liste der Anhänge anzeigen (Anzahl: 2)
schau euch mal die Bilder im Anhang an. das popupmenu erscheint, wenn ich auf den Button klicke per PopUp(x,y)
2. Bild (aufnahme1) ist optimal, weil das Fenster am rechten Bildschirmrand klebt verschiebe ich das fenster nach links kommt der Zustand im 1. Bild (aufnahme2) zustande. Das sie blöd aus ich brauch die Breite des Popupmenus, damit ich immer das richtige x berechnen kann. Mit der Höhe klappt es schon. (9 + Item.Count*19) |
Re: Breite eines PopUpMenüs ermitteln
Wenn du dein PopupMenü grundsätzlich am rechten Fensterrand ausrichten willst, dann kannst du auch PopupMenu.Alignment auf paRight setzen...
marabu |
Re: Breite eines PopUpMenüs ermitteln
sag das doch gleich :-D
aber viele Wege führen nach Rom, meine in eine Sackgasse |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 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 by Thomas Breitkreuz