602SQL-┌plnß dokumentace Index   Tisk  

Otev°enφ formulß°e na obrazovce

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:

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