====== Vega.Dispatch — Vom Ereignis zum Steuerelement ====== Das Bindeglied zwischen Backend und Control-Baum: hier wird aus „Mausklick bei 412/300“ ein „dieser Knopf wurde geklickt“. Diese Stelle bringt [[lyx_-_programmiersprache:vega:units:events|TEvent]] (weiß nichts von Controls) und [[lyx_-_programmiersprache:vega:units:control|TControl]] (weiß nichts vom Betriebssystem) zusammen — deshalb kennt weder das Backend die VCL noch umgekehrt. Quelldatei: ''Vega/Dispatch.lyx'' → [[lyx_-_programmiersprache:vega:units|Alle Units]] · [[lyx_-_programmiersprache:vega:controls|Alle Steuerelemente]] · [[lyx_-_programmiersprache:vega|Vega VCL]] ---- ===== Klassen ===== ^ Klasse ^ Basis ^ Zweck ^ | ''TDispatcher'' | — | Verteilt die Ereignisse eines Fensters auf die Controls; hält Fokus, Zeiger- und Ziehzustand | ===== Typaliase ===== ^ Name ^ Ist ^ Zweck ^ | ''TContextMenuOpener'' | ''fn(menuPtr: int64, x: int64, y: int64): bool'' | Haken, über den [[lyx_-_programmiersprache:vega:units:menus|Vega.Menus]] das Aufklappen einträgt | | ''TDispatcherFinderFn'' | ''fn(c: TControl): TDispatcher'' | Haken, über den [[lyx_-_programmiersprache:vega:units:forms|Vega.Forms]] den zuständigen Verteiler liefert | ===== Freie Funktionen ===== ^ Signatur ^ Zweck ^ | ''SetContextMenuOpener(f: TContextMenuOpener): void'' | Trägt ein, wer ein Kontextmenü aufklappt | | ''OpenContextMenu(menuPtr: int64, x: int64, y: int64): bool'' | Klappt das hinterlegte Kontextmenü an dieser Stelle auf | | ''NewDispatcher(root: TControl): TDispatcher'' | Erzeugt einen Verteiler für diesen Control-Baum | | ''SetDispatcherFinder(f: TDispatcherFinderFn): void'' | Trägt ein, wie der Verteiler zu einem Control gefunden wird | | ''DispatchSetFocus(c: TControl): bool'' | Setzt den Fokus auf dieses Control — das Gegenstück zu ''SetFocusSetter'' | ---- ===== Zu beachten ===== * Drei Zustände muss der Verteiler über Einzelereignisse hinweg halten: wo der Zeiger steht (für ''OnMouseEnter''/''Leave''), wer den Fokus hat und ob gerade gezogen wird. * Fokus und Kontextmenü laufen über Funktionszeiger-Haken statt über Importe — sonst hinge [[lyx_-_programmiersprache:vega:units:control|Vega.Control]] an dieser Unit und die Abhängigkeit liefe im Kreis. * Ein Doppelklick entsteht hier, nicht im Backend: aus zwei Klicks innerhalb ''VEGA_DBLCLICK_MS'' am selben Ort. ---- ===== Abhängigkeiten ===== **Importiert:** [[lyx_-_programmiersprache:vega:units:types|Vega.Types]], [[lyx_-_programmiersprache:vega:units:events|Vega.Events]], [[lyx_-_programmiersprache:vega:units:control|Vega.Control]], [[lyx_-_programmiersprache:vega:units:hints|Vega.Hints]] · Standardbibliothek: ''std.time'' **Wird importiert von:** [[lyx_-_programmiersprache:vega:units:forms|Vega.Forms]] Letzte Aktualisierung: 2026-08-20 — Klassen, Aufzählungen, Konstanten und freie Funktionen maschinell aus ''Vega/Dispatch.lyx'' erhoben.