× Aktuálně z oboru

Vychází Game Ready ovladače pro Far Cry 5 [ clanek/2018040603-vychazi-game-ready-ovladace-pro-far-cry-5/ ]
Celá zprávička [ clanek/2018040603-vychazi-game-ready-ovladace-pro-far-cry-5/ ]

VB - 15. lekce

[ http://programujte.com/profil/27-jiri-chytil/ ]Google [ ?rel=author ]       [ http://programujte.com/profil/20356-kubec-milan-a-vera/ ]Google [ ?rel=author ]       25. 5. 2005       16 593×

15.1 RichTextBox (textové pole s rozšířenými možnostmi)
15.2 PrograssBar (ukazatel průběhu)
15.3 Slider (posuvník)
15.4 StatusBar (stavový řádek)
15.5 ImageList (seznam obrázků)
15.6 ToolBar (panel nástrojů)
15.7 TabStrip (listy se záložkou)
15.8 ToolTipText (popisek)
15.9 Domácí úkol  (ano, už zase)
15.10 V další lekci (ano, bude i další lekce)

15.1 RichTextBox (textové pole s rozšířenými možnostmi)

Dnes začneme objektem RichTextBox. Klikněte na Toolbox pravým tlačítkem a poté na Components. Vyberte objekt Microsoft RichTextBox. RichTextBox má trochu bohatší možnosti než obyčejný TextBox, a to především tím, že můžete zvlášť upravovat jednotlivé části textu. Podporuje formát RTF (RichTextFiles). Tady je ukázka kódu:


Private Sub Command1_Click()
  RichTextBox1.SelBold = True
End Sub

Private Sub Command2_Click()
  RichTextBox1.SelColor = &HFF
End Sub

Private Sub Command3_Click()
  RichTextBox1.SelFontSize = 12
End Sub

Tyto kódy se aplikují na text, který je označený, což znamená, že pokud si označíte první řádek, tak budete pracovat s ním. To byla jen ale hrubá ukázka. Tady je ještě jedna: (Sami vyberte a vyzkoušejte i ostatní možnosti.)


Private Sub Command1_Click()
  RichTextBox1.SelBullet = True
End Sub

Private Sub Command2_Click()
  RichTextBox1.SelAlignment = 2
End Sub

Private Sub Command3_Click()
  CommonDialog1.Flags = cdlCFEffects Or cdlCFBoth
  CommonDialog1.ShowFont
  RichTextBox1.SelBold = CommonDialog1.FontBold
  RichTextBox1.SelItalic = CommonDialog1.FontItalic
  RichTextBox1.SelFontName = CommonDialog1.FontName
  RichTextBox1.SelFontSize = CommonDialog1.FontSize
  RichTextBox1.SelStrikeThru = CommonDialog1.FontStrikethru
  RichTextBox1.SelUnderline = CommonDialog1.FontUnderline
End Sub

Private Sub Command4_Click()
  CommonDialog1.DialogTitle = "Zvol si barvu písma"
  CommonDialog1.ShowColor
  RichTextBox1.SelColor = CommonDialog1.Color
End Sub

Tento objekt má opravdu obrovské  možnosti nastavení, stačí jen zkoušet a zkoušet. Tím se také hodně naučíte.


15.2 PrograssBar (ukazatel průběhu)

Ukázali jsme si RichTextBox (ještě se k němu vrátíme), ale nyní už se dále podíváme na některé z objektů sady Microsoft Windows Common Control. Klikneme pravým tlačítkem na Toolbar, zvolíme Components a najdeme si Microsoft Windows Common Control 6.0. Potvrdíme. V Toolbaru si vybereme PrograssBar, tedy ukazatel průběhu známý tím, že se při instalaci nepohne na 100%. Ano, je to ten modrý proužek. Tak si ho vložíme na formulář a přidáme si jeden Timer, ať můžu demonstrovat jeho funkci.


Private Sub Form_Load()
  Timer1.Interval = 50
  ProgressBar1.Min = 0
  ProgressBar1.Max = 100
End Sub

Private Sub Timer1_Timer()
  ProgressBar1.Value = ProgressBar1.Value + 1
  If ProgressBar1.Value = 100 Then Timer1.Enabled = False
End Sub

Tady je tedy ukázka kódu. Nejdříve si pomocí Max a Min nastavíme maximální a minimální hodnotu. Potom přičítáme po jedné do vlastnosti Value. Další zajímavé vlastnosti jsou Orientation, ta nám umožňuje otočit ukazatel průběhu na výšku nebo na šířku. Další je Scrolling, kde si můžeme nastavit, zda se má zobrazovat jednolitý pruh nebo zda má být rozdělen na čtverečky. Jeho využití je snad každému jasné, použití asi bude obtížnější - je potřeba vytvořit nějakou aplikaci, která provádí nějakou operaci alespoň několik vteřin, ale k tomu se později dostaneme.


15.3 Slider (posuvník)

Pokud u svého programu potřebujete nastavit nějakou číselnou hodnotu, je celkem jedno, jakou můžete využít. Tento objekt (můžete ho znát třeba z nastavení ve woknech) využijete, když volíte velikost koše nebo prostoru pro obnovení systému či nastavení úrovně hlasitosti. Pracuje se s ním podobně jako s ProgressBarem (teď mám na mysli ze strany programátora). Nastavují se prakticky tytéž vlastnosti, takže hned ukázka kódu, třeba vyvážení reproduktorů, včetně ukazatelů, které tvoří ProgressBary.


Private Sub Formo_Load()
  ProgressBar1.Min = 0
  ProgressBar1.Max = 50
  ProgressBar1.Value = 25
  ProgressBar1.Scrolling = ccScrollingSmooth
  ProgressBar1.Orientation = ccOrientationVertical
  ProgressBar2.Min = 0
  ProgressBar2.Max = 50
  ProgressBar2.Value = 25
  ProgressBar2.Scrolling = ccScrollingSmooth
  ProgressBar2.Orientation = ccOrientationVertical
  Slider1.LargeChange = 10
  Slider1.Max = 25
  Slider1.Min = -25
  Slider1.SmallChange = 1
  Slider1.LargeChange = 5
  Slider1.TickFrequency = 5
  Slider1.Value = 0
  Slider1.TickStyle = sldBoth
End Sub

Private Sub Slider1_Change()<
  ProgressBar1.Value = 25 - Slider1.Value
  ProgressBar2.Value = 25 + Slider1.Value
End Sub

Z tohoto kódu by mělo být patrné, jak to funguje. Ještě doplním, že hodnoty SmallChange označují, o kolik se posuvník posune při stisku šipky. LargeChange označuje, o kolik se posune při použití kláves PageUp a PageDown. TickFrequency stanovuje, po kolika bodech bude pomocí čárky označení, že je tam bod, a TickStyle určuje, na které straně budou ony čárečky.

To by byly základní a pro nás zajímavé vlastnosti a tím bych ukončil výklad tohoto objektu a pustil se na jiný, protože nepochybuji o tom, že vás napadne jak ho použít.


15.4 StatusBar (stavový řádek)

Tohle by taky měl znát každý, protože to má velká část programů. Je to ten spodní řádek, který zobrazuje různé informace, třeba čas, nebo zda máte stisknutý Caps, Num nebo Scroll Lock. Ve Wordu třeba informace o tom, na kterém řádku se právě nacházíte apod. My si teď ukážeme, jak ho použít. Takže nejdříve si ho vložíme na formulář (je stále součástí Microsoft Windows Common Control 6.0). Poté co tak učiníme, klikneme pravým tlačítkem na něj a na Properties. Objeví se nám okno s nastavením, kde můžeme nastavit každou část stavového řádku zvlášť. To jde i u jiných nadstandardních komponent, třeba u výše zmíněného ProgressBaru a Slideru. Dokonce i CommonDialog to umožňuje. Ale vraťme se zpět k stavovému řádku. V okně, které se nám zobrazilo, je několik záložek.  První je General - ta je vedlejší - a můžeme tam nastavit styl. Nás však bude zajímat především ta druhá záložka a to Panels. První je položka obsahující číslo panelu, ve kterém pracujete, vedle máte tlačítka na přidávání a odebírání panelů (může jich být maximálně 16). Dále je tam pole pro text, který chcete zobrazit - může tam být, ale taky nemusí. Potom je tam ToolTipText, kterému se budeme věnovat až na konci kapitoly. Položku Key a Tag přeskočíme stejně jako zarovnání, které již musíte znát. Zaměříme se na Styl, což je to nejzajímavější, a to hlavně proto, že nám to ulehčí kód - nemusíme pak psát všelijaké kódy, aby se nám zobrazoval stav kláves, jako jsou výše zmíněné Caps, Num, Scroll Lock nebo třeba Insert. Může tam být dokonce i čas a datum, aniž bychom jej museli psát. Stačí si jen vybrat, co chceme zobrazit. Ještě nám ale nějaké položky zbývají, jednou z nich je položka Bevel, která nám určuje, jak bude stavový řádek protlačen, zda ven, dovnitř nebo vůbec. Může na místo textu dokonce vložit i obrázek. Na závěr ještě zbývá nastavit minimální šířku, aby byl celý obsah čitelný. Jakmile doděláme jeden, přidáme další a pracujeme s ním. Nastavení záložky Font snad zvládne každý. Ještě vás však tímto objektem otravovat nepřestanu, protože se s ním dá pracovat i ve zdrojovém kódu. Dám zde jen pár ukázek, podle nichž by to neměl být problém k pochopení.


StatusBar1.Panels.Remove (1)  'Odebere Panel s Indexem 1
StatusBar1.Panels.Add 1, , "Ahoj", 0  ' Přidá panel s textem ahoj  na první místo
StatusBar1.Panels.Item(2).ToolTipText = "ahoj"  ' Přidá popisek ke druhému panelu

To je takový příklad, jak se dá s jednotlivými údaji pracovat ve zdrojovém kódu, a připomínám, že v případě dotazů a nejasností je tu poradna.


15.5 ImageList (seznam obrázků)

Je to vlastně taková úschovna pro obrázky. Opět budeme pracovat s jeho nastavením pomocí okna, do kterého se dostaneme stejně jako v předcházejícím případě. Zde si v prvním okně můžeme zvolit rozměr obrázků. Právě tyto rozměry jsou zde proto, že obrázky z ImageListů se používají pro tvoření Menu a tam jsou potřeba všechny stejné, tak aby se vám nestalo, že tam dáte něco, co nechcete. Pro nás bude nejzajímavější karta Images do které budeme nahrávat obrázky. Stačí kliknout na tlačítko InsertPicture a vybrat obrázek a nahrát potřebný počet obrázků. V poslední kartě se nastavuje barva pozadí a barva masky. Je zde mnohem míň položek, takže to zkrátím. V ImagesListu se pracuje jen se základními vlastnostmi, žádné vlastnosti každého obrázku zvlášť, tak snad není nutné ukázky kódu vypisovat... V poslední kartě Color si vybereme, jaká barva na obrázku bude průhledná. Pokud nechcete využít průhlednosti, vraťte se do záložky General a tam odškrtněte políčko s textem UseMaskColor.


15.6 Toolbar (panel nástrojů)

Tak tohle je na delší povídání. Panel nástrojů je to, v čem jsou třeba šipky zpět nebo třeba domeček, abyste se dostali na domovskou stránku. Ten už má opravdu velké možnosti nastavení, jen se podívejte, kolik různých typů a druhů takových panelů je. My si to tedy vezmeme pěkně popořadě. Vložíme si ImageList a do něj naskládáme několik obrázků o velikosti 32*32 pixelů. Vložíme si i Toolbar. Klikneme na něj pravým tlačítkem, čímž se nám vyroluje Menu, na kterém jako vždy klikneme na Properties. Objeví se nám okno a v něm strávíme několik následujících minut. Nyní se nacházíme na kartě General. Jako první položku vidíme MousePointer, kde si můžete vybrat ukazatele, který se zobrazí, když se kurzor bude nacházet nad tímto objektem. Další položku zatím necháme být a podíváme se na tu pod, kterou je ImageList. Vyrolujeme si seznam a klikneme na ImageList, který chceme použít - tedy pokud je jich více. Další položky nás nebudou příliš zajímat, ale vy si můžete vyzkoušet, co umí. Nastavení v poslední části se stará především o vzhled. Nyní přejdeme do té nejdůležitější části, a to je karta Buttons.

Zde pomocí tlačítka Insert můžete vložit tlačítka na tento panel. U každého tlačítka můžete nastavit několik věcí. Tou první, která nás bude zajímat, je Image, která je schovaná vpravo přibližně uprostřed. Tam vložíme index čili číslo obrázku, který chceme na onom tlačítku zobrazit (obrázky bereme z ImageListu). A dále už budu pokračovat zase od vrchu. Je tam Caption, to je popisek. Tam můžete napsat nějaký text, který se zobrazí pod obrázkem. Pokud jej chcete vedle obrázku, tak se přepněte zpět do karty General a změňte vlastnost TextAligment. Dalším nastavením se raději vyhneme a mrkneme se na položku Style. Vyrolujeme si seznam. První položkou je standardní tlačítko, druhá položka je tlačítko, které když stisknete, zůstane zamáčknuté a při dalším stisknutí se vrátí do původní polohy. U této vlastnosti se ještě podíváme na vlastnost Value. Pokud zvolíme Pressed, bude tlačítko zamáčknuté. Další volbu vynecháme a vrhneme se na volbu Separátor a Placeholder - ty jsou prakticky stejné a mezi tlačítky udělají jen mezeru.

Poslední je DropDown. Je to tlačítko, vedle něhož je malinké tlačítko s šipkou dolů a tím se vyrolovává seznam (toto tlačítko můžete znát třeba z IE, když se vracíte pomocí tlačítka zpět). To je nejzajímavější, protože má ještě další možnosti a k jejich nastavení slouží úplně spodní část karty. Takže my si klikneme na InsertButton ve spodní části karty a ke každému přidanému tlačítku vložíme text. Spustíme program, klikneme na menší přidružené tlačítko se šipkou a podíváme se, jak to vypadá. To by bylo z hlediska nastavení všechno. Teď zase na ukázku kousek kódu:


Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
  If Button.Index = 1 Then End
  If Button.Index = 2 Then MsgBox "klikli jste na tlačítko s indexem 2"
  Toolbar1.Buttons(3).ButtonMenus(1).Text = "Ahoj"
  Toolbar1.Buttons(1).Image = 0
  Toolbar1.Buttons(2).Caption = "funguje to"
End Sub

První řádek kódu kontroluje, zda jste nezmáčkli první tlačítko. Pokud by se tak stalo, program by se vypnul. Druhý sleduje, jestli jste nestiskli tlačítko s indexem 2. Pokud ano, vyskočí na vás MessageBox. Dalším nastavujeme text prvního řádku nabídky tlačítka a tlačítka s indexem 3. Následujícím řádkem odstraníme obrázek z tlačítka s indexem 1. Posledním přepíšeme text na druhém tlačítku. Nepočítám mezi ně samozřejmě řádky začátku a konce procedury. To je asi vše podstatné, co byste měli vědět, abyste mohli tvořit.


15.7 TabStrip (listy se záložkou)

Určitě znáte nastavení ve woknech, jsou to okna se spoustou záložek a těmi záložkami se teď budeme zabývat. Opět si otevřeme okno s nastavením a nejdříve se jako vždy podíváme na kartu General. Ale u ní se nezdržíme, položky si můžete vyzkoušet sami. Neměl by být problém cokoliv pochopit. Pokud jde o použití ImageListu, tak jsou vhodné obrázky velikosti 16*16 pixelů. Přepneme se na další kartu Tabs. Ta už vám určitě něco říká, takže zde taktéž nebude problém pochopit, co máte dělat. Takže teď byste měli mít vytvořenou tabulku.

Teprve teď nastane něco, co je obrovskou nevýhodou tohoto objektu, a to, že se v editačním módu nemůžete přepínat mezi jednotlivými kartami tabulky a na každou vložit co chcete. Všechny objekty musíte vložit na jednu kartu a potom pomocí zdrojového kódu měnit to, co se bude na které kartě zobrazovat. Když si tedy na tabulku vložíme několik objektů a potřebujeme, aby se pokaždé zobrazil jindy, tak to uděláme následovně:


Private Sub TabStrip1_Click()
  If TabStrip1.SelectedItem = "NázevPrvní" Then
    Frame1.Visible = True
    Frame2.Visible = False
  End If

  If TabStrip1.SelectedItem = "NázevDruhé" Then
    Frame2.Visible = True
    Frame1.Visible = False
  End If
End Sub

Optimální je všechny prvky pro jednu kartu vložit do Framu, pak stačí nastavovat vlastnosti Framu a nemusíte měnit vlastnosti všech komponent. Pokud jich máte víc, může to vypadat třeba takto:


Private Sub TabStrip1_Click()
  If TabStrip1.SelectedItem = "NázevPrvní" Then
    Frame1.Visible = True
    Frame2.Visible = False
    Frame3.Visible = False
    Frame4.Visible = False
  End If

  If TabStrip1.SelectedItem = "NázevDruhé" Then
    Frame1.Visible = False
    Frame2.Visible = True
    Frame3.Visible = False
    Frame4.Visible = False
  End If

  If TabStrip1.SelectedItem = "NázevTřetí" Then
    Frame1.Visible = False
    Frame2.Visible = False
    Frame3.Visible = True
    Frame4.Visible = False
  End If

  If TabStrip1.SelectedItem = "NázevČtvrté" Then
    Frame1.Visible = False
    Frame2.Visible = False
    Frame3.Visible = False
    Frame4.Visible = True
  End If
End Sub

To by myslím stačilo. Ale jen tak pro pořádek si představte, kdyby každý Frame obsahoval jen 20 objektů a vy byste museli psát kód pro každý zvlášť.


15.8 ToolTipText (popisek)

ToolTipText čili popisek je vlastností většiny viditelných objektů, tento popisek se zobrazí, když nad určitým objektem podržíte kurzor. Zobrazí se ve žlutém rámečku.


Command1.ToolTipText = "Kliknutím Odešlete zprávu"

To je k této části vše. Je dobré tuto nabízenou možnost využít. Tyto popisky jsou vhodná nápověda k obrázkovým tlačítkům, případně se do nich dá stručně zapsat funkce tlačítka.


15.9 Domácí úkol  (ano, už zase)

Za domácí úkol bude tentokrát pomocí většiny uvedených prvků upravit jeden z vámi již dříve vytvořených programů.


15.10 V další lekci (ano, bude i další lekce)

Další komponenty a něco málo o tisku. (Tak si pořiďte hodně papírů a dost toneru nebo alespoň PDF tiskárnu.)


Článek stažen z webu Programujte.com [ http://programujte.com/clanek/2005052201-vb-15-lekce/ ].