Vega.Events — Eingabe-Vokabular zwischen Backend und Kern

Was das Betriebssystem meldet, in einer für alle Backends gleichen Form. Diese Unit kennt bewusst kein TControl: sie beschreibt, was passiert ist, nicht wen es trifft. Die Zuordnung zu einem Steuerelement macht Vega.Dispatch — dadurch bleibt das Backend frei von VCL-Typen und es entsteht kein Zirkelbezug.

Quelldatei: Vega/Events.lyx

Alle Units · Alle Steuerelemente · Vega VCL


Typaliase

Name Ist Zweck
TEvent struct { Kind: int64; Window: int64; X: int64; Y: int64; Button: int64; Key: int64; Ch: int64; Modifiers: int64; Delta: int64; Width: int64; Height: int64 } Ein Ereignis mit allen Feldern, die irgendeine Art braucht

Aufzählungen

Enum Werte Zweck
TEventKind EK_NONE (0), EK_QUIT (1), EK_EXPOSE (2), EK_RESIZE (3), EK_MOUSE_DOWN (4), EK_MOUSE_UP (5), EK_MOUSE_MOVE (6), EK_MOUSE_WHEEL (7), EK_KEY_DOWN (8), EK_KEY_UP (9), EK_CHAR (10), EK_FOCUS_IN (11), EK_FOCUS_OUT (12), EK_CLOSE (13), EK_MOVE (14) Art des Ereignisses
TMouseButton MB_NONE (0), MB_LEFT (1), MB_RIGHT (2), MB_MIDDLE (3) Welche Maustaste

Konstanten

Name Typ Wert Bedeutung
MOD_SHIFT int64 1 Umschalttaste (Bitmaske)
MOD_CTRL int64 2 Strg (Bitmaske)
MOD_ALT int64 4 Alt (Bitmaske)
MOD_SUPER int64 8 Windows-/Meta-Taste (Bitmaske)
KEY_BACKSPACE int64 8 Rücktaste
KEY_TAB int64 9 Tabulator
KEY_RETURN int64 13 Eingabetaste
KEY_ESCAPE int64 27 Esc
KEY_SPACE int64 32 Leertaste
KEY_DELETE int64 127 Entf
KEY_LEFT int64 256 Pfeil links
KEY_RIGHT int64 257 Pfeil rechts
KEY_UP int64 258 Pfeil hoch
KEY_DOWN int64 259 Pfeil runter
KEY_HOME int64 260 Pos1
KEY_END int64 261 Ende
KEY_PAGE_UP int64 262 Bild auf
KEY_PAGE_DOWN int64 263 Bild ab
KEY_INSERT int64 264 Einfg
KEY_F1 int64 265 F1
KEY_F2 int64 266 F2
KEY_F3 int64 267 F3
KEY_F4 int64 268 F4
KEY_F5 int64 269 F5
KEY_F6 int64 270 F6
KEY_F7 int64 271 F7
KEY_F8 int64 272 F8
KEY_F9 int64 273 F9
KEY_F10 int64 274 F10
KEY_F11 int64 275 F11
KEY_F12 int64 276 F12

Freie Funktionen

Signatur Zweck
EventNone(): TEvent Leeres Ereignis — was PollEvent liefert, wenn nichts anliegt
EventQuit(): TEvent Die Anwendung soll enden
EventExpose(): TEvent Fensterinhalt ist neu zu zeichnen
EventResize(w: int64, h: int64): TEvent Fenstergröße hat sich geändert
EventMove(x: int64, y: int64): TEvent Fenster wurde verschoben
EventMouse(kind: int64, x: int64, y: int64, button: int64, modifiers: int64): TEvent Maustaste gedrückt, losgelassen oder Zeiger bewegt
EventWheel(x: int64, y: int64, delta: int64, modifiers: int64): TEvent Mausrad gedreht
EventKey(kind: int64, key: int64, modifiers: int64): TEvent Taste gedrückt oder losgelassen
EventChar(ch: int64, modifiers: int64): TEvent Zeichen eingegeben — das Ergebnis der Tastaturbelegung, nicht die Taste
EventClose(): TEvent Fenster soll geschlossen werden
EventInWindow(e: TEvent, wnd: int64): TEvent Dasselbe Ereignis, einem Fensterhandle zugeordnet
EventIsMouse(e: TEvent): bool Ist es ein Mausereignis
EventIsKey(e: TEvent): bool Ist es ein Tastaturereignis
EventPos(e: TEvent): TPoint Zeigerposition als TPoint
HasModifier(e: TEvent, m: int64): bool Ist diese Zusatztaste gedrückt

Zu beachten

  • Taste und Zeichen sind zweierlei. EK_KEY_DOWN meldet eine Taste (KEY_*), EK_CHAR das daraus entstandene Zeichen. Wer Text entgegennimmt, hört auf OnChar; wer Steuerung braucht (Pfeile, F-Tasten), auf OnKeyDown.
  • Die MOD_*-Werte sind eine Bitmaske — HasModifier(e, MOD_CTRL) ist der lesbare Weg, e.Modifiers == MOD_CTRL scheitert, sobald zusätzlich die Umschalttaste liegt.
  • Die KEY_*-Werte unterhalb 128 sind ASCII; darüber beginnt bei 256 der eigene Bereich für Tasten ohne Zeichen.
  • Ereignisse tragen alle Felder, auch die für ihre Art belanglosen — das spart je Art einen eigenen Typ und hält den Backend-Vertrag klein.

Abhängigkeiten