|
![]() | Ovlßdßnφ formulß°∙ | Manipulace s otev°en²m formulß°em | ![]() |
K otev°enφ formulß°e slou₧φ metoda Open.
Je-li v aplikaci ulo₧en navr₧en² formulß° Evid_list, pak v programu m∙₧ete deklarovat objekt:
VAR evid_list_form : FORM Evid_list;
a otev°φt jej p°φkazem
evid_list_form.Open(nil)
JednoduÜeji lze stejn² formulß° otev°φt i bez deklarace objektu p°φkazem
Evid_list.Open(nil)
Formulß° se dß na obrazovce otev°φt takΘ °adou akcφ nebo funkcφ podle toho, k jakΘmu ·Φelu je otevφrßn. P°i otevφrßnφ formulß°e pomocφ funkce lze jeho vzhled a chovßnφ ovlivnit p°edßnφm r∙zn²ch (nφ₧e popsan²ch) p°φznak∙ v parametru flags. JednotlivΘ p°φznaky lze libovoln∞ kombinovat tφm, ₧e jako parametr p°edßte jejich souΦet.
JmΘno akce | JmΘno funkce | V²sledek |
Otev°φt (modßlnφ) formulß°,
Na stejn² zßznam otev°φt (modßlnφ) formulß° |
Open_view , p°φpadn∞ s p°φznaky MODAL_VIEW nebo PARENT_CURSOR |
Otev°enφ normßlnφho formulß°e |
Otev°φt relaΦnφ formulß° | Relate_record |
Otev°enφ relaΦnφho formulß°e |
Otev°φt vßzacφ formulß° | Bind_records |
Otev°enφ vßzacφho formulß°e |
Select_records |
V²b∞r zßznam∙ | |
View_open |
Otev°enφ normßlnφho formulß°e (zastaralΘ) |
Funkce Relate_record
a Bind_records
se volajφ pouze z formulß°e, kter² chce otev°φt dalÜφ formulß° za ·Φelem editovßnφ relace mezi zßznamy (viz kapitola o vytvß°enφ aplikace). Nevolajφ se nikdy z programu.
DynamickΘ vytvo°enφ nßvrhu formulß°e
Krom∞ formulß°∙, jejich₧ nßvrh je ulo₧en v databßzi jako souΦßst aplikace, lze otevφrat i formulß°e, jejich₧ nßvrh byl vytvo°en dynamicky a v databßzi nenφ.
Text nßvrhu formulß°e lze p°edat jako prvnφ parametr vÜem funkcφm, kterΘ otevφrajφ formulß°, nap°φklad Open_view
. Alternativn∞ lze v programu deklarovat formulß°ov² objekt bez uvedenφ jmΘna nßvrhu a text nßvrhu mu dynamicky p°i°adit volßnφm metody Set_source
. Tyto mo₧nosti se vÜak p°φliÜ b∞₧n∞ nepou₧φvajφ, proto₧e struktura zdrojovΘho textu formulß°e nenφ dokumentovßna.
V²jimkou je standardnφ formulß° zobrazujφcφ obsah tabulky, odpov∞di na dotaz nebo kurzoru otev°enΘho v programu. Jeho zdrojov² text lze zapsat jednoduÜe takto:
pro tabulky |
'DEFAULT jmΘno_tabulky TABLEVIEW
|
pro pevn² kurzor | 'DEFAULT jmΘno_kurzoru CURSORVIEW' |
pro prom∞nn² kurzor | 'DEFAULT Φφslo_otev°enΘho_kurzoru ' |
Otev°enφ formulß°e s takov²mto zdrojov²m textem odpovφdß provedenφ akce Otev°φt standardnφ formulß° do tabulky a Otev°φt standardnφ formulß° do dotazu.
P°φklad:
VAR
c : cursor;
s : string[20];
id : window_id;
BEGIN
Open_view('DEFAULT TAB1 TABLEVIEW',no_redir,MODAL_VIEW,0,0,nil);
Open_view('DEFAULT CURS CURSORVIEW',no_redir,MODAL_VIEW,0,0,nil);
IF NOT Open_sql_cursor(c,'select * from TAB1 order by A')
THEN BEGIN
s :='DEFAULT '+int2str(c);
Open_view(s,no_redir,MODAL_VIEW,0,0,nil);
Close_cursor(c);
END;
END.
Nastavenφ zdroje dat pro formulß°
JmΘno zdroje dat je souΦßstφ nßvrhu formulß°e. Formulß°i lze vÜak p°i°adit jin² zdroj dat a tφm dosßhnout nap°φklad zp°φstupn∞nφ zßznam∙ z odpov∞di na dynamicky vytvo°en² dotaz.
Funkce Open_view
, Print_view
, Relate_record
, Bind_records
a Select_records
umo₧≥ujφ pomocφ parametru base zadat Φφslo otev°enΘho kurzoru, kter² bude zdrojem dat. Pokud se mß pou₧φt zdroj dat uveden² v nßvrhu, pak se jako parametr base uvede konstanta NO_REDIR
.
Zdroj dat lze zjiÜ¥ovat a m∞nit takΘ v existujφcφm formulß°i, viz dßle.
Varianty chovßnφ formulß°e na obrazovce
Formulß° lze otev°φt na obrazovce t°emi zp∙soby: jako normßlnφ okno uvnit° hlavnφho okna aplikace (MDI-child), jako plovoucφ okno (popup, modeless) nebo jako modßlnφ okno blokujφcφ zbytek aplikace (modal).
Zp∙sob otev°enφ formulß°e je popsßn ve vlastnostech jeho nßvrhu. Mimo to lze otev°enφ normßlnφho formulß°e v plovoucφ nebo modßlnφ podob∞ vynutit pomocφ p°φznaku MODELESS_VIEW
nebo MODAL_VIEW
p°edanΘho jako parametr funkci otevφrajφcφ formulß°, p°φpadn∞ volßnφm akce Otev°φt modßlnφ formulß°.
Funkce, akce nebo metoda, kterß otev°ela modßlnφ formulß°, neskonΦφ, dokud tento formulß° nenφ zav°en. Proto takovß funkce Φi metoda nikdy nevracφ handle tohoto formulß°e (byl by ji₧ neplatn²), ale hodnotu 1 p°i ·sp∞chu a 0 p°i chyb∞.
P°φklad:
Open_view("*NOVA_KNIHA",NO_REDIR,MODAL_VIEW,0,0,id_nk);
Omezenφ u₧ivatelovy manipulace s formulß°em
Rozsah dovolen²ch manipulacφ s formulß°em je souΦßstφ jeho nßvrhu, dß se vÜak dodateΦn∞ zm∞nit. P°i otevφrßnφ formulß°e lze pomocφ p°φznak∙ zakßzat n∞kterΘ Φinnosti, kterΘ jsou v nßvrhu povoleny.
NO_EDIT
- v formulß°i je znemo₧n∞na editace
NO_INSERT
- v formulß°i je znemo₧n∞no vklßdßnφ nov²ch zßznam∙
NO_DELETE
- v formulß°i je znemo₧n∞no ruÜenφ zßznam∙
NO_MOVE
- v formulß°i je znemo₧n∞no p°echßzenφ ze zßznamu na zßznam.
Je-li povoleno vklßdßnφ nov²ch zßznam∙, pak nedoporuΦujeme zakazovat editaci, jinak by se do nov∞ vlo₧en²ch zßznam∙ nedalo nic zapsat.
V formulß°φch, kterΘ vedou do kurzoru, se automaticky uplatnφ omezenφ na vklßdßnφ, ruÜenφ a p°episovßnφ podle charakteru kurzoru.
Ve formulß°ov²ch objektech lze omezenφ manipulacφ dynamicky zjiÜ¥ovat a m∞nit pomocφ vlastnostφ Editable
, Insertable
, Deletable
a Movable
.
ZruÜenΘ zßznamy ve formulß°i
Otev°ete-li formulß° s p°φznakem DEL_RECS
, budou v n∞m obsa₧eny i zruÜenΘ zßznamy.
Formulß° do tabulky
Pokud formulß° otev°en² s tφmto p°φznakem vede do tabulky, pak zruÜenΘ i nezruÜenΘ zßznamy vypadajφ zcela stejn∞, a jedinou cestou, jak je odliÜit, je vyu₧φt sloupce DELETED, kter² je souΦßstφ ka₧dΘ tabulky. Tento sloupec m∙₧e mφt ve formulß°i vlastnφ slo₧ku nebo nap°φklad m∙₧e ovliv≥ovat viditelnost nebo aktivitu jin²ch slo₧ek - t°eba viditelnost nßpisu ôTento zßznam je zruÜen²ö.
Formulß° do odpov∞di na dotaz
Pokud formulß° vede do dotazu, pak se p°i konstrukci odpov∞di pou₧ijφ pouze nezruÜenΘ zßznamy z tabulky resp. z tabulek, bez ohledu na p°φtomnost parametru DEL_RECS
. Pokud vÜak b∞hem prßce s formulß°em n∞kter² zßznam zruÜφte, pak:
DEL_RECS
, zruÜen² zßznam zmizφ z formulß°eDEL_RECS
, zruÜen² zßznam sice z∙stane v formulß°i, ale bude mφt ve sv²ch slo₧kßch nßpis ZruÜeno
. Pou₧itφ parametru DEL_RECS
pon∞kud zrychluje prßci z formulß°em vedoucφm do zdroje dat obsahujφcφho velmi mnoho zßznam∙. DoporuΦujeme vyu₧φt tento parametr zejmΘna tehdy, pokud program otev°e formulß° na urΦitΘm zßznamu a nedßvß u₧ivateli mo₧nost p°ejφt na zßznam jin². Pak je vypouÜt∞nφ zruÜen²ch zßznam∙ zcela zbyteΦnΘ.
Ostatnφ p°φznaky
DalÜφ p°φznaky, kterΘ lze takΘ p°edat otevφranΘmu formulß°i, jsou:
AUTO_CURSOR
- zp∙sobφ, ₧e p°i zavφrßnφ formulß°e se automaticky zav°e takΘ kurzor p°edan² jako zdroj dat pomocφ parametru base; kurzor se uzav°e i v p°φpad∞, ₧e se formulß° nepoda°φ otev°φt;
COUNT_RECS
- p°i otev°enφ formulß°e se spoΦφtajφ vÜechny jeho zßznamy; tφm je zajiÜt∞na sprßvnß poloha tßhla na pravΘm rßmu formulß°e a vypsßnφ celkovΘho poΦtu zßznam∙ ve formulß°i na stavovΘ °ßdce; otev°enφ formulß°e m∙₧e trvat delÜφ dobu;
PARENT_CURSOR
- formulß° pou₧ije kurzor a vyrovnßvacφ pam∞ti formulß°e, p°edanΘho jako parametr hParent, a nastavφ se zßznam, kter² je v n∞m vybrßn (k trvalΘ synchronizaci obou formulß°∙ nedojde). Viz detailnφ popis v kapitole o vytvß°enφ aplikacφ.
QUERY_VIEW
- otev°e formulß° slou₧φcφ pro polo₧enφ QBE dotazu vztahujφcφho se k formulß°i, jeho₧ handle je p°edßn jako parametr hParent.
Zßvislß okna
Pokud p°i otevφrßnφ okna B p°edßte otevφrajφcφ funkci jako parametr hParent handle formulß°e A, pak se formulß° B bude stßle nachßzet nad formulß°em A a dokud bude otev°en, bude blokovat zm∞ny v A. Toto nastavenφ je nutnΘ v p°φpad∞, ₧e z modßlnφho formulß°e otevφrßte dalÜφ modßlnφ formulß°.
P°φklad:
Formulß° Edit_kniha se otev°e nad formulß°em s handle rovno idk.
Open_view('*EDIT_KNIHA',cx,MODAL_VIEW,-irec,idk,id_ek);
![]() | Ovlßdßnφ formulß°∙ | Manipulace s otev°en²m formulß°em | ![]() |