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