předchozí lekce (2.10) | obsah kurzu | následující lekce (2.12) |
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) |