Pou₧itφ Data Environment Designeru ve VB 6.0 |
P°idßvßnφ zßznam∙
Obsah tabulky si nynφ ji₧ umφme vypsat. P°idßnφ zßznam∙ takΘ nenφ p°φliÜ slo₧itΘ. Nejprve je nutnΘ zalo₧it nov² formulß°, kter² bude slou₧it pro p°idßvßnφ zßznam∙. Tak₧e zalo₧te nov² formulß° a pojmenujte jej frmAdd. Na n∞j natßhn∞te ComboBox pro tituly a pojmenujte jej GetTitul. P°idejte t°i textboxy s nßzvy GetJmeno, GetPrijmeni a GetCislo. Samoz°ejm∞ nezapome≥te na tlaΦφtka Ok (OkButton) a Storno (CancButton). Formulß° by mohl vypadat p°ibli₧n∞ takto:
P°i tvorb∞ polφ doporuΦuji vyu₧φt vlastnosti MaxLength textboxu, do kterΘ si nastavte maximßlnφ mo₧n² poΦet znak∙, zadßvan²ch v poli. Tento poΦet by m∞l korespondovat s velikostφ pole nadefinovanΘho v tabulce, uÜet°φte si pozd∞jÜφ problΘmy s kontrolou dΘlky dat.
Na udßlost Form_Load formulß°e zapiÜte k≤d pro inicializaci polφ:
Private
Sub Form_Load() GetTitul.ListIndex=0 Do hlavnφho formulß°e si p°iho∩te toolbar, pomocφ kterΘho budete volat jednotlivΘ formulß°e a ovlßdat dalÜφ akce. Asi takhle:
Na tlaΦφtko s p°idßnφm zßznamu dejte otev°enφ formulß°e pro p°idßnφ zßznamu:
frmAdd.Show vbModal
Parametr vbModal °φkß, ₧e okno bude naho°e a dokud ho nezav°ete, s jin²m oknem v aplikaci nep∙jde pracovat. Otestujte si projekt, zda se okno pro p°idßnφ otevφrß a naΦφtß se combo.
Nynφ k zßkladnφmu ovlßdßnφ formulß°e. Je sluÜnost, ₧e po entru skoΦφ kurzor na dalÜφ pole, tak₧e na udßlost KeyPress prvk∙ napiÜte:
If
KeyAscii = 13 Then P°φkaz Keyascii=0 je tam proto, aby to nepφpalo. ProblΘm m∙₧e trochu nastat p°i zadßvßnφ Φφsla. Je t°eba zabrßnit, aby tup² u₧ivatel nezadal znaky, kterΘ nemß. Jsou dv∞ mo₧nosti - bu∩ pou₧ijete API funkci pro nastavenφ vlastnostφ Textboxu, nebo si na udßlosti Keypress pole GetCislo odfiltrujete klßvesy sami. Proto₧e je toto pouze uΦebnφ p°φklad, zde je velice jednoduch² filtr: 7 Private
Sub GetCislo_KeyPress(KeyAscii As Integer) KeyAscii vrßtφ hodnotu stisknutΘho znaku. Znaky 48 a₧ 57 jsou 0-9. Po entru (13) skoΦφme dßl a pro stisk jinΘ klßvesy ji zruÜφm (case else).
Je takΘ t°eba oÜet°i nep°φjemnΘ stavy p°i uklßdßnφ. Nem∞lo by se uklßdat prßzdnΘ p°φjmenφ a Φφslo. ╚φslo by navφc nem∞lo b²t duplicitnφ. VÜe se provede p°i udßlosti Click na tlaΦφtku Ok (OkButton). Pokud je test v po°ßdku, lze zßznam ulo₧it a ukonΦit zadßvacφ formulß°:
Private
Sub OkButton_Click() If
Trim(GetCislo.Text) = "" Then De.rssSeznam.MoveFirst With
De.rssSeznam Set
IndX = frmMain.Seznam.ListItems.Add(, , GetPrijmeni.Text) Ke zjiÜt∞nφ duplicity. Pokud hledßte n∞jakou polo₧ku a nenφ nalezena, je ukazatel nastaven na EOF. Tak₧e p°i hledßnφ staΦφ pak otestovat tento parametr a vφte, jak jste dopadli. Zav°enφ (Close) a otev°enφ (Open) recordsetu slou₧φ pro aktualizaci (Pokud pφÜete sφ¥ovou aplikaci, je to obzvlßÜt∞ nutnΘ. O chyb∞ v metod∞ Requery u₧ jsem se zmi≥oval). Poslednφ °ßdky zajiÜ¥ujφ p°idßnφ novΘ polo₧ky do seznamu na hlavnφm formulß°i, jejφ zaΦlen∞nφ do t°φdφcφho po°adφ (Sorted=True) a nastavenφ, ₧e mß na nφ stßt kurzor a mß se celß zobrazit (EnsureVisible). |
Autor: The Bozena |