====== THotKey — Tastenkürzel aufnehmen ====== Ein Feld, das eine **Tastenkombination entgegennimmt** statt Text: der Benutzer drückt sie, das Feld zeigt sie an und merkt sie sich. Der übliche Weg, Kürzel in einem Einstellungsdialog vergeben zu lassen. Unit: ''vega.extctrls'' · Basis: [[lyx_-_programmiersprache:vega:controls:tcontrol|TControl]] → [[lyx_-_programmiersprache:vega:controls|Alle Steuerelemente]] · [[lyx_-_programmiersprache:vega:klassenbaum|Klassenbaum]] · [[lyx_-_programmiersprache:vega:guides:komponenten|Guide: Komponenten]] ---- ===== Vererbung ===== **Kette:** [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] → [[lyx_-_programmiersprache:vega:controls:tcontrol|TControl]] → **THotKey** **Direkte Nachfahren:** keine — diese Klasse wird nicht weiter abgeleitet. **Quelle:** ''vega/extctrls.lyx'' ---- ===== Verwendung ===== var hk: THotKey := new THotKey(); hk.SetBounds(8, 8, 200, 24); hk.SetParent(f); hk.SetHotKey(KEY_S, MOD_CTRL); // Vorgabe: Strg+S // Auslesen, wenn der Dialog bestaetigt wurde: var taste: int64 := hk.HotKey; var mods: int64 := hk.Modifiers; ---- ===== Besonderheiten ===== * **Nackte Tasten sind standardmäßig abgelehnt.** Ein Kürzel aus einer einzelnen Taste würde jede Eingabe im Programm belegen; ''AllowBareKeys'' schaltet die Sperre ab, wenn man es doch will. * **''InvalidKeys'' listet die abgelehnten Kombinationen** (''HKI_*''). Vorgabe ist genau die nackte Taste — ''AllowBareKeys'' und dieses Feld werden zusammen gehalten. * **Das Feld nimmt die Taste, nicht deren Wirkung.** Solange es den Fokus hat, löst eine gedrückte Kombination kein Kürzel im Programm aus. ---- ===== Eigenschaften ===== Alle Eigenschaften, auch die geerbten. ^ Name ^ Typ ^ Bedeutung ^ Herkunft ^ | ''ComponentState'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Zustand als Bitmaske (''csLoading'', ''csDestroying'' …) | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''ComponentStyle'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Stil als Bitmaske; Vorgabe ''csInheritable'' | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''Name'' | [[lyx_-_programmiersprache:sprache:datentypen#8_zeiger|pchar]] | Name der Komponente — für ''FindComponent'' und beim Laden aus LFM | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''OwnedComponents'' | [[lyx_-_programmiersprache:vega:controls:tobjectlist|TObjectList]] | Die Komponenten, die DIESER gehoeren. Delphis Components[]. Zeigerliste, keine Kopien: TObjectList hält int64-Adressen | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''Owner'' | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | Wer diese Komponente wegraeumt. Nicht der Elternteil im Zeichenbaum — das ist bei TControl `Parent` | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''Tag'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Freier Wert für eigene Zwecke; die Bibliothek fasst ihn nicht an | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''AllowBareKeys'' | [[lyx_-_programmiersprache:sprache:datentypen#5_wahrheitswerte_bool|bool]] | Nimmt das Feld auch Kombinationen ohne Umschalter an? Aus, weil ein Kürzel aus einer nackten Taste jede Eingabe im Programm belegen wuerde. Dasselbe wie HKI_NONE in InvalidKeys, unter … | eigen | | ''BorderStyle'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Rahmen um das Feld. Delphi hat ihn an jedem Eingabefeld | eigen | | ''HotKey'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Die aufgenommene Taste (KEY_*) und ihre Umschalter (MOD_*) | eigen | | ''InvalidKeys'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Abgelehnte Kombinationen (HKI_*). Vorgabe: nur die nackte Taste | eigen | | ''Modifiers'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Umschalter des Kürzels (''MOD_*'') | eigen | ---- ===== Methoden ===== Alle Methoden, auch die geerbten. ^ Signatur ^ Zweck ^ Herkunft ^ | ''ClearState(bits: int64): void'' | Zustandsbits löschen | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''ComponentCount(): int64'' | Anzahl der eigenen Komponenten | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''ComponentIndex(): int64'' | Delphis ComponentIndex: der eigene Platz in der Liste des Besitzers | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''Components(index: int64): TComponent'' | Eigene Komponente an dieser Stelle | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''Destroy(): void'' | Raeumt die eigene Liste ab, aber NICHT die Einträge — welche Komponenten ihre Besitztuemer mitnehmen, entscheidet die Ableitung über DestroyComponents() | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''DestroyComponents(): void'' | Baut die Besitztuemer ab. Von hinten, weil jedes Destroy() sich selbst aus der Liste austraegt | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''FindComponent(name: pchar): TComponent'' | Sucht unter den EIGENEN Komponenten, eine Ebene tief — wie in Delphi | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''GetName(): pchar'' | Namen lesen | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''GetNamePath(): pchar'' | Der eigene Name. Delphi hängt bei Unterkomponenten den des Besitzers davor; Vega hat keine, also ist es der Name selbst | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''GetTag(): int64'' | ''Tag'' lesen | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''HasState(bits: int64): bool'' | Sind diese Zustandsbits gesetzt | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''InitComponent(): void'' | Kein Konstruktor: lyxc vererbt Konstruktoren nicht, jede Ableitung ruft InitComponent() im eigenen Create() | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''InsertComponent(c: TComponent): void'' | Komponente in Besitz nehmen; ein bisheriger Besitzer gibt sie ab | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''RemoveComponent(c: TComponent): void'' | Komponente aus dem Besitz nehmen | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''SetName(v: pchar): void'' | Setzt ''Name'' | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''SetState(bits: int64): void'' | Zustand setzen | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''SetTag(v: int64): void'' | Setzt ''Tag'' | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''Clear(): void'' | Leeren — bei ''TBitmap'' die Fläche mit ''c'' füllen | eigen | | ''Create(): void'' | Anlegen; ''new THotKey()'' | eigen | | ''HasHotKey(): bool'' | Ob eine Kombination aufgenommen wurde | eigen | | ''HotKeyText(dst: TTextBuffer): void'' | Den angezeigten Text bauen: "Strg+Umschalt+F5" | eigen | | ''IsInvalidCombo(mods: int64): bool'' | Ist diese Umschalterkombination abgelehnt? Geprueft wird die genaue Kombination, nicht einzelne Umschalter — Strg+Alt darf erlaubt sein, während Strg allein es nicht ist | eigen | | ''SetAllowBareKeys(v: bool): void'' | Beide Namen für dieselbe Aussage zusammenhalten: wer die nackte Taste erlaubt, nimmt HKI_NONE aus der Maske, und umgekehrt | eigen | | ''SetBorderStyle(v: int64): void'' | Setzt ''BorderStyle'' | eigen | | ''SetHotKey(key: int64, mods: int64): void'' | Setzt ''HotKey'' | eigen | | ''SetInvalidKeys(mask: int64): void'' | Setzt ''InvalidKeys'' | eigen | ---- ===== Ereignisse ===== ^ Name ^ Typ ^ Wann ^ Herkunft ^ | ''OnChange'' | [[lyx_-_programmiersprache:vega:guides:events#die_handler-typen|TNotifyEvent]] | Der Inhalt oder die Auswahl hat sich geändert | eigen | ---- Letzte Aktualisierung: 2026-09-05 — Seite neu angelegt; erhoben aus ''vega/extctrls.lyx'' im Repo ''lyx-vcl''.