====== TMenuItem — Menüeintrag ====== Ein Eintrag in einem Menü: Beschriftung, Handler, Kürzel, Haken — und wahlweise eigene Untereinträge. Damit ist derselbe Typ Blatt und Zweig. Unit: ''Vega.Menus'' · Basis: keine — eigene Wurzel → [[lyx_-_programmiersprache:vega:controls|Alle Steuerelemente]] · [[lyx_-_programmiersprache:vega:controls:tmainmenu|TMainMenu]] · [[lyx_-_programmiersprache:vega:guides:befehle|Guide: Befehle]] ---- ===== Vererbung ===== **Kette:** **TMenuItem** — 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 ===== var mDatei: TMenuItem := mm.Add("Datei"); // von TMainMenu var mOeffnen: TMenuItem := mDatei.Add("Öffnen"); mOeffnen.SetShortcut(79, MOD_CTRL); // Strg+O mOeffnen.OnClick := AufOeffnen; mDatei.AddSeparator(); var mEnde: TMenuItem := mDatei.Add("Beenden"); mEnde.OnClick := AufEnde; Print(IntToStr(mDatei.ItemCount)); // 3 — Trenner zählt mit Print(IntToStr(mDatei.Item(1).IsSeparator as int64)); // 1 Print(mDatei.Item(2).GetCaption()); // Beenden var f: TMenuItem := mDatei.FindShortcut(79, MOD_CTRL); Print(f.GetCaption()); // Öffnen ---- ===== Besonderheiten ===== * **''Add'' liefert den neuen Eintrag**, nicht das Menü — daran hängt man Handler und Untereinträge: ''mDatei.Add("Öffnen").OnClick := …''. Ein ''AddRoot''/''AddChild'' gibt es nicht. * **Blatt und Zweig sind derselbe Typ.** Wer ''Add'' auf einem Eintrag ruft, macht ihn zum Untermenü; ''HasItems()'' fragt das ab. * Trenner sind echte Einträge mit ''IsSeparator = true'' — sie zählen in ''ItemCount'' mit und nehmen keine Klicks an. * ''SetShortcut(key, mods)'' nimmt einen Tastencode aus [[lyx_-_programmiersprache:vega:units:events|Vega.Events]] und eine ''MOD_*''-Maske. ''FindShortcut'' sucht **rekursiv** durch alle Untermenüs — so findet ein Fenster den Eintrag zu einer Tastenkombination. * ''Enabled'' sperrt einen Eintrag, ''Checked'' setzt den Haken; beides zeichnet das Menü selbst. * ''ActionPtr'' verbindet den Eintrag mit einer [[lyx_-_programmiersprache:vega:units:actions|TAction]] — dann kommen Beschriftung, Zustand und Kürzel von dort. * Die Untereinträge gehören dem Eintrag: sein ''Destroy'' nimmt sie mit. 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, Beispiel mit ''lyxc 1.1.4B'' übersetzt und ausgeführt. ===== Eigenschaften ===== Alle Eigenschaften, auch die geerbten. ^ Name ^ Typ ^ Bedeutung ^ Herkunft ^ | ''Caption'' | [[lyx_-_programmiersprache:vega:controls:ttextbuffer|TTextBuffer]] | Beschriftung — hält **nur den Zeiger**, keine Kopie | eigen | | ''Items'' | [[lyx_-_programmiersprache:vega:controls:tobjectlist|TObjectList]] | Untereinträge | eigen | | ''ItemCount'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Anzahl der Untereinträge — Trenner zählen mit | eigen | | ''Parent'' | [[lyx_-_programmiersprache:vega:controls:tmenuitem|TMenuItem]] | Zeichnerisches Elternteil | eigen | | ''Enabled'' | [[lyx_-_programmiersprache:sprache:datentypen#5_wahrheitswerte_bool|bool]] | Nimmt Eingaben an | eigen | | ''Checked'' | [[lyx_-_programmiersprache:sprache:datentypen#5_wahrheitswerte_bool|bool]] | Angehakt bzw. ausgewählt | eigen | | ''IsSeparator'' | [[lyx_-_programmiersprache:sprache:datentypen#5_wahrheitswerte_bool|bool]] | Ist der Eintrag ein Trenner | eigen | | ''Tag'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Freier Wert für die Anwendung | eigen | | ''ShortcutKey'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Tastencode des Kürzels | eigen | | ''ShortcutMods'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Zusatztasten des Kürzels (''MOD_*'') | eigen | | ''ActionPtr'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Verknüpfte Aktion (als Adresse) | eigen | | ''AutoCheck'' | [[lyx_-_programmiersprache:sprache:datentypen#5_wahrheitswerte_bool|bool]] | Klick schaltet den Haken selbst um, ohne dass der Handler es tut | eigen | | ''Default'' | [[lyx_-_programmiersprache:sprache:datentypen#5_wahrheitswerte_bool|bool]] | Der Eintrag, den ein Doppelklick auf das Elternmenue ausloest. Wird fett gezeichnet | eigen | | ''GroupIndex'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Gruppennummer für Einträge, die sich gegenseitig ausschließen | eigen | | ''Hint'' | [[lyx_-_programmiersprache:sprache:datentypen#8_zeiger|pchar]] | Hinweistext, den eine Statuszeile zeigen kann | eigen | | ''ImageIndex'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Symbol aus der Bilderliste des Menues; -1 = keins | eigen | | ''RadioItem'' | [[lyx_-_programmiersprache:sprache:datentypen#5_wahrheitswerte_bool|bool]] | Auswahlpunkt statt Haken: innerhalb einer GroupIndex-Gruppe ist immer genau einer angehakt | eigen | | ''Visible'' | [[lyx_-_programmiersprache:sprache:datentypen#5_wahrheitswerte_bool|bool]] | Unsichtbare Einträge nehmen keinen Platz ein und sind nicht anwaehlbar — wie in Delphi der übliche Weg, ein Menue an den Zustand der Anwendung anzupassen | eigen | ---- ===== Methoden ===== Alle Methoden, auch die geerbten. ^ Signatur ^ Zweck ^ Herkunft ^ | ''Create(caption: pchar): void'' | Konstruktor | eigen | | ''Destroy(): void'' | Gibt eigene Ressourcen frei | eigen | | ''GetCaption(): pchar'' | Beschriftung lesen | eigen | | ''SetCaption(s: pchar): void'' | Beschriftung setzen | eigen | | ''Add(caption: pchar): TMenuItem'' | Eintrag anhängen | eigen | | ''AddSeparator(): TMenuItem'' | Trenner anhängen | eigen | | ''Item(i: int64): TMenuItem'' | Untereintrag an dieser Stelle | eigen | | ''HasItems(): bool'' | Hat der Eintrag Untereinträge | eigen | | ''SetShortcut(key: int64, mods: int64): void'' | Tastenkürzel setzen | eigen | | ''FindShortcut(key: int64, mods: int64): TMenuItem'' | Eintrag zu einer Tastenkombination suchen — rekursiv durch alle Untermenüs | eigen | | ''CheckRadio(): void'' | Diesen Punkt setzen und die Geschwister derselben Gruppe löschen | eigen | | ''Clear(): void'' | Entfernt alle Untereinträge | eigen | | ''Click(): void'' | Den Eintrag ausloesen, als haette man ihn angeklickt. Der Weg für Tastenkürzel und für Programme, die ein Menue fernbedienen | eigen | | ''Count(): int64'' | Delphi-Namen: Count ist die Zahl der Untereintraege, IsLine fragt den Trennstrich ab | eigen | | ''Delete(index: int64): void'' | Einen Untereintrag löschen und freigeben | eigen | | ''IndexOf(m: TMenuItem): int64'' | Position eines Eintrags, oder ''-1'' | eigen | | ''IndexOfCaption(caption: pchar): int64'' | Position eines Eintrags, oder ''-1'' | eigen | | ''Insert(index: int64, caption: pchar): TMenuItem'' | Einen Eintrag an einer bestimmten Stelle einfuegen | eigen | | ''IsLine(): bool'' | Ob dieser Eintrag ein Trennstrich ist | eigen | | ''MenuIndex(): int64'' | Stelle unter den Geschwistern; Delphi nennt sie MenuIndex | eigen | | ''Remove(m: TMenuItem): bool'' | Einen Eintrag herausnehmen, OHNE ihn freizugeben — Delphis Remove. Wer ihn herausnimmt, hängt ihn meist woanders wieder ein | eigen | | ''SetVisible(v: bool): void'' | Setzt ''Visible'' | eigen | | ''VisibleCount(): int64'' | Wie viele Einträge man SIEHT, und der i-te davon. Das Aufklappmenue rechnet damit — unsichtbare Einträge nehmen keinen Platz ein | eigen | ---- ===== Ereignisse ===== ^ Name ^ Typ ^ Wann ^ Herkunft ^ | ''OnClick'' | [[lyx_-_programmiersprache:vega:guides:events#die_handler-typen|TNotifyEvent]] | Klick | eigen | Letzte Aktualisierung: 2026-08-20 — API maschinell aus ''Vega/Menus.lyx'' erhoben, Beispiel mit ''lyxc 1.1.4B'' übersetzt und ausgeführt.