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_MS am 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.