Autor: Michal Poho°elsk²
Uve°ejn∞no: New P+C 04/94, str. 59-60
VylepÜenφ p°φkazu @...EDIT (trik)


Kdy₧ programßtor pot°ebuje ve FoxPro 2.0 nebo FoxPro 2.5 vytvo°it libovolnou u₧ivatelskou vstupnφ obrazovku, urΦit∞ p°itom vyu₧ije v²born² Screen Builder, kter² umo₧≥uje vytvo°it vÜechno velmi rychle. Ve Screen Builderu m∙₧eme pracovat takΘ s MEMO polo₧kami databßze. P°φkaz @...EDIT vytvo°φ standartnφ objekt typu GET pro prohlφ₧enφ a editaci MEMO polo₧ek, kter² mß v sob∞ integrovan posuvnφk. Tak si m∙₧eme prohlφ₧et i velice rozsßhlΘ MEMO polo₧ky.
Pokud vstupnφ obrazovku pou₧φvajφ obyΦejnφ u₧ivatelΘ je nutnΘ jejich poΦφnßnφ d∙kladn∞ kontrolovat. Proto editaci ka₧dΘho objektu na obrazovce m∙₧eme v libovolnΘm okam₧iku zakßzat nebo povolit, dle naÜφ aktußlnφ pot°eby pomocφ p°φkaz∙:

* SHOW GETS [ENABLE | DISABLE]
* SHOW GET < prom∞nnß > [ENABLE | DISABLE]
* SHOW OBJECT < Φφslo > [ENABLE | DISABLE]

Mß to ovÜem jeden hßΦek ! Zakßz editace objektu EDIT je znaΦn∞ problematickΘ, pon∞vad₧ se tφm zßrove≥ zablokuje posuvnφk a u₧ivatel si nem∙₧e prohlΘdnout celou MEMO polo₧ku zßznamu. Tento nedostatek mi p°i vytvß°enφ jednoho programu siln∞ vadil, a proto jsem vymyslel nßsledujφcφ trik.
Na obrßzku Φφslo 1 je z°ejmΘ, ₧e zßkladnφ vtip je ve vytvo°enφ dvou naprosto stejn²ch objekt∙ @...EDIT, kterΘ se vß₧ou na jednu jedinou polo₧ku v zßznamu. Prvnφ objekt EDIT vytvo°φme klasick²m zp∙sobem a zkopφrujeme ho zkratkou CTRL+C do clipboardu. Druh² objekt vytvo°φme jako kopii prvnφho zßznamu zkratkou CTRL+V. V zßv∞ru tΘto operace se ujistφme, ₧e oba EDIT objekty se skuteΦn∞ pou₧φvajφ stejnou polo₧ku databßze nebo pam∞tovou prom∞nnou a majφ stejnou velikost.
Na obrßzku Φφslo 2 je vid∞t WHEN klauzule prvnφho objektu EDIT. Na obrßzku Φφslo 3 je vid∞t WHEN klauzule druhΘho objektu EDIT. Kdy₧ oba obrßzky porovnßte uvidφte, ₧e klauzule WHEN druhΘho objektu EDIT je p°esn²m opakem klauzule WHEN prvnφho objektu EDIT a navφc je p°idßn parametr NOMODIFY. P°esn∞ podle obrßzk∙ p°idßme do klauzule WHEN prvnφho objektu EDIT v²raz - "MemoFlag". Do klauzule WHEN druhΘho objektu EDIT p°idßme v²raz - "NOT MemoFlag NOMODIFY". Kdy₧ ve Screen Builderu vygenerujete obrazovku do souboru s p°φponou SPR, oba objekty EDIT budou vypadat asi takto:

Edit Region 1:
@ < °ßdek, sloupec > EDIT < prom∞nnß > ... WHEN MemoFlag Edit Region 2:
@ < °ßdek, sloupec > EDIT < prom∞nnß > ... WHEN NOT MemoFlag NOMODIFY

Proto₧e oba objekty EDIT jsou umφst∞nΘ na sob∞, u₧ivatel vidφ na obrazovce pouze jedinΘ EDIT pole. Kdy₧ mß prom∞nnß MemoFlag hodnotu FALSE, WHEN klauzule prvnφho objektu EDIT vrßtφ hodnotu .F. a FoxPro zablokuje prvnφ objekt. U₧ivatel si m∙₧e Memo polo₧ku pohodln∞ celou prohlΘdnout, ale nesmφ ji editovat. Kdy₧ mß prom∞nnß MemoFlag hodnotu TRUE, vrßtφ WHEN klauzule prvnφho objektu hodnotu .T. a FoxPro zablokuje druh² objekt. U₧ivatel m∙₧e Memo polo₧ku editovat normßln∞.




Skok na dalÜφ strßnku Skok na hlavnφ menu Skok na dalÜφ strßnku


Copyright (c) 1993-2000 Michal Poho°elsk²