====== 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 → [[lyx_-_programmiersprache:vega:controls|Alle Steuerelemente]] · [[lyx_-_programmiersprache:vega:controls:tmainmenu|TMainMenu]] · [[lyx_-_programmiersprache:vega:controls:tpopupmenu|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 — [[lyx_-_programmiersprache:vega:controls:tmainmenu|TMainMenu]] und [[lyx_-_programmiersprache:vega:controls:tpopupmenu|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 ===== * **''Contains'' und ''DeepContains'' sind zweierlei.** ''Contains'' prüft nur dieses Feld, ''DeepContains'' auch das offene Untermenü — genau diese Unterscheidung entscheidet, ob ein Klick „daneben" war und das Menü schließt. * Untermenüs sind verkettet: ''Sub'' zeigt auf das offene Untermenü, ''SubIndex'' auf den Eintrag, zu dem es gehört. ''OpenSub(i)'' schließt ein etwaiges vorheriges zuerst. * ''HotIndex'' ist der Eintrag unter dem Zeiger; ''IndexAt(lx, ly)'' rechnet ihn aus **lokalen** Koordinaten aus. * ''ItemHeight()'' und ''ItemTop(i)'' liefern das Raster — eine Stelle für Zeichnen und Treffertest, damit beide nicht auseinanderlaufen. * ''Paint'' bekommt 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 [[lyx_-_programmiersprache:vega:controls:tmainmenu|TMainMenu]] und [[lyx_-_programmiersprache:vega:controls:tpopupmenu|TPopupMenu]] geprüft. ===== Eigenschaften ===== Alle Eigenschaften, auch die geerbten. ^ Name ^ Typ ^ Bedeutung ^ Herkunft ^ | ''Root'' | [[lyx_-_programmiersprache:vega:controls:tmenuitem|TMenuItem]] | Unsichtbarer Wurzeleintrag bzw. Wurzelknoten | eigen | | ''X'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Linke Kante des Menüfeldes | eigen | | ''Y'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Obere Kante des Menüfeldes | eigen | | ''HotIndex'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Eintrag bzw. Titel unter dem Zeiger | eigen | | ''Sub'' | [[lyx_-_programmiersprache:vega:controls:tmenupopup|TMenuPopup]] | Offenes Untermenü | eigen | | ''SubIndex'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Eintrag, zu dem das Untermenü gehört | eigen | | ''Images'' | [[lyx_-_programmiersprache:vega:controls:timagelist|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 [[lyx_-_programmiersprache:vega:controls:tmainmenu|TMainMenu]] und [[lyx_-_programmiersprache:vega:controls:tpopupmenu|TPopupMenu]] geprüft.