Lekce 2.11
Základní události objektů


předchozí lekce (2.10) obsah kurzu následující lekce (2.12)

Jak již bylo uvedeno dříve, jsou objekty definovány nejen svými vlastnostmi, ale také událostmi, na které mohou reagovat (vykonat zadanou akci). S vlastnostmi jsme se již seznámili, nyní si probereme základní události.

Událost je všeobecně situace, kterou objekt rozpozná a je schopen (ale nemusí) na ní reagovat. Události je přitom možné rozdělit do dvou skupin. V první skupině jsou události, které vyvolal sám uživatel programu například tím, že stisknul tlačítko myši. Hlavně pro takové události také budeme psát obsloužení události. Ve druhé skupině jsou zařazeny události, které byly vyvolány přímo systémem. Například při spuštění aplikace, nebo jejím ukončení. Takové události je možné použít například pro nastavení počátečních hodnot aplikace.

Pro program představuje událost zadání procedury, která se při výskytu události provede. Jinými slovy, že uvedená procedura obslouží vyvolanou událost. Pokud přitom není procedura pro událost v programu definována, nebude hlášena žádná chyba, událost však také nebude obsloužena.

Nejběžnější událostí je stisk tlačítka myši, které vyvolá událost OnClick. Stejnou událost vyvolá i stisk klávesy Enter nebo mezerník, pokud je na formuláři aktivní tlačítko. Obsloužení události jsme si předvedli v naší první jednoduché aplikaci. Nyní ji proto zopakujeme pouze pro jazyk KLONDAIK:


procedure TForm.Button1Click(Sender: TObject);
begin
   ShowMessage('Ahoj');
end;
Pokud budeme potřebovat rozpoznat stisk tlačítka, můžeme použít událost OnKeyDown (stisk), OnKeyUp (uvolnění) nebo OnKeyPress (stisk+uvolnění). Procedura pro obsloužení události je definována tak, že vám předá i buď kód stisknuté klávesy nebo přímo znak:

Jazyk KLONDAIK: procedure TForm.Button1KeyPress(Sender: TObject; var Key: Char); begin ShowMessage('Byla stisknuta klávesa: '+Key); end;

Jazyk BONANZA: Sub Button2KeyPress(Sender, Key) ShowMessage("Byla stisknuta klávesa: "+Chr(Key)) End Sub

Jazyk JUKON: function FormKeyPress(Sender, Key) { ShowMessage('Byla stisknuta klávesa: '+Chr(Key)); }

V jazycích BONANZA a JUKON je předán kód stisknuté klávesy jako číslo, je proto nutné použít pro zobrazení stisknutého znaku převod pomocí funkce Chr.

Podobným způsobem je možné také rozpoznat stisk nebo uvolnění tlačítka myši. Uvedené akce mohou obsloužit mimo již zmíněné události OnClick také události OnMouseDown (stisk) a OnMouseUp (uvolnění). Uvedené události definují ve své proceduře pro další použití souřadnice stisku tlačítka myši na objektu:


Jazyk KLONDAIK: procedure TForm.MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ShowMessage('Pozice x='+IntToStr(x)+#10+ 'Pozice y='+IntToStr(y)); end;

Jazyk BONANZA: Sub FormMouseDown(Sender, Button, Shift, X, Y) ShowMessage("Pozice x="+IntToStr(x)+Chr(10)_ +"Pozice y="+IntToStr(y)) End Sub

Jazyk JUKON: function FormMouseDown(Sender, Button, Shift, X, Y) { ShowMessage('Pozice X='+IntToStr(X)+Chr(10) +'Pozice Y='+IntToStr(Y)); }

Na výše uvedených příkladech si můžete všimnout, jak je zadán výpis souřadnic funkcí ShowMessage na dva řádky. Ty jsou rozděleny znakem o ASCII hodnotě 10, což znamená nový řádek. V jazyce KLONDAIK je možné zadat uvedenou hodnotu přímo jako číslo se znakem #, který informuje systém, že se jedná o vyjádření znaku číslem. V jazycích BONANZA a JUKON je nutné převést číslo na znak pro spojení do řetězce pomocí funkce Chr. Ukázka v jazyce BONANZA také ukazuje rozdělení dlouhého řádku v programu na dva řádky pomocí znaku _ uvedeného na konci řádku, který znamená, že řádek pokračuje na následujícím řádku.

Zajímavá a využitelná je také událost OnMouseMove, která nastane při přesunu myší nad objektem. To lze využít například pro zobrazení ukazatele pozice myši. Událost využívá stejné parametry jako výše uvedená událost OnMouseDown.


předchozí lekce (2.10) obsah kurzu následující lekce (2.12)

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