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 TEvent (weiß nichts von Controls) und TControl (weiß nichts vom Betriebssystem) zusammen — deshalb kennt weder das Backend die VCL noch umgekehrt.
Quelldatei: Vega/Dispatch.lyx
→ Alle Units · Alle Steuerelemente · 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 Vega.Menus das Aufklappen einträgt |
TDispatcherFinderFn | fn(c: TControl): TDispatcher | Haken, über den 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 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_MSam selben Ort.
Abhängigkeiten
Importiert: Vega.Types, Vega.Events, Vega.Control, Vega.Hints · Standardbibliothek: std.time
Wird importiert von: Vega.Forms
Letzte Aktualisierung: 2026-08-20 — Klassen, Aufzählungen, Konstanten und freie Funktionen maschinell aus Vega/Dispatch.lyx erhoben.
