TMenuPopup — das aufgeklappte Menüfeld
Das Feld, das erscheint, wenn ein Menü aufklappt: Es rechnet seine Größe aus den Einträgen aus, weiß, welcher Eintrag unter dem Zeiger liegt, und hält ein etwaiges Untermenü.
Unit: Vega.Menus · Basis: keine — eigene Wurzel
→ Alle Steuerelemente · TMainMenu · TPopupMenu
Vererbung
Kette: TMenuPopup — eigene Wurzel, kein Vorfahr. Was diese Klasse kann, steht vollständig auf dieser Seite.
Direkte Nachfahren: keine — diese Klasse wird nicht weiter abgeleitet.
Quelle: vega/menus.lyx
Verwendung
Im Alltag legt man kein TMenuPopup selbst an — TMainMenu und TPopupMenu tun das beim Aufklappen und halten es in ihrem Feld Popup. Wer eigene Menüdarstellungen baut, benutzt es unmittelbar:
var pp: TMenuPopup := new TMenuPopup(wurzel, 100, 80); // Einträge, x, y
Print(IntToStr(pp.Width())); // Breite aus dem längsten Eintrag
Print(IntToStr(pp.Height())); // Höhe aus der Anzahl
Print(IntToStr(pp.IndexAt(10, 30))); // Eintrag an dieser Stelle
Print(IntToStr(pp.Contains(120, 90) as int64));
pp.OpenSub(2); // Untermenü zu Eintrag 2
pp.CloseSub();
Besonderheiten
ContainsundDeepContainssind zweierlei.Containsprüft nur dieses Feld,DeepContainsauch das offene Untermenü — genau diese Unterscheidung entscheidet, ob ein Klick „daneben„ war und das Menü schließt.- Untermenüs sind verkettet:
Subzeigt auf das offene Untermenü,SubIndexauf den Eintrag, zu dem es gehört.OpenSub(i)schließt ein etwaiges vorheriges zuerst. HotIndexist der Eintrag unter dem Zeiger;IndexAt(lx, ly)rechnet ihn aus lokalen Koordinaten aus.ItemHeight()undItemTop(i)liefern das Raster — eine Stelle für Zeichnen und Treffertest, damit beide nicht auseinanderlaufen.Paintbekommt Thema und aufgelösten Stil mit, statt sie selbst zu holen: Das Feld wird als Overlay vom Menü gezeichnet, nicht vom Zeichenbaum.
Letzte Aktualisierung: 2026-09-05 — gegen lyx-vcl/vega/*.lyx abgeglichen: Abschnitt „Vererbung“ (Vorfahr-Kette, direkte Nachfahren, Quelldatei) ergänzt und die fehlenden Eigenschaften, Methoden und Ereignisse nachgetragen.
Vorherige letzte Aktualisierung: 2026-08-20 — API maschinell aus Vega/Menus.lyx erhoben; Werte mit lyxc 1.1.4B über TMainMenu und TPopupMenu geprüft.
Eigenschaften
Alle Eigenschaften, auch die geerbten.
| Name | Typ | Bedeutung | Herkunft |
|---|---|---|---|
Root | TMenuItem | Unsichtbarer Wurzeleintrag bzw. Wurzelknoten | eigen |
X | int64 | Linke Kante des Menüfeldes | eigen |
Y | int64 | Obere Kante des Menüfeldes | eigen |
HotIndex | int64 | Eintrag bzw. Titel unter dem Zeiger | eigen |
Sub | TMenuPopup | Offenes Untermenü | eigen |
SubIndex | int64 | Eintrag, zu dem das Untermenü gehört | eigen |
Images | TImageList | Symbolsatz des Menues, das dieses Aufklappmenue geoeffnet hat. Es besitzt ihn nicht — wie überall bei TImageList | eigen |
Methoden
Alle Methoden, auch die geerbten.
| Signatur | Zweck | Herkunft |
|---|---|---|
Create(root: TMenuItem, x: int64, y: int64): void | Konstruktor | eigen |
Destroy(): void | Gibt eigene Ressourcen frei | eigen |
ItemHeight(): int64 | Höhe einer Menüzeile | eigen |
ItemTop(index: int64): int64 | Obere Kante einer Menüzeile | eigen |
Height(): int64 | Höhe des Menüfeldes, aus der Zahl der Einträge | eigen |
Width(): int64 | Breite des Menüfeldes, aus dem längsten Eintrag | eigen |
IndexAt(lx: int64, ly: int64): int64 | Eintrag an dieser lokalen Stelle | eigen |
Contains(x: int64, y: int64): bool | Liegt der Punkt in diesem Feld | eigen |
DeepContains(x: int64, y: int64): bool | Liegt der Punkt in diesem Feld oder in einem offenen Untermenü | eigen |
CloseSub(): void | Offenes Untermenü schließen | eigen |
OpenSub(index: int64): void | Untermenü zu diesem Eintrag aufklappen | eigen |
Paint(canvas: TCanvas, th: TTheme, st: TStyleSet): void | Darstellung (überschreibbar) | eigen |
Ereignisse
Keine.
Letzte Aktualisierung: 2026-08-20 — API maschinell aus Vega/Menus.lyx erhoben; Werte mit lyxc 1.1.4B über TMainMenu und TPopupMenu geprüft.
