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 ;