Tato kapitola popisuje jak pou╛φvat vizußlnφ datovΘ ovladaΦe
k zobrazenφ a editaci dat p°i°azen²ch k tabulkßm a dotaz∙m v na╣ich databßzov²ch
aplikacφch. DatovΘ ovladaΦe zφskßvajφ zobrazovanß data od databßzov²ch
zdroj∙ z vn∞j╣ku aplikace a takΘ p°φpadn∞ zasφlajφ (vracejφ) datovΘ zm∞ny
zp∞t datov²m zdroj∙m.
Tato kapitola popisuje zßkladnφ slu╛by spoleΦnΘ pro v╣echny
komponenty datov²ch ovladaΦ∙ a je zde uvedeno jak a kdy pou╛φvat konkrΘtnφ
komponenty.
Pou╛φvßnφ spoleΦn²ch slu╛eb datov²ch ovladaΦ∙
Nßsledujφcφ ·lohy jsou spoleΦnΘ pro v∞t╣inu datov²ch ovladaΦ∙:
DatovΘ ovladaΦe umis╗ujeme ze strßnky Data Controls
Palety komponent na formulß° na╣φ databßzovΘ aplikace. DatovΘ
ovladaΦe obecn∞ povolujφ zobrazenφ a editaci polo╛ek dat spojen²ch
se souΦasn²m zßznamem v datovΘ mno╛in∞. V nßsledujφcφ tabulce je uveden
p°ehled datov²ch ovladaΦ∙.
Datov² ovladaΦ |
Popis |
TDBGrid |
Zobrazuje informace z datovΘho zdroje v tabulkovΘm formßtu.
Sloupce v m°φ╛ce odpovφdajφ sloupc∙m v p°ipojenΘ tabulce nebo dotazu. ╪ßdky
v m°φ╛ce odpovφdajφ zßznam∙m. |
TDBNavigator |
Poskytuje konfigurovatelnou mno╛inu tlaΦφtek pro navigaci
po zßznamech datovΘ mno╛iny, aktualizaci zßznam∙, odesφlßnφ zßznam∙, ru╣enφ
zßznam∙, ru╣enφ zm∞n a obnovenφ zobrazenφ dat. |
TDBText |
Zobrazuje data z polo╛ky jako Label. |
TDBEdit |
Zobrazuje data z polo╛ky v editaΦnφm ovladaΦi. |
TDBMemo |
Zobrazuje data z polo╛ky Memo nebo BLOB v rolovatelnΘm
vφce°ßdkovΘm editaΦnφm okn∞. |
TDBImage |
Zobrazuje grafiku z datovΘ polo╛ky v grafickΘm ovladaΦi. |
TDBListBox |
Zobrazuje seznam prvk∙, kterΘ m∙╛eme pou╛φt k aktualizaci
polo╛ky v souΦasnΘm datovΘm zßznamu. |
TDBComboBox |
Zobrazuje seznam prvk∙, kterΘ m∙╛eme pou╛φt k aktualizaci
polo╛ky a takΘ umo╛≥uje p°φm² zßpis hodnoty jako standardnφ datov² editaΦnφ
ovladaΦ. |
TDBCheckBox |
Zobrazuje znaΦku, kterß indikuje hodnotu logickΘ polo╛ky. |
TDBRadioGroup |
Zobrazuje mno╛inu vzßjemn∞ vyluΦujφcφch se voleb pro
polo╛ku. |
TDBLookupListBox |
Zobrazuje seznam prvk∙ vyhledan²ch z jinΘ datovΘ mno╛iny
na zßklad∞ hodnoty polo╛ky. |
TDBLookupComboBox |
Zobrazuje seznam prvk∙ vyhledan²ch z jinΘ datovΘ mno╛iny
na zßklad∞ hodnoty polo╛ky a umo╛≥uje takΘ p°φm² zßpis hodnoty jako standardnφ
datov² editaΦnφ ovladaΦ. |
TDBCtrlGrid |
Zobrazuje konfigurovatelnou opakovatelnou mno╛inu datov²ch
ovladaΦ∙ v m°φ╛ce. |
TDBRichEdit |
Zobrazuje formßtovanß data z polo╛ky v editaΦnφm okn∞. |
DatovΘ ovladaΦe zp°φstup≥ujφ data i b∞hem nßvrhu. Kdy╛
nastavφme vlastnost
DataSource ovladaΦe na aktivnφ datov² zdroj
ve vytvß°enΘ aplikaci, m∙╛eme bezprost°edn∞ vid∞t ╛ivß data v ovladaΦi.
Editor polo╛ek m∙╛eme pou╛φt k prochßzenφ datovou mno╛inou b∞hem nßvrhu
k ov∞°enφ, zda na╣e aplikace zobrazuje data sprßvn∞ a to bez nutnosti p°ekladu
a spu╣t∞nφ aplikace.
Za b∞hu aplikace, datovΘ ovladaΦe takΘ zobrazujφ data
a umo╛≥ujφ editaci dat (jestli╛e to povoluje ovladaΦ a databßze, ke kterΘ
jsme p°ipojeni).
P°i°azovßnφ
datov²ch ovladaΦ∙ k datovΘ mno╛in∞
DatovΘ ovladaΦe p°i°azujeme k datov²m mno╛inßm pomocφ datovΘho
zdroje. Komponenta datovΘho zdroje slou╛φ jako propojenφ ovladaΦe a datovΘ
mno╛iny obsahujφcφ data. Pro p°i°azenφ datovΘho ovladaΦe k datovΘ mno╛in∞:
-
Umφstφme komponenty datovΘ mno╛iny a datovΘho zdroje do datovΘho
modulu (nebo na formulß°) a nastavφme podle pot°eby jejich vlastnosti.
-
Umφstφme datovΘ ovladaΦe ze strßnky Data Access Palety
komponent na formulß°.
-
Nastavφme vlastnost DataSource ovladaΦe na jmΘno komponenty
datovΘho zdroje z kterΘho chceme zφskßvat data.
-
Nastavφme vlastnost DataField ovladaΦe na jmΘno zobrazovanΘ
polo╛ky (nebo vybereme jmΘno polo╛ky z rozbalovacφho seznamu vlastnosti).
Tento krok neprovßdφme pro TDBGrid, TDBCtrlGrid a TDBNavigator,
proto╛e p°istupujφ ke v╣em polo╛kßm v datovΘ mno╛in∞.
-
Nastavφme vlastnost Active datovΘ mno╛iny na true
k zobrazenφ dat v ovladaΦi.
Editovßnφ a aktualizace dat
V╣echny datovΘ ovladaΦe mimo navigßtora zobrazujφ data z
polo╛ek databßze. M∙╛eme je takΘ pou╛it k editaci a aktualizaci dat, pokud
to p°ipojenß datovß mno╛ina umo╛≥uje.
Nßsledujφcφ body popisujφ jak umo╛nit u╛ivateli editaci
dat z databßzov²ch polo╛ek pomocφ datov²ch ovladaΦ∙:
Povolenφ editace
v ovladaΦi na zßklad∞ vstupu u╛ivatele
Datovß mno╛ina musφ b²t ve stavu dsEdit, aby umo╛nila
editaci sv²ch dat. Vlastnost AutoEdit datovΘho zdroje, ke kterΘmu
je ovladaΦ p°i°azen urΦuje, zda p°ipojenß datovß mno╛ina zφskß stav dsEdit,
kdy╛ data v ovladaΦi jsou modifikovßna v reakci na udßlosti klßvesnice
nebo my╣i. Pokud AutoEdit je true (implicitn∞), pak p°i editaci
ovladaΦe je automaticky nastaven re╛im dsEdit. Jestli╛e AutoEdit
je
false, pak p°echod do stavu dsEdit za b∞hu aplikace musφ
zajistit ovladaΦ
TDBNavigator (nebo n∞co jinΘho).
Editovßnφ dat v ovladaΦi
Vlastnost ReadOnly datovΘho ovladaΦe urΦuje, zda u╛ivatel
m∙╛e editovat data zobrazenß ovladaΦem. Mß-li hodnotu false (implicitnφ
hodnota), u╛ivatel m∙╛e data editovat. K zabrßn∞nφ editace dat v ovladaΦi
nastavφme
ReadOnly na true.
To, zda u╛ivatel m∙╛e ·sp∞╣n∞ editovat data v ovladaΦi
a zda m∙╛e zm∞ny posφlat zp∞t datovΘ mno╛in∞, urΦujφ takΘ vlastnosti k
ovladaΦi p°i°azenΘho datovΘho zdroje a datovΘ mno╛iny. Vlastnost Enabled
datovΘho zdroje urΦuje, zda ovladaΦ p°i°azen² k datovΘmu zdroji je schopen
zobrazit hodnoty polo╛ek z datovΘ mno╛iny a tedy takΘ urΦuje zda u╛ivatel
m∙╛e editovat a posφlat hodnoty zp∞t do datovΘ mno╛iny. Pokud Enabled
je true (implicitnφ hodnota), pak ovladaΦ m∙╛e zobrazovat hodnoty
polo╛ek. Vlastnost ReadOnly datovΘ mno╛iny urΦuje zda u╛ivatelova
editace m∙╛e b²t posφlßna datovΘ mno╛in∞. Je-li false (implicitnφ
hodnota), pak zm∞ny jsou posφlßny datovΘ mno╛in∞. P°i hodnot∞ true
je datovß mno╛ina urΦena pouze pro Φtenφ.
Poznßmka: Komponenta datovΘ mno╛iny mß vlastnost
CanModify
(vlastnost p°φstupnß pouze za b∞hu aplikace), kterß urΦuje, zda datovß
mno╛ina m∙╛e b²t modifikovßna. CanModify je nastaveno na true,
pokud databßze umo╛≥uje zßpis. Pokud CanModify je
false,
pak datovß mno╛ina je urΦena pouze pro Φtenφ.
Nßsledujφcφ tabulka shrnuje faktory, kterΘ urΦujφ, zda
u╛ivatel m∙╛e editovat data v ovladaΦi a posφlat zm∞ny do databßze.
Vlastnost ReadOnly datovΘho ovladaΦe
|
Vlastnost Enabled datovΘho zdroje
|
Vlastnost ReadOnly datovΘ mno╛iny
|
Vlastnost CanModify datovΘ mno╛iny
|
Zßpisov² p°φstup k databßzi
|
M∙╛eme zapisovat do databßze?
|
false
|
true
|
false
|
true
|
Read/Write
|
ano
|
false
|
true
|
false
|
false
|
ReadOnly
|
ne
|
false
|
false
|
-
|
-
|
-
|
ne
|
true
|
-
|
-
|
-
|
-
|
ne
|
Ve v╣ech datov²ch ovladaΦφch mimo TDBGrid, kdy╛
modifikujeme polo╛ku, pak modifikace je p°ed opu╣t∞nφm ovladaΦe p°ekopφrovßna
do p°i°azenΘ polo╛kovΘ komponenty v datovΘ mno╛in∞. Pokud stiskneme Esc
p°ed opu╣t∞nφm ovladaΦe, pak zm∞ny jsou zru╣eny a polo╛ka si ponechß p∙vodnφ
hodnotu. V TDBGrid jsou modifikace kopφrovßny pouze p°i p°echodu
na jin² zßznam; stisknutφ Esc ru╣φ v╣echny zm∞ny provedenΘ v souΦasnΘm
zßznamu.
Kdy╛ zßznam je odeslßn, pak C++ Builder testuje v╣echny
datovΘ ovladaΦe p°i°azenΘ k datovΘ mno╛in∞ na stav zm∞n. Pokud n∞kterß
polo╛ka mß problΘmy s aktualizacφ, pak C++ Builder generuje v²jimku a zßznam
nenφ modifikovßn.
Zakazovßnφ a povolovßnφ
zobrazovßnφ dat
Kdy╛ aplikace prochßzφ datovou mno╛inou nebo provßdφ hledßnφ,
pak je vhodnΘ doΦasn∞ zabrßnit v zobrazovßnφ hodnot v datov²ch ovladaΦφch
p°i zm∞n∞ souΦasnΘho zßznamu. Zßkaz zobrazovßnφ hodnot urychluje prochßzenφ
nebo hledßnφ a zamezuje kmitßnφ obrazu. Metoda DisableControls datovΘ
mno╛iny zakazuje zobrazovßnφ pro v╣echny datovΘ ovladaΦe p°ipojenΘ k datovΘ
mno╛in∞. K op∞tovnΘmu povolenφ zobrazovßnφ volßme metodu EnableControls
datovΘ mno╛iny.
Obvykle zakß╛eme zobrazovßnφ p°ed zahßjenφm iteraΦnφho
procesu. Samotn² iteraΦnφ proces umφstφme do p°φkazu try ... catch
a tak zajistφme op∞tovnΘ povolenφ i p°i v²skytu v²jimky b∞hem zpracovßnφ.
V klauzuli catch pak volßme EnableControls (mimo volßnφ EnableControls
i za blokem try ... catch). Nßsledujφcφ k≤d ukazuje jak to provΘst.
CustTable->DisableControls();
try
{
// prochßzenφ v╣emi zßznamy datovΘ
mno╛iny
for (CustTable->First(); !CustTable->EOF;
CustTable->Next())
{
// Zpracovßnφ ka╛dΘho zßznamu
...
}
}
catch (...)
{
CustTable->EnableControls();
throw; // op∞tovnΘ generovßnφ v²jimky
}
CustTable->EnableControls();
Obnovenφ zobrazenφ dat
Metoda Refresh datovΘ mno╛iny vyprazd≥uje lokßlnφ
vyrovnßvacφ pam∞ti a obnovuje data pro otev°enou datovou mno╛inu. Tuto
metodu m∙╛eme pou╛φt k aktualizaci hodnot zobrazen²ch v datov²ch ovladaΦφch,
pokud chceme zφskat aktußlnφ data v p°φpad∞, kdy mohla b²t zm∞n∞na jin²mi
aplikacemi, kterΘ majφ k dat∙m soub∞╛n² p°φstup.
Pozor: V n∞kter²ch p°φpadech to ale m∙╛e vΘst
k neoΦekßvan²m v²sledk∙m. Nap°. jestli╛e u╛ivatel zobrazuje zßznam zru╣en²
jinou aplikacφ, pak v okam╛iku volßnφ Refresh zßznam zmizφ.
Povolenφ udßlostφ
my╣i, klßvesnice a ΦasovaΦe
Vlastnost Enabled datovΘho ovladaΦe urΦuje zda ovladaΦ
reaguje na udßlosti my╣i, klßvesnice nebo Φasova°e a p°edßvß informace
svΘmu datovΘmu zdroji. Implicitnφ nastavenφ tΘto vlastnosti je true.
K zabrßn∞nφ udßlostφ my╣i, klßvesnice a ΦasovaΦe v p°φstupu k datovΘmu
ovladaΦi, nastavφme jeho vlastnost Enabled na false. Kdy╛
Enabled
je false, pak datov² zdroj nezφskßvß informace z datovΘho ovladaΦe.
Datov² ovladaΦ pokraΦuje v zobrazovßnφ dat, ale zobrazen² text v ovladaΦi
je zaml╛en².
OvladaΦe reprezentujφcφ
samostatnou polo╛ku
Mnoho ovladaΦ∙ na strßnce Data controls Palety komponent
reprezentuje jednu polo╛ku v databßzovΘ tabulce. V∞t╣ina z t∞chto ovladaΦ∙
se podobß vzhledem a funkΦnostφ standardnφm ovladaΦ∙m Windows, kterΘ umφstφme
na formulß°. Nap°. ovladaΦ TDBEdit je datovß verze standardnφho
ovladaΦe TEdit, kter² umo╛≥uje u╛ivateli vid∞t a editovat textov²
°et∞zec.
Kter² ovladaΦ pou╛ijeme zßvisφ na typu dat (text, formßtovan²
text, grafika, logickß informace apod.) obsa╛en²ch v polo╛ce. Nßsledujφcφ
body popisujφ tyto komponenty podrobn∞ji:
Zobrazovßnφ dat jako popis
TDBText je ovladaΦ urΦen² pouze pro Φtenφ, kter² se
podobß standardnφ komponent∞ TLabel nebo komponent∞ TStaticText.
OvladaΦ TDBText je u╛iteΦn² kdy╛ chceme pouze zobrazovat data na
formulß°i. Nap°. p°edpoklßdejme formulß° vytvß°en² pro polo╛ky v tabulce
zßkaznφk∙ pro zadßvßnφ ulice, m∞sta a stßtu. M∙╛eme pou╛φt dynamickΘ vyhledßvßnφ
po╣tovnφho sm∞rovacφho Φφsla pro zadanΘ m∞sto v jinΘ tabulce. Komponenta
TDBText
pak
m∙╛e b²t pou╛ita k zobrazenφ PS╚, kterΘ odpovφdß adrese zadanΘ u╛ivatelem.
TDBText zφskßvß text k zobrazenφ ze specifikovanΘ
polo╛ky v souΦasnΘm zßznamu datovΘ mno╛iny. Proto╛e TDBText zφskßvß
sv∙j text z datovΘ mno╛iny, text je zobrazovßn dynamicky (text se m∞nφ
p°i prochßzenφ zßznamy databßzovΘ tabulky). Tedy nelze specifikovat zobrazovan²
text TDBText p°i nßvrhu, jak je to mo╛no provΘst u TLabel
nebo TStaticText.
Poznßmka: Kdy╛ umφstφme komponentu TDBText
na formulß° a pot°ebujeme zobrazovat data r∙znΘ ╣φ°ky, pak nastavφme jejφ
vlastnost AutoSize je true (implicitn∞), k zaji╣t∞nφ zm∞ny
velikosti ovladaΦe. Pokud
AutoSize je nastaveno na false
a ovladaΦ je p°φli╣ mal², pak zobrazenß data jsou o°φznuta.
Zobrazovßnφ a editace
polo╛ek v TDBEdit
TDBEdit je databßzovß verze editaΦnφ komponenty. TDBEdit
zobrazuje aktußlnφ hodnotu datovΘ polo╛ky, ke kterΘ je p°ipojena a umo╛≥uje
editaci pou╛itφm standardnφch technik.
Nap°. p°edpoklßdejme, ╛e CustomersSource je komponenta
TDataSource,
kterß je aktivnφ a p°ipojena k otev°enΘ TTable nazvanΘ CustomersTable.
M∙╛eme pak umφstit komponentu TDBEdit na formulß° a nastavit jejφ
vlastnosti takto: DataSource na CustomersSource a DataField
na CustNo. EditaΦnφ datovß komponenta bezprost°edn∞ zobrazφ hodnotu
ze souΦasnΘho °ßdku sloupce CustNo datovΘ mno╛iny
CustomersTable
a to jak b∞hem nßvrhu tak i p°i b∞hu aplikace.
Zobrazovßnφ a
editace textu pomocφ TDBMemo
TDBMemo je datovß komponenta (podobajφcφ se standardnφ
komponent∞
TMemo), kterß m∙╛e zobrazovat data velkΘho binßrnφho
objektu (BLOB).
TDBMemo zobrazuje vφce°ßdkov² text a umo╛≥uje jej
takΘ zadßvat. OvladaΦ TDBMemo m∙╛eme pou╛φt k zobrazovßnφ memo polo╛ek
z tabulek dBASE a Paradoxu a textovß data obsa╛enß v polo╛kßch BLOB.
Implicitn∞ TDBMemo umo╛≥uje u╛ivateli editovat
memo text. K zabrßn∞nφ editace nastavφme vlastnost ReadOnly ovladaΦe
memo na
true. K zobrazovßnφ tabulßtor∙ a umo╛n∞nφ u╛ivateli jejich
zadßvßnφ do mema, nastavφme vlastnost WantTabs na true. Pro
omezenφ poΦtu znak∙, kterΘ u╛ivatel m∙╛e zadat do tΘto polo╛ky, pou╛φvßme
vlastnost
MaxLength. Implicitnφ hodnota pro MaxLength je
0,
co╛ znamenß, ╛e poΦet znak∙ nenφ omezen jinak ne╛ mo╛nostmi operaΦnφho
systΘmu.
N∞kolik vlastnostφ ovliv≥uje zobrazovßnφ a zp∙sob zadßvßnφ
textu. M∙╛eme °φdit zobrazovßnφ posuvnφk∙ a to pomocφ vlastnosti ScrollBars.
K zabrßn∞nφ zalamovßnφ slov nastavφme vlastnost WordWrap na false.
Vlastnost Alignment urΦuje jak bude text zarovnßvßn v ovladaΦi.
Mo╛nΘ hodnoty jsou: taLeftJustify (implicitn∞), taCenter
a taRightJustify. Ke zm∞n∞ pφsma textu pou╛ijeme vlastnost Font.
Za b∞hu aplikace u╛ivatel m∙╛e vyst°ihovat, kopφrovat
a vklßdat text z a do ovladaΦe memo. StejnΘ ·lohy m∙╛eme provßd∞t programov∞
pomocφ metod
CutToClipboard,
CopyToClipboard a PasteFromClipboard.
Proto╛e TDBMemo m∙╛e zobrazit velkΘ mno╛stvφ dat,
zobrazovßnφ m∙╛e n∞jakou dobu trvat. K omezenφ pot°ebnΘho Φasu nastavφme
vlastnost
AutoDisplay (urΦuje, zda zp°φstup≥ovanß data jsou zobrazovßna
automaticky). Jestli╛e
AutoDisplay je false, pak TDBMemo
zobrazφ mφsto aktußlnφch dat jmΘno polo╛ky. Dvojit²m kliknutφm v ovladaΦi
pak zobrazφme aktußlnφ data.
Zobrazovßnφ
a editace textu v ovladaΦi TDBRichEdit
Datovß komponenta TDBRichEdit (podobß se standardnφ
TRichEdit)
m∙╛e zobrazovat formßtovan² text ulo╛en² v polo╛kßch BLOB. TDBRichEdit
zobrazuje
formßtovan² vφce°ßdkov² text a umo╛≥uje u╛ivateli takΘ jeho zadßvßnφ.
Poznßmka: I kdy╛ TDBRichEdit poskytuje
vlastnosti a metody k zadßvßnφ a prßci s Rich textem, komponenta neposkytuje
u╛ivatelskΘ rozhranφ, k zp°φstupn∞nφ formßtovacφch voleb. Na╣e aplikace
musφ implementovat u╛ivatelskΘ rozhranφ k umo╛n∞nφ editace Rich textu.
Implicitn∞ TDBRichEdit umo╛≥uje u╛ivateli editovat
memo text. K zabrßn∞nφ editace nastavφme vlastnost ReadOnly ovladaΦe
na true. Pro zobrazovßnφ tabulßtor∙ a umo╛n∞nφ jejich zadßvßnφ do
ovladaΦe, nastavφme vlastnost WantTabs na true. K omezenφ
poΦtu znak∙, kterΘ u╛ivatel m∙╛e zadat do tΘto polo╛ky, pou╛φvßme vlastnost
MaxLength.
Implicitnφ hodnota pro MaxLength je 0, co╛ znamenß, ╛e poΦet
znak∙ nenφ omezen jinak ne╛ mo╛nostmi operaΦnφho systΘmu.
Proto╛e TDBRichEdit m∙╛e zobrazit velkΘ mno╛stvφ
dat, zobrazovßnφ m∙╛e n∞jakou dobu trvat. K omezenφ pot°ebnΘho Φasu nastavφme
vlastnost
AutoDisplay (urΦuje, zda zp°φstup≥ovanß data jsou zobrazovßna
automaticky). Jestli╛e
AutoDisplay je false, pak TDBRichEdit
zobrazφ mφsto aktußlnφch dat jmΘno polo╛ky. Dvojit²m kliknutφm v ovladaΦi
pak zobrazφme aktußlnφ data.
Zobrazovßnφ a
editace grafick²ch polo╛ek v ovladaΦi TDBImage
TDBImage je datovß komponenta, kterß zobrazuje bitov∞
orientovanou grafiku obsa╛enou v datov²ch polo╛kßch BLOB. Obrßzky BLOB
bere z datovΘ mno╛iny a uklßdß je vnit°n∞ ve Windows ve formßtu .DIB. Implicitn∞
TDBImage
dovoluje u╛ivateli editovat obrßzek a pou╛φvat operace se schrßnkou. M∙╛eme
takΘ pou╛φt vlastnφ editaΦnφ metody p°ipojenΘ k obsluhßm udßlostφ ovladaΦe.
Implicitn∞, ovladaΦ obrßzku zobrazuje tolik grafiky,
kolik se vejde do ovladaΦe. M∙╛eme nastavit vlastnost Stretch na
true,
ke zm∞n∞ velikosti obrßzku tak, aby stßle zapl≥oval ovladaΦ obrßzku i p°i
zm∞n∞ jeho velikosti.
Proto╛e TDBImage m∙╛e zobrazovat velkΘ mno╛stvφ
dat, zobrazenφ m∙╛e n∞jakou dobu trvat. K omezenφ pot°ebnΘho Φasu nastavφme
vlastnost
AutoDisplay (urΦuje, zda zp°φstup≥ovanß data jsou automaticky
zobrazovßna). Jestli╛e
AutoDisplay je false, pak TDBImage
zobrazuje mφsto aktußlnφch dat jmΘno polo╛ky. Dvojit²m kliknutφm v ovladaΦi
zobrazφme aktußlnφ data.
Zobrazovßnφ a editace
dat v seznamech a kombinovan²ch ovladaΦφch
Jsou Φty°i datovΘ ovladaΦe, kterΘ poskytujφ databßzovΘ verze
standardnφch ovladaΦ∙ seznamu a kombinovan²ch ovladaΦ∙. Tyto ovladaΦe poskytujφ
u╛ivateli mno╛inu implicitnφch datov²ch hodnot k volb∞ za b∞hu.
Poznßmka: Tyto datovΘ ovladaΦe mohou b²t spojeny
pouze s datov²mi mno╛inami pro komponenty tabulek (nemohou pracovat s komponentami
dotazu).
Nßsledujφcφ tabulka tyto ovladaΦe popisuje.
OvladaΦ |
Popis |
TDBListBox |
Zobrazuje seznam prvk∙, ze kterΘho u╛ivatel m∙╛e aktualizovat
polo╛ku v souΦasnΘm zßznamu. Seznam zobrazen²ch prvk∙ je vlastnost ovladaΦe. |
TDBComboBox |
Kombinuje editaΦnφ ovladaΦ se seznamem. U╛ivatel m∙╛e
aktualizovat polo╛ku v souΦasnΘm zßznamu volbou hodnoty z rozbalovacφho
seznamu nebo zßpisem hodnoty. Seznam zobrazen²ch prvk∙ je vlastnost ovladaΦe. |
TDBLookupListBox |
Zobrazuje seznam prvk∙, ze kterΘho u╛ivatel m∙╛e aktualizovat
sloupec v souΦasnΘm zßznamu. Seznam zobrazen²ch prvk∙ je zφskßn z jinΘ
datovΘ mno╛iny. |
TDBLookupComboBox |
Kombinuje editaΦnφ ovladaΦ se seznamem. U╛ivatel m∙╛e
aktualizovat polo╛ku v souΦasnΘm zßznamu volbou hodnoty z rozbalovacφho
seznamu nebo zßpisem hodnoty. Seznam zobrazen²ch prvk∙ je zφskßn z jinΘ
datovΘ mno╛iny. |
Tato sekce je popsßna v bodech:
Zobrazovßnφ
a editace dat v seznamech
TDBListBox zobrazuje rolovateln² seznam prvk∙,
ze kterΘho u╛ivatel m∙╛e volit vstup do datovΘ polo╛ky. OvladaΦ seznamu
zobrazuje implicitnφ hodnoty pro polo╛ku v souΦasnΘm zßznamu a zv²raz≥uje
svoji souΦasnou hodnotu v seznamu. Jestli╛e hodnota polo╛ky souΦasnΘho
°ßdku nenφ v seznamu, pak v seznamu nenφ zv²razn∞na ╛ßdnß hodnota. Kdy╛
u╛ivatel vybere prvek seznamu, pak hodnota odpovφdajφcφ polo╛ky v p°ipojenΘ
datovΘ mno╛in∞ je zm∞n∞na.
Pomocφ Editoru seznamu °et∞zc∙ m∙╛eme b∞hem nßvrhu vytvo°it
ve vlastnosti
Items seznam zobrazovan²ch prvk∙. Vlastnost Height
urΦuje, kolik prvk∙ je nejednou v seznamu viditeln²ch. Vlastnost IntegralHeight
°φdφ zp∙sob zobrazenφ seznamu (mß-li hodnotu true, pak poslednφ
prvek seznamu je zobrazen cel², p°i false m∙╛e b²t zobrazen ne·pln²).
Zobrazovßnφ
a editace dat v kombinovan²ch ovladaΦφch
TDBComboBox kombinuje funkΦnost editaΦnφho ovladaΦe
a seznamu. Za b∞hu aplikace u╛ivatel m∙╛e rozbalit seznam, ve kterΘm m∙╛e
vybφrat z p°eddefinovanΘ mno╛iny hodnot, nebo m∙╛e zapsat jinou hodnotu.
Vlastnost Items komponenty specifikuje prvky obsa╛enΘ
v seznamu. Tuto vlastnost nastavujeme p°i nßvrhu pomocφ Editoru seznamu
°et∞zc∙. Za b∞hu aplikace, pou╛φvßme metody vlastnosti Items k manipulaci
se sv²m seznamem °et∞zc∙.
Kdy╛ ovladaΦ je spojen s polo╛kou prost°ednictvφm vlastnosti
DataField,
pak ovladaΦ zobrazuje hodnotu polo╛ky v souΦasnΘm zßznamu a to bez ohledu
na to, zda hodnota se nachßzφ v seznamu prvk∙. Vlastnost
Style urΦuje
interakce u╛ivatele s ovladaΦem. Implicitn∞ Style je csDropDown,
co╛ znamenß, ╛e u╛ivatel m∙╛e zadßvat hodnoty z klßvesnice nebo je volit
v seznamu. Nßsledujφcφ vlastnosti urΦujφ, jak seznam Items je zobrazovßn
za b∞hu aplikace:
-
Style urΦuje styl zobrazenφ komponenty:
-
csDropDown (implicitnφ) - zobrazuje rozbaliteln² seznam
s editaΦnφm ovladaΦem, ve kterΘm u╛ivatel m∙╛e zadßvat text. V╣echny prvky
jsou °et∞zce a majφ stejnou v²╣ku.
-
csSimple - kombinuje editaΦnφ ovladaΦ se seznamem
prvk∙ pevnΘ velikosti, kter² je v╛dy zobrazen. Kdy╛ nastavφme Style
na csSimple, pak musφme zv∞t╣it vlastnost Height, aby seznam
mohl b²t zobrazen.
-
csDropDownList - Zobrazuje rozbaliteln² seznam a editaΦnφ
ovladaΦ, ale u╛ivatel nem∙╛e zadßvat nebo m∞nit hodnotu, kterß nenφ v seznamu.
-
csOwnerDrawFixed a csOwnerDrawVariable - umo╛≥uje
jinΘ zobrazenφ prvk∙ seznamu ne╛ °et∞zce (nap°. bitovΘ mapy) nebo pou╛φvßnφ
r∙zn²ch pφsem pro jednotlivΘ prvky v seznamu.
-
DropDownCount je maximßlnφ poΦet prvk∙ zobrazen²ch
v seznamu. Pokud poΦet prvk∙ je v∞t╣φ ne╛ DropDownCount, pak u╛ivatel
m∙╛e seznamem rolovat.
-
ItemHeight urΦuje ╣φ°ku ka╛dΘho prvku, kdy╛ styl je
csOwnerDrawFixed.
-
Sorted urΦuje zda seznam je zobrazovßn v abecednφm
po°adφ.
Zobrazovßnφ a
editace dat ve vyhledßvacφch seznamech a kombinovan²ch ovladaΦφch
TDBLookupListBox a TDBLookupComboBox jsou datovΘ
ovladaΦe, kterΘ odvozujφ seznam prvk∙ od jednoho z t∞chto dvou zdroj∙:
-
vyhledßvanΘ polo╛ky definovanΘ pro datovou mno╛inu
-
sekundßrnφho datovΘho zdroje, datovΘ polo╛ky a klφΦe
V obou p°φpadech, u╛ivatel je omezen seznamem voleb k nastavovßnφ
p°φpustn²ch hodnot polo╛ky. Kdy╛ u╛ivatel vybere prvek seznamu, je zm∞n∞na
hodnota odpovφdajφcφ polo╛ky v p°ipojenΘ databßzi.
Nap°. p°edpoklßdejme formulß° objednßvky s polo╛kami
z tabulky OrdersTable.
OrdersTable obsahuje polo╛ku CustNo
odpovφdajφcφ identifikaci zßkaznφka, ale
OrdersTable neobsahuje
╛ßdnΘ jinΘ informace o zßkaznφkovi. Tabulka
CustomersTable obsahuje
polo╛ku CustNo odpovφdajφcφ identifikaci zßkaznφka a takΘ obsahuje
dal╣φ polo╛ky s informacemi o zßkaznφkovi, jako je firma zßkaznφka, adresa
zßkaznφka apod. P°i vypl≥ovßnφ formulß°e objednßvky je obvykle v²hodn∞j╣φ
vybφrat firmu zßkaznφka z n∞jakΘho seznamu ne╛ zadßvat identifikaci zßkaznφka.
TDBLookupListBox,
kter² zobrazuje v╣echna jmΘna firem v tabulce
CustomersTable umo╛≥uje
u╛ivateli vybrat jmΘno firmy ze seznamu a nastavit sprßvn∞ CustNo
na formulß°i objednßvky.
V tΘto sekci jsou uvedeny body:
Specifikace
seznamu na zßklad∞ vyhledßvacφ polo╛ky
P°i specifikaci seznamu prvk∙ pomocφ vyhledßvacφ polo╛ky,
datovß mno╛ina ke kterΘ p°ipojujeme ovladaΦ musφ mφt ji╛ vyhledßvacφ polo╛ku
definovßnu. Ke specifikaci vyhledßvacφ polo╛ky pro seznam prvk∙:
-
Nastavφme vlastnost DataSource seznamu na datov² zdroj
pro datovou mno╛inu obsahujφcφ po╛adovanou vyhledßvacφ polo╛ku.
-
Zvolφme po╛adovanou vyhledßvacφ polo╛ku v rozbalovacφm seznamu
vlastnosti
DataField.
Kdy╛ aktivujeme tabulku p°i°azenou k vyhledßvacφmu seznamu,
pak ovladaΦ zjistφ, ╛e jeho datovß polo╛ka je vyhledßvacφ polo╛ka a zobrazφ
p°φslu╣nΘ hodnoty pro vyhledßvßnφ.
Specifikace
seznamu na zßklad∞ sekundßrnφho datovΘho zdroje
Pokud pro datovou mno╛inu nemßme definovanou vyhledßvacφ
polo╛ku, pak m∙╛eme vytvo°it podobn² vzßjemn² vztah pomocφ sekundßrnφho
datovΘho zdroje a hodnoty polo╛ky vracenΘ jako seznam prvk∙. Pro specifikaci
sekundßrnφho datovΘho zdroje pro seznam prvk∙:
-
Nastavφme vlastnost DataSource seznamu na datov² zdroj
pro ovladaΦ.
-
Zvolφme polo╛ku pro vlo╛enφ vyhledan²ch hodnot z rozbalovacφho
seznamu vlastnosti DataField. Nesmφme zvolit vyhledßvacφ polo╛ku.
-
Nastavφme vlastnost ListSource seznamu na datov² zdroj
pro datovou mno╛inu, kterß obsahuje polo╛ku jejφ╛ hodnotu chceme vyhledat.
-
Zvolφme polo╛ku pou╛φvanou jako vyhledßvacφ klφΦ z rozbalovacφho
seznamu vlastnosti KeyField. Jsou zde zobrazeny polo╛ky pro datovou
mno╛inu p°i°azenou k datovΘmu zdroji specifikovanΘmu v p°edchozφm kroku.
-
Zvolφme polo╛ku jejφ╛ hodnota bude vracena, v rozbalovacφm
seznamu vlastnosti
ListField. Jsou zde zobrazeny polo╛ky pro datovou
mno╛inu p°i°azenou k datovΘmu zdroji specifikovanΘmu v kroku 3.
Kdy╛ aktivujeme tabulku p°i°azenou k ovladaΦi vyhledßvacφho
seznamu, pak ovladaΦ vφ, ╛e seznam prvk∙ je odvozen od sekundßrnφho zdroje
a zobrazφ p°φslu╣nΘ hodnoty z tohoto zdroje.
Nastavovßnφ
vlastnostφ vyhledßvacφho seznamu a vyhledßvacφho kombinovanΘho ovladaΦe
Nßsledujφcφ tabulka obsahuje seznam d∙le╛it²ch vlastnostφ
vyhledßvacφho seznamu a vyhledßvacφho kombinovanΘho ovladaΦe.
Vlastnost |
V²znam |
DataField |
Specifikuje polo╛ku v hlavnφ datovΘ mno╛in∞, kterß poskytuje
hodnotu klφΦe pro vyhledßvßnφ ve vyhledßvacφ datovΘ mno╛in∞. Tato polo╛ka
je modifikovßna, kdy╛ u╛ivatel vybere prvek seznamu nebo kombinovanΘho
ovladaΦe. Pokud DataField je nastavena na vyhledßvacφ polo╛ku, pak
vlastnosti
KeyField, ListField a ListSource nejsou
pou╛ity. |
DataSource |
Specifikuje datov² zdroj pro ovladaΦ. Pokud v²b∞r v ovladaΦi
je zm∞n∞n, pak tato datovß mno╛ina je uvedena do stavu dsEdit. |
KeyField |
Specifikuje polo╛ku ve vyhledßvacφ datovΘ mno╛in∞ odpovφdajφcφ
DataField.
OvladaΦ hledß hodnotu pro DataField v KeyField vyhledßvacφ
datovΘ mno╛iny. |
ListField |
Specifikuje polo╛ku ve vyhledßvacφ datovΘ mno╛in∞ pro
zobrazenφ v ovladaΦi. |
ListSource |
Specifikuje datov² zdroj pro sekundßrnφ (vyhledßvacφ)
datovou mno╛inu. Po°adφ prvk∙ zobrazen²ch v seznamu nebo kombinovanΘm ovladaΦi
je urΦeno indexem specifikovan²m vlastnostφ IndexName vyhledßvacφ
datovΘ mno╛iny. Nemusφ to b²t stejn² index jako je pou╛it vlastnostφ KeyField. |
RowCount |
Pouze pro TDBLookupListBox. Specifikuje poΦet
°ßdk∙ textu zobrazenΘho v seznamu. V²╣ka ovladaΦe je upravena k p°esnΘmu
zapln∞nφ tφmto poΦtem °ßdk∙. |
DropDownRows |
Pouze pro TDBLookupComboBox. Specifikuje poΦet
°ßdk∙ textu zobrazenΘho v rozbalovacφm seznamu. |
Inkrementßlnφ
vyhledßvßnφ hodnoty v seznamu
Za b∞hu aplikace u╛ivatel m∙╛e pou╛φt inkrementßlnφ vyhledßvßnφ
k nalezenφ prvku seznamu. Kdy╛ ovladaΦ mß zaost°enφ, pak zßpisem nap°.
'ROB' vybereme prvnφ prvek seznamu zaΦφnajφcφ pφsmeny 'ROB'. Zßpisem dal╣φho
'E' vybereme prvnφ prvek zaΦφnajφcφ 'ROBE', atd. P°i hledßnφ se nerozli╣uje
velikost pφsmen. Backspace a ESC ru╣φ souΦasn² vyhledßvacφ °et∞zec.
Zpracovßnφ hodnot
polo╛ek pomocφ znaΦek
TDBCheckBox je datov² ovladaΦ znaΦky. M∙╛eme jej pou╛φt
k nastavovßnφ hodnot logick²ch polo╛ek v datovΘ mno╛in∞. Nap°. m∙╛eme tφm
urΦovat zda souΦasn² zßznam mß nebo nemß n∞jakou vlastnost.
Datov² ovladaΦ znaΦky spravuje sv∙j oznaΦen² nebo neoznaΦen²
stav porovnßnφm hodnoty souΦasnΘ polo╛ky s obsahem vlastnostφ ValueChecked
a ValueUnchecked. Pokud hodnota polo╛ky odpovφdß vlastnosti ValueChecked,
pak ovladaΦ je oznaΦen; kdy╛ polo╛ka odpovφdß vlastnosti ValueUnchecked,
pak ovladaΦ je neoznaΦen.
Pozor: Hodnoty vlastnostφ ValueChecked
a ValueUnchecked nemohou b²t identickΘ.
Vlastnost ValueChecked nastavφme na hodnotu zasφlanou
ovladaΦem do databßze, p°i oznaΦenΘm ovladaΦi, kdy╛ se u╛ivatel p°esune
na jin² zßznam. Implicitn∞ tato hodnota je nastavena na true, ale
m∙╛eme ji zm∞nit na libovolnou alfanumerickou hodnotu podle pot°eby. M∙╛eme
zde takΘ uvΘst seznam hodnot odd∞len²ch st°ednφky. Jestli╛e libovoln² z
t∞chto prvk∙ odpovφdß obsahu polo╛ky v souΦasnΘm zßznamu, pak znaΦka je
oznaΦena. Nap°. m∙╛eme specifikovat °et∞zec ValueChecked takto:
DBCheckBox1->ValueChecked = "true;Yes;On";
Jestli╛e polo╛ka pro souΦasn² zßznam obsahuje n∞kterou
z hodnot: "true", "Yes" nebo "On", pak znaΦka je oznaΦena. P°i porovnßvßnφ
°et∞zc∙ se nerozli╣uje velikost pφsmen. Pokud u╛ivatel oznaΦφ znaΦku, kterß
mß vφce °et∞zc∙ ValueChecked, pak do databßze je odeslßn prvnφ z
nich.
Obdobn∞ pou╛φvßme vlastnost ValueUnchecked. Implicitn∞
jejφ hodnota je false. Vlastnost obsahuje °et∞zce, kterΘ urΦujφ
neoznaΦenou znaΦku.
Pokud polo╛ka v souΦasnΘm zßznamu neobsahuje n∞kterou
z hodnot °et∞zc∙ ze seznamu z vlastnostφ ValueChecked a ValueUnchecked,
pak znaΦka je zakßzßna. Pokud polo╛ka, ke kterΘ je znaΦka p°i°azena je
logickß hodnota, pak oznaΦenφ znaΦky je urΦeno p°φmo hodnotou polo╛ky.
V tomto p°φpad∞ vlastnosti ValueChecked a ValueUnchecked
nemajφ ╛ßdn² efekt.
UrΦenφ hodnot polo╛ky voliΦi
TDBRadioGroup je databßzovß verze ovladaΦe skupiny
voliΦ∙. Umo╛≥uje nastavit hodnotu datovΘ polo╛ky ovladaΦi voliΦ∙, kdy╛
je omezen poΦet mo╛n²ch hodnot pro polo╛ku. Skupina voliΦ∙ obsahuje jeden
voliΦ pro ka╛dou mo╛nou hodnotu polo╛ky. U╛ivatel m∙╛e nastavit hodnotu
datovΘ polo╛ky v²b∞rem urΦenΘho voliΦe.
Vlastnost Items urΦuje poΦet voliΦ∙, kterΘ jsou
zobrazeny ve skupin∞. Items je seznam °et∞zc∙. Pro ka╛d² °et∞zec
v Items je zobrazen jeden voliΦ a tento °et∞zec je zobrazen napravo
od voliΦe jako popis voliΦe.
Jestli╛e aktußlnφ hodnota polo╛ky p°i°azenΘ ke skupin∞
voliΦ∙ odpovφdß hodnot∞ n∞kterΘho °et∞zce ve vlastnosti Items, pak
odpovφdajφcφ voliΦ je vybrßn. Nap°. pokud ve vlastnosti Items jsou
uvedeny t°i °et∞zce: "Red", "Yellow" a "Blue" a p°φslu╣nß polo╛ka souΦasnΘho
zßznamu obsahuje hodnotu "Blue", pak je oznaΦen t°etφ voliΦ.
Poznφmka: Pokud polo╛ka neobsahuje ╛ßdn² °et∞zec
z Items, pak voliΦ m∙╛e b²t p°esto vybrßn, jestli╛e obsah polo╛ky
odpovφdß °et∞zci ve vlastnosti
Values. Jestli╛e hodnota polo╛ky
neodpovφdß ╛ßdnΘmu °et∞zci v Items nebo Values, pak ╛ßdn²
voliΦ nenφ vybrßn.
Vlastnost Values m∙╛e obsahovat nepovinn² seznam
°et∞zc∙, kterΘ mohou b²t vraceny datovΘ mno╛in∞, kdy╛ u╛ivatel vybere voliΦ
a ode╣le zßznam. ╪et∞zce jsou p°i°azeny po °ad∞ k voliΦ∙m. Prvnφ °et∞zec
je p°i°azen k prvnφmu voliΦi, druh² °et∞zec k druhΘmu voliΦi atd. Nap°.
p°edpoklßdejme, ╛e Items obsahuje "Red", "Yellow" a "Blue" a Values
obsahuje "Magenta", "Yellow" a "Cyan". Pokud u╛ivatel vybere voliΦ "Red",
pak do databßze je odeslßno "Magenta".
Pokud °et∞zce pro Values nejsou poskytnuty, pak
do databßze jsou zasφlßny °et∞zce z Items.
Navigovßnφ a manipulace
se zßznamy
TDBNavigator poskytuje u╛ivateli jednoduch² zp∙sob
pro prochßzenφ zßznamy v datovΘ mno╛in∞ a pro manipulaci se zßznamy. Navigßtor
obsahuje °adu tlaΦφtek, kterΘ umo╛≥ujφ u╛ivateli p°ejφt na nßsledujφcφ
nebo p°edchozφ zßznam, p°ejφt na prvnφ nebo poslednφ zßznam, vlo╛it nov²
zßznam, aktualizovat existujφcφ zßznam, odeslat datovΘ zm∞ny, zru╣it datovΘ
zm∞ny, zru╣it zßznam a obnovit zobrazenφ zßznamu.
V╣echna tato tlaΦφtka nemusφ b²t zobrazena v╛dy (viz
Volba
zobrazenφ tlaΦφtek navigßtora).
V nßsledujφcφ tabulce jsou popsßna tlaΦφtka navigßtora
(zleva doprava):
TlaΦφtko |
V²znam |
First |
Volß metodu First datovΘ mno╛iny k nastavenφ souΦasnΘho
zßznamu na prvnφ zßznam. |
Prior |
Volß metodu Prior datovΘ mno╛iny k nastavenφ souΦasnΘho
zßznamu na p°edchozφ zßznam. |
Next |
Volß metodu Next datovΘ mno╛iny k nastavenφ souΦasnΘho
zßznamu na nßsledujφcφ zßznam. |
Last |
Volß metodu Last datovΘ mno╛iny k nastavenφ souΦasnΘho
zßznamu na poslednφ zßznam. |
Insert |
Volß metodu Insert datovΘ mno╛iny k vlo╛enφ novΘho
zßznamu p°ed souΦasn² zßznam a uvßdφ datovou mno╛inu do stavu dsInsert. |
Delete |
Ru╣φ souΦasn² zßznam. Pokud vlastnost ConfirmDelete
je true, pak jsme dotßzßnφ na potvrzenφ p°ed zru╣enφm. |
Edit |
Uvßdφ datovou mno╛inu do stavu dsEdit, co╛ umo╛≥uje
modifikaci souΦasnΘho zßznamu. |
Post |
Zapisuje zm∞ny v souΦasnΘm zßznamu do databßze. |
Cancel |
Ru╣φ provedenΘ zm∞ny v souΦasnΘm zßznamu a vracφ datovou
mno╛inu do stavu dsBrowse. |
Refresh |
Vyprazd≥uje zobrazovacφ vyrovnßvacφ pam∞ti datov²ch ovladaΦ∙
a potom obnovφ obsah t∞chto vyrovnßvacφch pam∞tφ z fyzickΘ tabulky nebo
dotazu. Je to u╛iteΦnΘ, pokud data mohou b²t m∞n∞na jinou aplikacφ. |
Volba zobrazenφ tlaΦφtek
navigßtora
Kdy╛ p°i nßvrhu umφstφme TDBNavigator na formulß°,
pak v╣echna jeho tlaΦφtka jsou viditelnß. Vlastnost VisibleButtons m∙╛eme
pou╛φt k vypnutφ tlaΦφtek, kterΘ nechceme zobrazovat. Nap°. na formulß°i,
kter² chceme pou╛φvat k prohlφ╛enφ a ne editovßnφ, m∙╛eme zakßzat tlaΦφtka
Edit,
Insert,
Delete,
Post
a Cancel.
V tΘto sekci jsou uvedeny body:
Skr²vßnφ
a zobrazovßnφ tlaΦφtek navigßtora p°i nßvrhu
Vlastnost VisibleButtons v Inspektoru objekt∙
je zobrazena se znakem +, co╛ znamenß, ╛e ji m∙╛eme expandovat k zobrazenφ
logick²ch hodnot pro ka╛dΘ tlaΦφtko navigßtora. Viditelnost tlaΦφtka je
indikovßna logickou hodnotou. Pokud hodnota je nastavena na true,
tak p°φslu╣nΘ tlaΦφtko je zobrazeno.
Poznßmka: P°i nastavenφ na false, tlaΦφtko
je z navigßtora na formulß°i odstran∞no a zb²vajφcφ tlaΦφtka jsou roz╣φ°ena
tak, aby zaplnily ╣φ°ku ovladaΦe.
Skr²vßnφ
a zobrazovßnφ tlaΦφtek navigßtora za b∞hu
Za b∞hu aplikace m∙╛eme skr²vat nebo zobrazovat tlaΦφtka
navigßtora v reakci na akce u╛ivatele nebo stavu aplikace. Nap°. p°edpoklßdejme
pou╛itφ jednoho navigßtora pro navigovßnφ dvou r∙zn²ch datov²ch mno╛in,
jednΘ s mo╛nostφ editace zßznam∙ a druhΘ pouze pro prohlφ╛enφ. Podle toho,
kterou datovou mno╛inu navigujeme pot°ebujeme na navigßtoru r∙znß tlaΦφtka.
M∙╛eme to zajistit nap°. nßsledujφcφ obsluhou udßlosti:
void __fastcall TForm1::CustomerCompanyEnter(TObject
*Sender)
{
if (Sender == (TObject *)CustomerCompany)
{
DBNavigatorAll->DataSource
= CustomerCompany->DataSource;
DBNavigatorAll->VisibleButtons.Clear();
DBNavigatorAll->VisibleButtons<<nbFirst
<< nbPrior << nbNext << nbLast;
}
else
{
DBNavigatorAll->DataSource
= OrderNum->DataSource;
DBNavigatorAll->VisibleButtons
<< nbInsert << nbDelete << nbEdit
<< nbPost << nbCancel << nbRefresh;
}
}
Zobrazovßnφ nßpov∞dy
K zobrazovßnφ nßpov∞dy pro ka╛dΘ tlaΦφtko navigßtora za b∞hu
aplikace, nastavφme vlastnost navigßtora ShowHint na true.
Pokud ShowHint je true, pak navigßtor zobrazuje nßpov∞du,
kdy╛ se zastavφme kurzorem my╣i nad tlaΦφtkem. ShowHint je implicitn∞
false.
Vlastnost Hints urΦuje texty nßpov∞dy pro v╣echna
tlaΦφtka. Implicitn∞ Hints je prßzdn² seznam °et∞zc∙. Kdy╛ Hints
je prßzdnΘ, pak pro ka╛dΘ tlaΦφtko je zobrazovßn implicitnφ text.
Pro zadßnφ sv²ch vlastnφch text∙ nßpov∞dy pro navigaΦnφ tlaΦφtka pou╛ijeme
Editor seznamu °et∞zc∙ k zadßnφ text∙ pro ka╛dΘ tlaΦφtko ve vlastnosti
Hints.
Pou╛itφ jednoho
navigßtora pro vφce datov²ch mno╛in
Stejn∞ jako u ostatnφch datov²ch ovladaΦ∙, vlastnost navigßtora
DataSource
urΦuje datov² zdroj, kter² p°ipojuje ovladaΦ k datovΘ mno╛in∞. Zm∞nou tΘto
vlastnosti za b∞hu aplikace m∙╛eme p°ejφt k °φzenφ jinΘ datovΘ mno╛iny.
P°edpoklßdejme formulß° obsahujφcφ dva editaΦnφ ovladaΦe
spojenΘ s datov²mi mno╛inami CustomersTable a OrdersTable
prost°ednictvφm datov²ch zdroj∙ CustomersSource a OrdersSource.
Kdy╛ u╛ivatel pou╛φvß editaΦnφ ovladaΦ p°ipojen² ke CustomersSource,
pak vy╛aduje aby navigßtor byl takΘ p°epnut na CustomersSource a
kdy╛ pracuje s editaΦnφm ovladaΦem p°ipojen²m k OrdersSource, pak
chce aby navigßtor byl takΘ p°epnut na OrdersSource. M∙╛eme vytvo°it
obsluhu udßlosti
OnEnter pro jeden editaΦnφ ovladaΦ a potom sdφlet
tuto obsluhu s ostatnφmi editaΦnφmi ovladaΦi. Nap°.
void __fastcall TForm1::CustomerCompanyEnter(TObject
*Sender)
{
if (Sender == (TObject *)CustomerCompany)
DBNavigatorAll->DataSource
= CustomerCompany->DataSource;
else
DBNavigatorAll->DataSource
= OrderNum->DataSource;
}
-
Dal╣φ aplikace, kterou se budeme zab²vat ukazuje jak v databßzovΘ aplikaci
pou╛φt vφce formulß°∙. Bude zde takΘ pou╛ita komponenta TDBNavigator.
Hlavnφ formulß° na╣φ aplikace je jednoduch². Obsahuje pouze nabφdku a komponentu
TDBNavigator.
Velikost formulß°e upravφme tak, aby obsahoval pouze tyto komponenty. Vlastnost
Name
formulß°e
zm∞nφme na fmToolBar. Nabφdka obsahuje volby
File (s volbou
Close),
Record
(s volbami First,
Next,
Prior,
Last,
Delete,
Insert
a
Cancel) a Help (s volbami
About a
Messages).
Formulß° obsahuje nßsledujφcφ ve°ejnΘ metody:
void virtual __fastcall SetNavigator(const
TDataSource* ds);
void __fastcall UpdateMenu();
Implementace t∞chto metod je:
void __fastcall TfmToolBar::SetNavigator(const
TDataSource* ds)
{
if(DBNavigator1->DataSource != ds){
if(Messages1->Checked)
ShowMessage(AnsiString("Changing
DBNavigator's datasource to ") + ds->Name);
DBNavigator1->DataSource
= (TDataSource*) ds;
UpdateMenu();
}
}
void __fastcall TfmToolBar::UpdateMenu()
{
First1->Enabled = !DBNavigator1->DataSource->DataSet->Bof;
Next1->Enabled = !DBNavigator1->DataSource->DataSet->Eof;
Prior1->Enabled = !DBNavigator1->DataSource->DataSet->Bof;
Last1->Enabled = !DBNavigator1->DataSource->DataSet->Eof;
Insert1->Enabled=DBNavigator1->DataSource->DataSet->State==dsBrowse;
Delete1->Enabled=DBNavigator1->DataSource->DataSet->State==dsBrowse;
Cancel1->Enabled=DBNavigator1->DataSource->DataSet->State==dsEdit
||
DBNavigator1->DataSource->DataSet->State==dsInsert;
}
Volby v nabφdce tvo°φ p°φkazy: Pro volbu First:
DM1->Customer->First();
UpdateMenu();
Volba Next:
DM1->Customer->Next();
UpdateMenu();
Volba Prior:
DM1->Customer->Prior();
UpdateMenu();
Volba Last:
DM1->Customer->Last();
UpdateMenu();
Volba Delete:
DM1->Customer->Delete();
UpdateMenu();
Volba Insert:
DM1->Customer->Insert();
UpdateMenu();
Volba Cancel:
DM1->Customer->Cancel();
UpdateMenu();
Volba Close: Close();
Volba About: fmAboutBox->ShowModal();
Volba Messages: Messages1->Checked
= !Messages1->Checked;
Tφm je hlavnφ formulß° hotov. Ulo╛φme jej do souboru ToolBar.
-
Pro p°φstup k dat∙m budeme pou╛φvat datov² modul. Vytvo°φme jej volbou
File
| New Data Module a vlo╛φme do n∞j dv∞ komponenty TTable a dv∞
komponenty TDataSource. Vlastnost Name datovΘho modulu zm∞nφme
na DM1 a ulo╛φme jej do souboru DM. U prvnφ TTable
nastavφme vlastnost Name na Customer, vlastnost DatabaseName
na
BCDEMOS,
TableName
na Customer.DB, vlastnost
IndexName na ByCompany a
vlastnost Active na True. Prvnφ komponentu
TDataSource
nazveme
CustomerSource
a nastavφme u nφ Dataset na Customer. U druhΘ komponenty
TTable
to bude obdobnΘ:
Name na Orders,
DatabaseName na BCDEMOS,
TableName
na Orders.DB, vlastnost IndexName na CustNo a vlastnost
MasterSource
na CustomerSource. Dvojit²m kliknutφm na vlastnosti
Master Fields
zobrazφme dialogovΘ okno Field Link Designer, v obou hornφch seznamech
vybereme CustNo a stiskneme tlaΦφtko Add. Tφm mßme definovßnu
vazbu mezi tabulkami. U druhΘ
TTable nastavφme je╣t∞ Active
na true. Druhou
TDataSource nazveme OrdersSource a
nastavφme u nφ Dataset na Orders. Datov² modul je hotov.
-
Formulß° fmAboutBox je zobrazen na nßsledujφcφm obrßzku. Neobsahuje
╛ßdn² k≤d a vytvo°te jej tedy sami. Ulo╛te jej do souboru About.
-
Aplikace je dßle tvo°ena dal╣φm formulß°em. P°idßme tedy k aplikaci dal╣φ
formulß°. Zm∞nφme jeho vlastnost Name na fmCustomer, vlastnost
Caption
na Customer a Visible na true. Vlo╛φme na n∞j komponentu
TDBGrid,
kterß bude zabφrat v∞t╣inu plochy formulß°e. U TDBGrid nastavφme
vlastnost DataSource na DM->CustomerSource. Pro formulß°
vytvo°φme je╣t∞ t°i obsluhy udßlostφ: obsluha OnActivate je tvo°ena:
fmToolBar->SetNavigator(DM1->CustomerSource);
Obsluhu OnCreate tvo°φ:
fmToolBar->SetNavigator(DM1->CustomerSource);
a obsluha OnShow obsahuje p°φkaz:
fmToolBar->UpdateMenu();
Formulß° je hotov a ulo╛φme jej do souboru CustData.
-
K aplikaci pat°φ je╣t∞ jeden formulß°. Vytvo°φme jej a zm∞nφme u n∞j Name
na fmCustOrd, Caption na Data Navigation a Visible
na true. K hornφmu okraji formulß°e vlo╛φme komponentu TDBEdit
a nastavφme u nφ DataSource na DM1->CustomerSource a DataField
na Company. Zb²vajφcφ plochu formulß°e bude zabφrat TDBGrid
u kterΘ nastavφme DataSource na DM1->OrdersSource. Vytvo°φme
je╣t∞ dv∞ obsluhy udßlostφ: Obsluha OnActivate formulß°e je tvo°ena
p°φkazem:
if(ActiveControl == DBGrid1)
DBGrid1Enter(NULL);
a obsluhu OnEnter datovΘ m°φ╛ky tvo°φ p°φkaz:
fmToolBar->SetNavigator(DM1->OrdersSource);
Formulß° ulo╛φme do souboru CustOrds. Tφm je na╣e aplikace tΘm∞°
hotova. Je nutno vlo╛it je╣t∞ n∞kolik hlaviΦkov²ch soubor∙. DokonΦete jejφ
v²voj sami. Zjist∞te, co ovlßdßme volbou Help | Messages?
-
Podφvßme se je╣t∞ na jednu hotovou aplikaci. Podobß se na╣i p°edchozφ aplikaci
(pouze se jednß o MDI aplikaci). Nalezneme ji v adresß°i Program Files\Borland\CBuilder
X\Examples\DBTasks\NavMDI. Aplikaci vyzkou╣ejte a podφvejte se jak
je vytvo°ena.
![](/file/23411/Chip_2002-05_cd1.bin/chplus/cpp/4/PreviousArrow.gif) ![](/file/23411/Chip_2002-05_cd1.bin/chplus/cpp/4/NextArrow.gif) ![](/file/23411/Chip_2002-05_cd1.bin/chplus/cpp/4/WayUpArrow.gif) |
8. Prßce s datov²mi ovladaΦi
|