15.3.3. Jak zjistit který prvek událost vyvolal

Nestačí nám jen znát jaká událost vzikla, jak jsme si ukázali v předchozích odílech, my také potřebujeme vědět který že to objekt událost způsobil. Tedý které tlačítko bylo stlačeno, které pole získalo zaměření (focus).

Za použití OnDo rozšíříme rozdělování (dispatch) událostí o událost ctlSelectEvent

: dispatch-event ( ekey → ekey )
	...
        on: ctlSelectEvent     do: ctlSelect
	... ;

V proceduře ctlSelect se pak ptáme které že to tlačítko bylo zmáčknuto. Ke zjištění ID zmáčknutého tlačítka použijeme kód

event >abs ItemId

. Procedura výběru tlačítka pak vypadaá takto

: ctlSelect (ekey → ekey )
	event >abs ItemID
	on: ButtonOK           do: pushButtonOK
        on: ButtonBackLight    do: pushButtonBacklight
        drop ;  \ musíme zahodit ID získané na začátku slova.

Příklad 15.8. Zjištění ID zmáčknutého tlačítka

1202 constant ButtonOK
1203 constant ButtonBackLight

: Event. ( → addr. )
	event >abs ;

: ctlSelect (ekey → ekey )
	Event. ItemID
	on: ButtonOK           do: pushButtonOK
        on: ButtonBackLight    do: pushButtonBacklight
	;

: dispatch-event ( ekey → ekey )
        on:  ctlSelectEvent     do: ctlSelect
        ;