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
;