Ich habe ein PopupMenu mit sehr vielen Einträgen (100+)
Das ist extrem umständlich zu bedienen.
Jetzt habe ich mir eine TPopupSearchForm gebastelt mit einem Edit zum filtern und einer Listbox mit den Einträgen, welche ich anstelle des Menus anzeigen möchte.
Ich konnte bislang nicht herausfinden, wo der übergeordnete Menüpunkt gezeichnet wird, damit ich diese Form platzieren kann.
Position von MenuItem ermitteln?
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1779
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
- Zvoni
- Beiträge: 670
- Registriert: Fr 5. Jul 2024, 08:26
- OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
- CPU-Target: 64Bit
- Wohnort: BW
Re: Position von MenuItem ermitteln?
PopupMenu hat eine PopupPoint-Eigenschaft.
https://lazarus-ccr.sourceforge.io/docs ... point.html
Desweiteren hat das TMenuItem (was ja erst einen Menü-Eintrag selbst darstellt) ein OnMeasureItem-Ereignis
https://lazarus-ccr.sourceforge.io/docs ... eitem.html
https://lazarus-ccr.sourceforge.io/docs ... point.html
Desweiteren hat das TMenuItem (was ja erst einen Menü-Eintrag selbst darstellt) ein OnMeasureItem-Ereignis
https://lazarus-ccr.sourceforge.io/docs ... eitem.html
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1779
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: Position von MenuItem ermitteln?
Mein MenuItem ist ja ein Untermenü von dem Popupmenü. Von dem her ist der PopupPoint die falsche Position.Zvoni hat geschrieben: Do 7. Mai 2026, 11:03 PopupMenu hat eine PopupPoint-Eigenschaft.
https://lazarus-ccr.sourceforge.io/docs ... point.html
Desweiteren hat das TMenuItem (was ja erst einen Menü-Eintrag selbst darstellt) ein OnMeasureItem-Ereignis
https://lazarus-ccr.sourceforge.io/docs ... eitem.html
OnMeasureItem gibt mir die Breite und die Höhe des MenuItems aber nicht die Position am Bildschirm wo es gezeigt wurde/wird.
Ich nehme jetzt einfach die Position vom Mauszeiger.
Das geht auch einigermassen.
- Zvoni
- Beiträge: 670
- Registriert: Fr 5. Jul 2024, 08:26
- OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
- CPU-Target: 64Bit
- Wohnort: BW
Re: Position von MenuItem ermitteln?
PopupPoint ist die Position wo das Popup-Menü selbst "auftauchen" würde (wahrscheinlich linke obere Ecke des Popups. Nicht sicher)fliegermichl hat geschrieben: Do 7. Mai 2026, 11:36Mein MenuItem ist ja ein Untermenü von dem Popupmenü. Von dem her ist der PopupPoint die falsche Position.Zvoni hat geschrieben: Do 7. Mai 2026, 11:03 PopupMenu hat eine PopupPoint-Eigenschaft.
https://lazarus-ccr.sourceforge.io/docs ... point.html
Desweiteren hat das TMenuItem (was ja erst einen Menü-Eintrag selbst darstellt) ein OnMeasureItem-Ereignis
https://lazarus-ccr.sourceforge.io/docs ... eitem.html
OnMeasureItem gibt mir die Breite und die Höhe des MenuItems aber nicht die Position am Bildschirm wo es gezeigt wurde/wird.
Ich nehme jetzt einfach die Position vom Mauszeiger.
Das geht auch einigermassen.
MeasureItem gibt dir die Höhen und Breite der TMenuItems.
PopupPoint.Y + Z * ItemHöhe ergibt die Koordinate der linken oberen Ecke deines MenuItems (Z = Anzahl menuItems untereinander bis zu deinem Item)
PopupPoint.X + ItemBreite --> Ergibt dann was?
im Prinzip einfach durchhangeln, und vom PopupPoint aus zu x und y dazuaddieren.
Wie sieht denn dein Popmenü denn aus?
bzw. bis wohin müsste man sich durchhangeln?
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.