Serißl - 14. dφl
DalÜφ ovlßdacφ prvky - 2. Φßst
15. DalÜφ ovlßdacφ prvky
15.6 Soubory, disky, adresß°e
15.7 ProgresBar a Slider
15.8 TabStrip
15. DalÜφ ovlßdacφ prvky
V minulΘm dφle jsme vßm ukßzali, jak pracovat pro vßs s dosud neznßm²mi ovlßdacφmi prvky Visual Basicu. Dnes
v tom budeme pokraΦovat.
15.6 Soubory, disky, adresß°e
V tΘto Φßsti vßm ukß₧eme t°i prvky, kterΘ slou₧φ k prßci s disky, adresß°i a soubory.
Prvnφ z nich je DriveListBox. Jde vlastn∞ o normßlnφ ComboBox, jeho₧ polo₧kami jsou pφsmena
disk∙ poΦφtaΦe vΦetn∞ jejich nßzv∙.
Navφc mß vlastnost Drive , pomocφ kterΘ m∙₧ete zjistit u₧ivatelem
zvolen² disk.
'P°i zm∞n∞ (u₧ivatel si vybere) ukß₧e zvolen² disk - udßlost Change
Private Sub Drive1_Change()
MsgBox Drive1.Drive
End Sub
Pomocφ prvku lze takΘ zφskat seznam vÜech disk∙ poΦφtaΦe a to z pole List
(·pln∞ stejnΘ jako ComboBox).
Dim i As Long
For i = 0 To Drive1.ListCount - 1
Debug.Print Drive1.List(i)
Next i
Druh² z prvk∙ je DirListBox. Jak ji₧ napovφdß jeho nßzev, jde o klasick² ListBox,
jeho₧ polo₧kami jsou adresß°e na vybranΘm disku. Kter² adresß° se zobrazφ, °φdφ vlastnost
Path . Stejnß vlastnost takΘ vracφ u₧ivatelem vybran² adresß°.
'Nastavφ zobrazenφ adresß°e D:\VYVOJ
Dir1.Path = "D:\VYVOJ"
Stejn∞ jako ListBox mß
i DirListBox pole List . To obsahuje podadresß°e prßv∞ zobrazenΘho adresß°e.
P°i nastavenφ na D:\VYVOJ obsahuje tedy pole vÜechny jeho podadresß°e.
'Zobrazφ vÜechny podadresß°e adresß°e D:\VYVOJ
Dim i As Long
Dir1.Path = "D:\VYVOJ"
For i = 0 To Dir1.ListCount - 1
Debug.Print Dir1.List(i)
Next i
Poslednφm prvkem v naÜem krßtkΘm v²Φtu je FileListBox. Stejn∞ jako prvek DirListBox je i tento
skoro obyΦejn²m ListBoxem, jeho₧ polo₧kami jsou soubory v urΦitΘm adresß°i. V jakΘm,
urΦuje vlastnost Path . Vlastnost FileName zase urΦuje nßzev
vybranΘho souboru. Dßte-li ob∞ dohromady, zφskßte nßzev vybranΘho souboru i s cestou.
'VypφÜe nßzev vybranΘho souboru vΦetn∞ cesty
Private Sub File1_Click()
Dim cesta As String
cesta = File1.Path
'cesta do jinΘho ne₧ ko°enovΘho adresß°e je bez lomφtka
If Len(cesta) <> 3 Then cesta = cesta & "\"
Debug.Print cesta & File1.FileName
End Sub
Stejn∞ jako p°edchozφ dva prvky mß i tento pole List , kterΘ obsahuje
nßzvy vÜech soubor∙ zadanΘho adresß°e.
Dim i As Long
File1.Path = "D:\VYVOJ"
For i = 0 To File1.ListCount - 1
Debug.Print File1.List(i)
Next i
Pomocφ Üesti vlastnostφ je mo₧nΘ nastavit, kterΘ soubory se majφ zobrazovat.
Archive , Hidden , Normal , ReadOnly
a System jsou typu Boolean a urΦujφ, zda se majφ nebo nemajφ zobrazit
soubory s atributy archivnφ, skryt², normßlnφ, pouze pro Φtenφ a systΘmovΘ. Vlastnost
Pattern nastavuje Üablonu pro jmΘna, kterß se majφ zobrazit, podle standardnφ
hv∞zdiΦkovΘ konvence. Tj. nap°. nastavenφ na *.txt zobrazφ pouze soubory s p°φponou txt atd.
Nakonec vßm ukß₧eme jeden p°φklad, kter² demonstruje, k Φemu lze tyto t°i prvky vyu₧φt.
Slou₧φ k v²b∞ru souboru na disku. Umφst∞te na formulß° od ka₧dΘho z nich jeden a jeden prvek Label.
Potom vlo₧te tento k≤d (jak k≤d funguje, poznßte urΦit∞ sami, pokud jste
pozorn∞ Φetli celou kapitolu, pokud ne, vyzkouÜejte si jej, pochopφte takΘ):
Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub
Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub
Private Sub File1_Click()
Dim cesta As String
cesta = File1.Path
If Len(cesta) <> 3 Then cesta = cesta & "\"
Label1.Caption = cesta & File1.FileName
End Sub
Pokud neznßte Windows API (pro ty co nev∞dφ o co jde, vysv∞tlφme v n∞kterΘm z p°φÜtφch dφl∙),
m∙₧ete prvky takΘ pou₧φt pro zφskßnφ nßzv∙ vÜech soubor∙ a adresß°∙ na disku
nebo pro vyhlednßnφ souboru nebo adresß°e. Jak to ud∞lat dostanete za domßcφ ·kol
(vyu₧ijte pole List ). Pokud vßm to nep∙jde, zkuste se inspirovat v jednoduchΘm
p°φkladu, kter² jsme pro vßs nachystali.
Zp∞t na obsah
15.7 ProgresBar a Slider
Oba prvky jsou si podobnΘ, ale slou₧φ k opaΦn²m ·Φel∙m. ProgresBarem zobrazφte stav a Sliderem jej nastavφte. Chcete-li p°idat tyto prvky do svΘho projektu, zvolte menu Project a v n∞m polo₧ku Components. Ve zobrazenΘm okn∞ zatrhnete v seznamu polo₧ku Microsoft Windows Common Controls 6.0. PotΘ, co klepnete na tlaΦφtko OK, se vßm v panelu nßstroj∙ s prvky objevφ mimo jinΘ i tyto dva.
ProgressBar, jak bylo °eΦeno zobrazuje pr∙b∞h (stav) n∞jakΘ operace. Pou₧φvß k tomu barevn² sloupec jeho₧ sm∞r (vertikßlnφ Φi horizontßlnφ) urΦφte pomocφ vlastnosti Orientation . Svisl² sm∞r nastavφte konstantou ccOrientationVertical a implicitnφ vodorovn² sm∞r nastvφte pomocφ ccOrientationHorizontal . Standardn∞ ProgressBar vypadß jako sloupec, kter² je p°eruÜovan². Tento vzhled je urΦen vlastnostφ Scroling a konstantou ccScrolingStandard . Chcete-li aby sloupec pr∙b∞hu nebyl p°eruÜovan², nastavte uvedenou vlastnost na ccScrolingSmooth . Nevyhovuje-li vßm to, ₧e je prvek orßmovßn b∞₧n²m 3D okrajem a chcete zφskat pouze sloupec samotn², nastavte vlastnost Appereance na ccFlat . Takto nebude sloupec orßmovßn, to ovÜem pouze za podmφnky, ₧e bude vlastnost BorderStyle nastavena na svou implicitnφ hodnotu ccNone . Toto vÜe m∙₧ete nastavit bu∩ p°φmo pomocφ okna vlastnostφ nebo pou₧ijete strßnek vlastnostφ (Property Pages), kterΘ vyvolßte poklepßnφm na vlastnost Custom (op∞t v okn∞ vlastnostφ). Zde si vystaΦφte s prvnφ zßlo₧kou.
Prvek Slider nastavuje pr∙b∞h (stav) operace. Po ose prvku pohybujete pomocφ Üoupßtka, Φφm₧ nastavφte hodnotu a tφm i pr∙b∞h libovolnΘ operace. Pou₧ijete-li strßnek vlastnostφ vyvolan²ch stejn²m zp∙sobem, kter² byl zmφn∞n v p°edchozφm odstavci, naleznete na druhΘ zßlo₧ce (Appereance) vlastnost Orientation , pomocφ kterΘ nastavφte podobn∞ jako u ProgressBaru sm∞r, ve kterΘm bude prvek orientovßn. DalÜφ vlastnostφ je zde TickStyle , kterß v zßvislosti na p°edchozφ vlastnosti urΦφ, kde se budou nachßzet rysky, je₧ zp°ehlednφ nastavenφ pozice. Umφst∞nφ rysek dole a vpravo (v zßvislosti na sm∞ru prvku) nastavφte konstantou sldBootomRight , vlevo a naho°e s pomocφ sldTopLeft , pro zobrazenφ rysek po obou stranßch sldBoth a pro Slider bez rysek pou₧ijte konstantu sldNoTicks . Nßsledujφcφ polφΦko s nßzvem TickFrequency nastavφte v jak²ch rozestupech se nachßzejφ rysky.
Na prvnφ zßlo₧ce naleznete vlastnost SmallChange , kterß urΦuje nejmenÜφ mo₧n² krok, po kter²ch lze posouvat Üoupßtko. Dßle je zde LargeChange , kterß urΦφ o kolik se posune Üoupßtko (hodnota) p°i kliknutφ na jeho osu. Slider dßle umo₧≥uje i nastavenφ v²b∞ru. V prvΘ °ad∞ je t°eba zaÜkrtnout polφΦko SelectRange . PotΘ nastavte vlastnost SelStart na hodnotu poΦßtku v²b∞ru, a vlastnostφ SelLength nastavφte velikost v²b∞ru. V mφstech, kde jsou umφst∞ny rysky pak naleznete zarß₧ky, kterΘ vÜak nejsou p°φliÜ dob°e vid∞t, co₧ znesnad≥uje pou₧itφ tΘto mo₧nosti.
Co majφ oba prvky spoleΦnΘho jsou vlastnosti Min a Max , pomocφ kter²ch urΦφte poΦßtek a konec rozashu prvku, a tφm i rozsah hodnot, kterΘ m∙₧ete Φφst z vlastnosti Value . Oba prvky majφ udßlosti pro prßci s myÜφ (Click , MouseDown , MouseMove a MouseUp ). Prvek Slider navφc obsahuje udßlosti pro prßci s klßvesnicφ a udßlost Scroll , kterΘ nastane ve chvφli kdy je u₧ivatelem zm∞n∞na poloha Üoupßtka (a tφm i hodnota ve vlastnosti Value ).
Ud∞lßme si jednoduch² p°φklad. V novΘm projektu vlo₧te na formulß° jeden ProgressBar, Slider a prvek Timer. U posledn∞ jmenovanΘho nastavte vlastnost Interval na hodnotu 1000. PotΘ vlo₧te nßsledujφcφ k≤d, a pozorujte co se bude dφt. Nebojte se ovÜem zasßhnout a pohnout s Üoupßtkem Slideru.
Private Sub Form_Load()
Slider1.Min = 0
Slider1.Max = 100
Slider1.TickFrequency = 10
ProgressBar1.Min = 0
ProgressBar1.Max = 100
End Sub
Private Sub Slider1_Scroll()
ProgressBar1.Value = Slider1.Value
End Sub
Private Sub Timer1_Timer()
If Slider1.Value = Slider1.Max Then
Slider1.Value = Slider1.Min
ProgressBar1.Value = Slider1.Value
Else
Slider1.Value = Slider1.Value + 1
ProgressBar1.Value = Slider1.Value
End If
End Sub
Zp∞t na obsah
15.8 TabStrip
Tento prvek urΦit∞ znßte z mnoha aplikacφ Windows. Klasick²m p°φkladem jsou ovlßdacφ panely, kde zobrazφte okno s urΦit²mi vlastnostmi, a ty jsou rozd∞lelny na Φßsti pomocφ zßlo₧ek. Obecn∞ tento prvek m∙₧ete pou₧φt tehdy, kdy₧ pot°ebujete na jednom formulß°i zobrazit vφce ∙daj∙ ne₧ se na n∞j vleze. V tu chvφli m∙₧ete ·daje rozd∞lit na n∞kolik Φßsti, p°iΦem₧ ka₧dß znich se zobrazφ po kliknutφ na p°φsluÜnou zßlo₧ku. Prvek vlo₧φte do svΘho projektu stejn∞ jako prvky ProgresBar a Slider z p°edchozφho oddφlu. Zvolte menu Project a v n∞m polo₧ku Components. Ve zobrazenΘm okn∞ zatrhn∞te v seznamu polo₧ku Microsoft Windows Common Controls 6.0. PotΘ, co klepnete na tlaΦφtko OK, se vßm v panelu nßstroj∙ s prvky objevφ mimo jinΘ i TabStrip (je zobrazen jako prvnφ v po°adφ z p°idan²ch prvk∙).
Pro p°ehlednost op∞t pou₧ijeme strßnek vlastnostφ, kterΘ vyvolßte v okn∞ vlastnostφ poklepßnφm na polo₧ku (Custom) . A zaΦneme popo°ßdku od prvnφ zßlo₧ky General. Hned prvnφ vlastnostφ je MultiRow , kterß urΦφ zp∙sob uspo°ßdßnφ zßlo₧ek. V p°φpad∞, ₧e jsou zßlo₧ky ÜirÜφ ne₧ je prvek, jsou polo₧ky rozd∞leny na vφce °ßdk∙ (kdy₧ je vlastnost zatr₧ena) nebo se lze pohybovat se zßlo₧kami pomocφ dvou tlaΦφtek se Üipkami umφst∞n²mi na pravΘ stran∞. S tφmto souvisφ vlastnost Placement , kterß urΦφ umφst∞nφ zßlo₧ek (naho°e, vlevo atd.). V p°φpad∞ ₧e jsou zßlo₧ky umφst∞ny vpravo nebo vlevo, je vlastnost MultiRow v₧dy nastavena na True . DßlÜφ souvisejφcφ vlastnostφ je TabStyle . Kdy₧ jsou zßlo₧ky ve vφce °ßdcφch, nastavφte konstantou tabTabOpposite , ₧e se p°i vybrßnφ nad°ezenΘho °ßdku p°esune °ßdek s pod°azen²mi zßlo₧kami na opaΦnou stranu. P°i pou₧itφ konstanty tabTabStandard si °ßdky pouze prohazujφ po°adφ a z∙stßvajφ na stejnΘ stran∞. Nejv∞tÜφ zm∞nu ve vzhledu dosßhnete pomocφ vlastnosti Style , kterß zm∞nφ vzhled zßlo₧ek, a to jak zßhlavφ tak i okraje. Klasick² styl je tabTabs , zßhlavφ vypadajφcφ a fungujφcφ jako tlaΦφtka nasatvφte konstantou tabButtons a poslednφ mo₧nostφ jsou plochß tlaΦφtka (viz panel nßstroj∙ v Internet Exploreru) tabFlatButtons , u kter²ch navφc m∙₧ete nastavit vlastnostφ Separators , zdali majφ b²t vizußln∞ odd∞leny.
Na prvnφ zßlo₧ce m∙₧ete jeÜt∞ navφc ovlivnit Üφ°ku i v²Üku zßhlavφ zßlo₧ek. TabMinWidth urΦuje minimßlnφ mo₧nou Üφ°ku zßhlavφ. Chcete-li mφt vÜechna zßhlavφ stejnΘ velikosti, vyberte v seznamu TabWidthStyle polo₧ku tabFixed . PotΘ pomocφ vlastnostφ TabFixedWidth a TabFixedHeight urΦφte Üφ°ku a v²Üku zßhlavφ.
Nynφ se p°esuneme ke druhΘ zßlo₧ce, kde pomocφ tlaΦφtek Insert Tab a Remove Tab p°idßvßte a ruÜφte zßlo₧ky. Pro pohyb po jednotliv²ch zßlo₧kßch pou₧ijte polo₧ky Index a tlaΦφtek se Üipkami. Pro prßci se zßlo₧kami v k≤du slou₧φ kolekce Tabs . Pro p°idßvßnφ a ruÜenφ zßlo₧ek slou₧φ standardnφ metody Add a Remove a prßce s nφ je identickß jako s jakoukoliv jinou kolekcφ. Tato obsahuje objekty typu Tab , jejich₧ nejd∙le₧it∞jÜφ vlastnostφ je Caption , co₧ je text zobrazen² v zßhlavφ zßlo₧ky.
P°i pou₧φvßnφ mß TabStrip jednu velkou nev²hodu (to m∙₧e b²t ovÜem v∞cφ nßzoru a zp∙sobu jeho pou₧itφ), a to ₧e obsah a p°epφnßnφ jednotliv²ch zßlo₧ek si musφte vy°eÜit sami. Prvek sßm toti₧ nenφ p°i nßvrhu schopen p°epφnat jednotlivΘ zßlo₧ky a ani nenφ kontejner prvk∙. JedinΘ co dokß₧e p°epnout, je zßhlavφ a okraje. Vy pak musφte pou₧φt libovoln² kontejner prvk∙ (PictureBox, Frame) do n∞j vlo₧it po₧adovanΘ prvky, a ten pak p°i v²b∞ru p°φsluÜnΘ zßlo₧ky zobrazit (tzn. pro ka₧dou zßlo₧ku jeden kontejner, nap°. PictureBox). Pro nastavenφ sprßvnΘ velikosti kontejner∙ prvk∙ nabφzφ TabStrip vlastnosti ClientHeight , ClientWidth , ClientLeft a ClientTop .
Co se t²Φe udßlostφ, jsou zde pro vßs d∙le₧itΘ dv∞. BeforeClick nastane p°edtφm, ne₧ je zßlo₧ka p°epnuta a umo₧nφ vßm nastavenφm parametru Cancel na True p°epnutφ zabrßnit. Druhou udßlostφ je Click , pomocφ kterΘ budete p°epφnat obsah zßlo₧ek.
Pou₧itφ prvku TabStrip si ilustrujeme na nßsledujφcφm p°φkladu. Vlo₧te na formulß° prvek TabStrip a s pomocφ strßnek vlastnostφ vytvo°te t°i zßlo₧ky s nßzvy "1" a₧ "3". Dßle vlo₧te na formulß° t°i prvky Frame. A nynφ u₧ zb²vß vlo₧it pouze k≤d.
Private Sub Form_Load()
Frame1.Move TabStrip1.ClientLeft, TabStrip1.ClientTop, _
TabStrip1.ClientWidth, TabStrip1.ClientHeight
Frame2.Move TabStrip1.ClientLeft, TabStrip1.ClientTop, _
TabStrip1.ClientWidth, TabStrip1.ClientHeight
Frame2.Visible = False
Frame3.Move TabStrip1.ClientLeft, TabStrip1.ClientTop, _
TabStrip1.ClientWidth, TabStrip1.ClientHeight
Frame3.Visible = False
End Sub
Private Sub TabStrip1_Click()
Frame1.Visible = (TabStrip1.SelectedItem.Index = 1)
Frame2.Visible = (TabStrip1.SelectedItem.Index = 2)
Frame3.Visible = (TabStrip1.SelectedItem.Index = 3)
End Sub
Zp∞t na obsah
|