Lekce 2.08
Procedury pro obsluhu událostí


předchozí lekce (2.07) obsah kurzu následující lekce (2.09)

Víme již, že většina objektů dokáže reagovat na určité události systému Windows. Například po kliknutí na tlačítku provede zadanou akci. Víme již také, že seznam událostí pro každý objekt je viditelný v okně Nastavení objektů. Nyní se podrobněji seznámíme s tím, jak se definuje a v programu zadává obsluha událostí.

Jak již bylo uvedeno, definují se pro události procedury, které vzniklou událost obslouží. Ukážeme si to na aplikaci, kterou jsme vytvořili v minulých lekcích. Aktivujte kliknutím myši horní tlačítko s nápisem 'Pozdrav' a zobrazte si okno Nastavení objektů. Vyberte záložku 'Události'. Jak vidíte, je u události OnClick uvedena procedura Button1Click. Pokud na názvu procedury dvakrát kliknete myší, přesunete se na začátek těla uvedené procedury, ve které jsme v předchozí lekci doplnili volání funkce pro zobrazení systémového hlášení. V jazyce KLONDAIK to bude následující procedura (v ostatních jazycích odpovídající ekvivalent):


procedure TForm.Button1Click(Sender: TObject);
begin
   ShowMessage('Ahoj');
end;
Podobným způsobem budete vyhledávat i další, automaticky doplňované procedury. Nemusíte se vůbec starat o to, kde jsou v programu umístěny. Systém si je dokáže sám nalézt. Ovšem pouze za předpokladu, že nebudete sami měnit jména objektů, pro které jste již zadali akce pro obsluhu událostí. Stejně tak nezasahujte do vygenerovaného záhlaví a ukončení vygenerované procedury.

Co je to procedura již víte. Znáte také, jak se zapisuje a používá. Vygenerovaná procedura je však trochu jiná. Seznámíme se proto nyní s rozdíly.


Jazyk KLONDAIK:

V jazyce KLONDAIK obsahuje jméno vygenerované procedury ve svém názvu jméno formuláře s návěštím 'T', na kterém je objekt umístěn a jméno události, kterou má procedura obsloužit. Jméno formuláře je od jména objektu+vlastnosti odděleno tečkou. Je to proto, aby bylo jméno procedury jednoznačné v celém programu a přesto přehledné:

procedure Tform1.Button1Click(Sender: TObject);
begin
   ShowMessage('Ahoj');
end;

Jazyk BONANZA:

V jazyce BONANZA obsahuje jméno vygenerované procedury ve svém názvu jméno objektu a bez jakéhokoliv oddělovače jméno události, kterou má procedura obsloužit:

sub Button1Click(Sender)
    ShowMessage("Ahoj")
end sub

Jazyk JUKON:

V jazyce JUKON obsluhují události funkce, jejichž jméno se skládá ze jména objektu a bez jakéhokoliv oddělovače jména události, kterou má funkce obsloužit:

function Button1Click(Sender)
{
   ShowMessage('Ahoj');
}
V proceduře je jako první parametr uveden parametr Sender (anglicky odesílatel), který má v jazyce KLONDAIK uveden typ TObject. Tento parametr nebudeme ve svých programech používat. Je zachován pouze kvůli kompatibilitě s jinými jazyky. Parametr typu TObject je předchůdcem všech použitých typů a bylo by možné jeho prostřednictvím požadované parametry předat. Některé procedury mají i další parametry různého typu, které je možné v proceduře použít. Například událost KeyPress předává znak stisknuté klávesy.

Jak jste si všimli, je jméno procedury odvozeno automaticky od jména objektu. Pokud změníte jméno objektu, jsou současně systémem změněna jména procedur pro obsluhu událostí. Sami však musíte zajistit změnit jméno objektu, pokud je použito při vyvolání metody. Pokud je procedura pro obsluhu události prázdná, je systémem po spuštění programu automaticky zrušena, protože nevykonává žádnou činnost.

V těle procedury můžete použít libovolné příkazy a funkce probrané v první části kurzu. Lze také naprogramovat vlastní procedury a funkce a umístit je do programu. Musíte si pouze zvyknout na to, že program jako takový neběží od začátku ke konci, ale je zpracováván podle okamžiku výskytu událostí.


předchozí lekce (2.07) obsah kurzu následující lekce (2.09)

OZOGAN, 1 Máje 97, 460 01 Liberec
tel.,fax: (048) 52 28 338, e-mail: info@ozogan.cz