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) |