|
![]() | Zp∙sob Φφslovßnφ zßznam∙ ve formulß°φch | ![]() | Ovlßdßnφ formulß°∙ |
Pokud formulß° obsahuje vφce ne₧ jeden zßznam, pak se p°i pou₧itφ metod a vlastnostφ slo₧ek v₧dy pracuje se slo₧kami ve vybranΘm zßznamu. P°ed manipulacφ se slo₧kou je proto t°eba interaktivn∞ vybrat zßznam nebo p°i°azenφm do vlastnosti Curpos
.
Nov² zßznam lze vlo₧it metodou Insert
, b∞₧n² zßznam zruÜit metodou DelRec
. ZruÜit vÜechny zßznamy (s potvrzovacφm dotazem) umo₧≥uje metoda DelAsk
.
V²b∞r zßznamu a slo₧ky ve formulß°i
Vlastnost Curpos
obsahuje internφ Φφslo vybranΘho zßznamu ve formulß°i, vlastnost Curextrec
externφ Φφslo vybranΘho zßznamu. Ob∞ Φφsla se dajφ p°eΦφst takΘ funkcφ Get_view_pos
a nastavit funkcemi Set_int_pos
a Set_ext_pos
. Uvnit° formulß°e lze na absolutnφ Φφslo b∞₧nΘho zßznamu odkazovat symbolem @
na internφ Φφslo symbolem @@
V obecnΘm formulß°i vlastnost CurItem
obsahuje Φφslo vybranΘ slo₧ky a umo₧≥uje tedy vybrat slo₧ku na zßklad∞ Φφsla. ╚φslo vybranΘ slo₧ky vracφ takΘ funkce Current_item
. Vybrat slo₧ku lze takΘ pomocφ metody slo₧ky SetFocus
.
Pohyb po zßznamech ve formulß°i umo₧≥ujφ metody FirstRec
, LastRec
, PrevRec
, NextRect
, PrevPage
a NextPage
. K pohybu po slo₧kßch v rßmci b∞₧nΘho zßznamu slou₧φ metody FirstItem
, LastItem
, PrevTab
a NextTab
. Na nejbli₧Üφ vyÜÜφ resp. ni₧Üφ slo₧ku se lze dostat metodami UpItem
a DownItem
.
Ka₧dß slo₧ka obecnΘho formulß°e (krom∞ Φßry a rßmu) je z hlediska Windows oknem a mß sv∙j handle. Handle slo₧ky v aktußlnφm zßznamu lze zjistit pomocφ metody slo₧ky Handle
.
P°episovßnφ obsahu a ovlßdßnφ slo₧ek
P°episovßnφ obsahu slo₧ek formulß°e je zp∙sobem, jak m∙₧e program paraleln∞ ovlivnit obsah databßze i obsah formulß°e. Zapisovat hodnoty do databßze lze takΘ p°φmo, bez ·Φasti formulß°e. P°epis hodnot slo₧ek se vyu₧φvß zejmΘna tehdy, pokud je t°eba ve formulß°i p°ednastavit n∞kterΘ hodnoty nebo pokud se n∞kterΘ hodnoty majφ zkontrolovat a dopoΦφst na zßklad∞ jin²ch u₧ivatelem zadan²ch hodnot.
Metody a vlastnosti slo₧ek
JednotlivΘ slo₧ky formulß°e jsou oznaΦeny jmΘnem uveden²m v nßvrhu formulß°e. Slo₧ky majφ svΘ metody a vlastnosti, z nich₧ n∞kterΘ jsou spoleΦnΘ zatφmco jinΘ jsou specifickΘ po konkrΘtnφ druh slo₧ky (t°eba combo). P°i dokazovßnφ na vlastnosti a metody slo₧ky uvedete identifikßtor formulß°e, teΦku, jmΘno slo₧ky, teΦku a jmΘno vlastnosti Φi metody.
Obsah slo₧ek lze p°episovat pomocφ jejich vlastnostφ Text
a Value
. Ob∞ vlastnosti se vztahujφ ke stejn²m dat∙m, ale jsou rozdφlnΘho typu. Zatφmco Text
obsahuje textov² zßpis hodnoty tak, jak se objevuje na obrazovce, Value
je hodnota stejnΘho typu, jako ve zdroji dat. V p°eklßdanΘm combu obsahuje vlastnost Text
text napsan² na obrazovce, zatφmco vlastnost Value
obsahuje hodnotu zapisovanou do databßze. Nßpisy a tlaΦφtka majφ vlastnost Text
, ale nikoli Value
.
P°φklad:
Nech¥ ve formulß°ovΘm objektu evid_list_form je tlaΦφtko jmΘnem STORNO a dv∞ editaΦnφ pole typu datum se jmΘny ZAH┴JEN═ a UKON╚EN═. Pak p°φkazy:
evid_list_form.UKON╚EN═.Value:=evid_l
ist_form.ZAH┴JEN═.Value+20; evid_list_form.STORNO.Text := 'Konec';
nastavφ datum UKON╚EN═ na 20 dn∙ po datu ZAH┴JEN═ a zm∞nφ nßpis na tlaΦφtku STORNO na ôKonecö. JmΘno vlastnosti Value (a teΦku p°ed nim) lze vypustit a psßt:
evid_list_form.UKON╚EN═ := evid
_list_form.ZAH┴JEN═ + 20;
Metoda IsNull
zjiÜ¥uje, zda ve slo₧ce je hodnota NULL, metoda SetNull
zapisuje NULL do slo₧ky. Hodnot∞ NULL odpovφdß prßzdn² °et∞zec ve vlastnosti Text
.
Pro Φtenφ nebo p°epis hodnoty lze takΘ vyu₧φt funkcφ Set_item_value
a Get_item_value
spolupracujφcφch s prom∞nnou typu Untyped. P°eΦφst nebo p°epsat text ve slo₧ce obecnΘho formulß°e lze takΘ pomocφ zastaral²ch funkcφ Get_view_item
resp. Set_view_item
, takto provedenß zm∞na se vÜak nezapisuje do databßze a proto mß velmi omezenΘ pou₧itφ.
Zp∙sob zobrazenφ slo₧ek lze °φdit pomocφ vlastnostφ Format
a Precision
.
Specifika slo₧ek
Stav oznaΦovacφch Φtverc∙ a p°epφnaΦ∙ se °φdφ vlastnostφ Checked
. V editaΦnφm poli, editovatelnΘm combu a ve formßtovanΘm textu lze pozici kurzoru nebo zv²razn∞n² ·sek textu nastavit metodou Selection
. Pro prßci se slo₧kou Podpis se pou₧φvajφ metody Signature_check
, Signature_sign
a Signature_state
. Ve slo₧ce Seznam (ListBox) lze zjistit nebo nastavit vybran² °ßdek pomocφ vlastnosti SelIndex
. Nabφdku ve slo₧ce Combo lze aktualizovat metodou ResetCombo
. Ve slo₧ce Zßlo₧ky lze nastavit nebo zjistit Φφslo vybranΘ strßnky pomocφ vlastnosti Page
. Nad slo₧kou obsahujφcφ datum lze otev°φt m∞sφΦnφ kalendß° pomocφ metody Calendar
.
Hodnoty prom∞nnΘ velikosti
Slo₧ky pracujφcφ s hodnotami prom∞nnΘ dΘlky dovolujφ zjistit nebo p°epsat aktußlnφ dΘlku hodnoty pomocφ vlastnosti Length
, naΦφst obsah slo₧ky ze souboru pomocφ metody ReadFile
, zapsat obsah slo₧ky do souboru pomocφ metody WriteFile
. Obsah slo₧ek Raster, Text a OLE lze otev°φt v samostatnΘm okn∞ pomocφ metody Open
.
Pokud slo₧ka obsahuje hodnotu prom∞nnΘ velikosti, pak pomocφ vlastnosti Value
lze s nφ pracovat takΘ po Φßstech. Zßpis Value[offset,size]
oznaΦuje ·sek hodnoty dΘlky size poΦφnaje bajtem offset. Zßpis Value#
oznaΦuje celkovou dΘlku hodnoty.
Zßpis zm∞n do databßze a aktualizace obsahu formulß°e
Po zapsßnφ novΘ hodnoty do formulß°e se zßznamovou synchronizacφ je nutno pomocφ funkce nebo metody Commit_view
explicitn∞ zapsat zm∞ny do databßze. Jinak by se snadno mohly ztratit. Zm∞ny provedenΘ programem nebo u₧ivatelem ve formulß°i lze odvolat funkcφ nebo metodou Roll_back_view
.
Pokud byl obsah databßze zm∞n∞n jinak ne₧ prost°ednictvφm formulß°e, pak obsah formulß°e lze aktualizovat funkci nebo metodu Reset_view
s p°φznakem RESET_CACHE.
Obsah jednotliv²ch slo₧ek formulß°e ve vybranΘm zßznamu lze aktualizovat metodou Refresh
.
P°φklad: v zßznamov∞ synchronizovanΘm formulß°i je tlaΦφtko volajφcφ proceduru, kterß v databßzi p°epφÜe n∞kterou hodnotu zobrazenou ve formulß°i. V zßznamu provedete n∞jakΘ zm∞ny a stisknete toto tlaΦφtko. Jφm vyvolanß zm∞na se ve formulß°i neprojevφ. P°i p°echodu na jin² zßznam nebo zav°enφ formulß°e se vÜak m∙₧e objevit varovßnφ signalizujφcφ, ₧e se hodnota za dobu otev°enφ formulß°e zm∞nila:
Aby tato matoucφ situace nenastala, je nutno po zm∞n∞ hodnoty programem zavolat na slo₧ku metodu Refresh nebo na formulß° funkci nebo metodu Reset_view
s
p°φznakem RESET_CACHE
, kterß uvede do souladu obsah formulß°e s hodnotami v databßzi.
P°epoΦty Φφsel zßznam∙
Kurzor a tabulka
Absolutnφ Φφslo zßznamu ve formulß°i do editovatelnΘho kurzoru lze p°evΘst na absolutnφ Φφsla zßznam∙ z tabulek, z nich₧ dan² zßznam vznikl, pomocφ funkce serveru Translate
.
P°φklad:
function Exists(kod:string[8];var cisloVTab:integer) : boolean; {**************************************} // zjistφ, existuje-li kniha s kodem kod
// jestli₧e ano, vrßtφ v cisloVTab cislo zßznamu z tabulky Knihy
var ck : cursor; podm2 : string[100]; pocet : integer; begin podm2 := "select * from KNIHY where KOD="""+kod+""""; if Open_sql_cursor(ck,podm2) then Exit; Rec_cnt(ck,pocet); if pocet = 1 then begin Translate(ck,0,0,cisloVTab); Exists := true {OK} end else begin
Info_box("Upozorn∞nφ","Zadan² k≤d nebyl nalezen!");
b := true; Exists := false; end; Close_cursor(ck); end;
Subkurzor a superkurzor
P°edpoklßdejme, ₧e jeden kurzor je subkurzorem jinΘho kurzoru (budeme mu °φkat superkurzor). Absolutnφ Φφslo zßznamu v subkurzoru pak lze p°evΘst na absolutnφ Φφslo tΘho₧ zßznamu v superkurzoru pomocφ funkce Super_recnum
. To je pot°eba ud∞lat nap°. v situaci, kdy₧ u₧ivatel stiskem tlaΦφtka ₧ßdß provedenφ akce se zßznamem, na n∞m₧ se prßv∞ nachßzφ. Pokud toti₧ p°edtφm polo₧il dotaz (nap°. QBE set°φd∞nφ), pak jeho formulß° vede do subkurzoru. Program musφ pomocφ funkce Get_fcursor
zφskat od formulß°e jeho kurzor, pomocφ funkce Get_view_pos
zφskat Φφslo zßznamu v subkurzoru a funkcφ Super_recnum
je p°epoΦφst na Φφslo zßznamu v superkurzoru (anebo provΘst po₧adovanou akci s pomocφ zφskanΘho subkurzoru).
![]() | Zp∙sob Φφslovßnφ zßznam∙ ve formulß°φch | ![]() | Ovlßdßnφ formulß°∙ |