Umíme to s Delphi, 59. díl – buďte cool, dokončení

Před týdnem jsme začali popisovat způsob vytváření moderních posuvných lišt. Dnes tento problém dokončíme. Nejprve si popíšeme vlastnost Bands, která znamená vlastně kolekci všech skupin CoolBaru, a pak se podíváme na vlastnosti každé z jednotlivých skupin.

Před týdnem jsme si řekli, že CoolBar vytváříme pomocí komponenty CoolBar. Ukázali jsme si, jaká globální nastavení je možné provádět pomocí vlastností této komponenty. V dnešním díle pokračujeme v nastoupeném trendu – začneme popisem vlastnosti Bands, která reprezentuje seznam všech skupin aktuálního CoolBaru.Vlastnost Bands komponenty CoolBar

Pojďme se podrobněji podívat na vlastnost Bands komponenty CoolBar. Tato vlastnost je typu TCoolBands a reprezentuje seznam skupina na CoolBaru. Je to v podstatě kolekce objektů TCoolBand.

Jak už jsme uváděli, v době návrhu je možné přidávat, odstraňovat nebo modifikovat skupiny pomocí nástroje Bands Editor. Přidávat skupiny je kromě toho také možné velmi jednoduše tak, že v paletě komponent vyberete nějakou okenní komponentu a vložíte ji na CoolBar. Po přidání následníka třídy TWinControl dojde k automatickému vytvoření nové skupiny.

Poznámka: přidáním jiné komponenty (tedy neokenní, neboli takové, která není následníkem třídy TWinControl) tedy nedojde k vytvoření nové skupiny. Z toho plyne důvod, proč neokenní komponenta nevytvoří posuvnou skupinu a „pouze se zobrazí“. Není pro ni totiž vytvořena skupina (nový objekt TCoolBand).

Vlastnost Bands je tedy typu TCoolBand. Pojďme se podívat na vlastnosti této třídy (a tedy na vlastnosti jednotlivých skupin na CoolBaru). Pro jednoznačnost budeme všechny následující vlastnosti označovat Bands.Vlastnost, aby bylo zřejmé, že hovoříme o vlastnosti třídy TCoolBand.

Vlastnost: Bands.CoolBar

Popis: Read-only vlastnost, která zpřístupňuje komponentu CoolBar, k níž aktuální skupina náleží. Tato vlastnost je třídy TCoolBar a obsahuje přímo odkaz na instanci, k níž skupina náleží. Skupina tedy může „ovládat“ svůj „nadřízený“ CoolBar:

procedure TfrmHlavni.btnNastav2Click(Sender: TObject);
begin
  CoolBar1.Bands.CoolBar.AutoSize := True;
end;

Vlastnost: Bands.Count

Popis: Tato read-only vlastnost vrací počet skupin, které příslušná kolekce (tedy příslušný CoolBar) obsahuje. V podstatě je po počet položek v poli Items (které popisujeme vzápětí).

Vlastnost: Bands.Items

Popis: „Hlavní“ vlastnost, která obsahuje seznam skupin příslušného CoolBaru. Typ jedné položky této vlastnosti je TCoolBand (pozor, neplést s typem TCoolBands, který slouží jako typ vlastnosti Bands a je to v podstatě kolekce všech skupin. Oproti tomu TCoolBand je již přímo třída pro jeden, konkrétní Band (skupinu)). Přístup k jednotlivým skupinám je pomocí indexu. Tento index odpovídá právě vlastnosti Index příslušné skupiny (dostaneme se k tomu později). První skupina je tedy přístupna pomocí výrazu

CoolBar1.Bands.Items[0]

Příklad:

ShowMessage(CoolBar1.Bands.Items[0].Text);

Pokračujme ve svých úvahách. Abychom se v hierarchii tříd neztratili, zopakujeme si dosud známé poznatky:

Na formulář umístíme komponentu (objekt) Coolbar (třída TCoolBar). Pro celou komponentu CoolBar můžeme nastavovat celou řadu vlastností (které modifikují CoolBar na globální úrovni). Popisovali jsme si je výše, příkladem je např. FixedSize, Align, Bitmap apod. Pokud na CoolBar umístíme nějakou okenní komponentu (nebo třeba celý nástrojový pruh, který je samozřejmě konec konců také komponentou), vytvoří se automaticky tzv. skupina (band). Jednou z vlastností celého CoolBaru je také vlastnost Bands, která zapouzdřuje právě kolekci všech existujících skupin tohoto CoolBaru. Vlastnost Bands je třídy TCoolBands a s její pomocí je možné používat několik (málo) vlastností, které se týkají zároveň všech skupin. Popsali jsme si vlastnosti CoolBar, Items a Count. Vlastnost Items vrací seznam všech skupin, přičemž slouží k přístupu kterékoliv z nich pomocí indexu. Už se dostáváme k závěru celé hierarchie:) Každá z těchto skupin je typu TCoolBand a obsahuje celou řadu vlastností, jež se týkají právě jen této jediné skupiny. Je to alespoň trochu srozumitelné? Předpokládám, že nikoliv, takže raději uveďme ještě obrázek, který by měl tuto třídní hierarchii alespoň trochu osvětlit. Horizontálně je naznačen vztah vlastnosti a jejího datového typu, vertikálně pak vztah třídy a její vlastnosti:

Nyní, když už snad všichni rozumějí hierarchii tříd souvisejících s vytvářením CoolBaru, se můžeme podrobně zaměřit na poslední důležitou skupinu vlastností – na vlastnosti jednotlivé skupiny, tedy na vlastnosti třídy TCoolBar. Připomeňme raději ještě jednou (a naposledy, slibuji:)), že jednotlivá, konkrétní skupina, je přístupná přes vlastnost Items[x] vlastnosti Bands celého CoolBaru, kde x je číslo skupiny, které je odvozeno z hodnoty vlastnosti Index této skupiny. Takže: chceme-li nastavovat nějakou vlastnost první skupiny, budeme vždy psát:

CoolBar1.Bands.Items[0].Požadovaná_vlastnost := Její_nová_hodnota;

Poznámka: je možné používat také zkráceného zápisu, který má zcela totožný význam:

CoolBar1.Bands[0].Požadovaná_vlastnost := Její_nová_hodnota;

A požadovaná vlastnost bude pravděpodobně jednou z výčtu uvedeného v následující podkapitole.

Vlastnosti jednotlivých skupin

Pojďme si postupně popsat všechny vlastnosti třídy TCoolBand.

Vlastnost: Bitmap

Popis: Specifikuje bitmapu pozadí této skupiny. Bitmapa se zobrazuje na skupině opakovaně, podobně jako tapeta, aby zabrala celou plochu skupiny (bez ohledu na její aktuální velikost).Nastavení této vlastnosti (přiřazení nějaké bitmapy) způsobí automatické nastavení hodnoty ParentBitmap na False. Popis vlastnosti ParentBitmap naleznete níže, důležité je, že hodnota této vlastnosti Bitmap má „vyšší prioritu“ než hodnota vlastnosti Bitmap „celého“ CoolBaru. Je tedy možné nastavit jednu bitmapu globálně, pro všechny skupiny (pomocí CoolBar.Bitmap) a pak zdůraznit jednu skupinu jinou bitmapou nastavením CoolBar.Bands.Items[x].Bitmap na jiný obrázek. Ukázku vidíte na následujícím obrázku (první skupina má jinou bitmapu):

Vlastnost: BorderStyle

Popis: Slouží k nastavení okraje skupiny. Přednastavenou hodnotou je bsSingle, která způsobí vykreslení jednoduché čáry okolo celé skupiny. Nastavením na bsNone zajistíme, že žádný okraj vykreslen nebude. Pozor: pokud je v rozporu nastavení vlastnosti BandBorderStyle celé komponenty CoolBar s nastavením této vlastnosti BorderStyle, má vyšší prioritu globální nastavení (tedy BandBorderStyle).

Vlastnost: Break

Popis: Nařídí skupině, aby začínala na nové řádce. Je-li hodnota True (což je přednastavená hodnota), skupina začíná ne levé řádce, na levé straně CoolBaru. Pokud je hodnota False, pokračuje skupina bezprostředně za předchozí skupinou.

Vlastnost: Color

Popis: Udává barvu skupiny. Nastavením této vlastnosti v Object Inspectoru dojde k automatické změně hodnoty vlastnosti ParentColor na False.

Vlastnost: Control

Popis: Specifikuje okenní komponentu (tedy třídy TWinControl), která je obsažena na této skupině.

Vlastnost: FixedSize

Popis: Udává, může-li být za běhu programu změněna velikost skupiny. Pokud nastavíme na False, znemožníme uživateli měnit velikost skupiny.

Vlastnost: Height

Popis: Read-only vlastnost, která vrací aktuální výšku skupiny.

Vlastnost: HorizontalOnly

Popis: Říká, má-li být skupina zobrazena v případě, že celý CoolBar je vertikálně uspořádán. Je-li tedy hodnota vlastnosti Vertical komponenty CoolBar nastavena na False, bude skupina zobrazena pouze v případě, že hodnota její vlastnosti HorizontalOnly je nastavena na False (což je přednastavené chování). Je-li HorizontalOnly = True, nezobrazí se v takovém případě skupina vůbec.

Vlastnost: ImageIndex

Popis: Určuje, kolikátý obrázek z příslušného seznamu obrázků bude na skupině zobrazen. „Příslušným seznamem obrázků“ máme na mysli ten, který je uveden ve vlastnosti Images komponenty CoolBar. Je-li tedy např. hodnota této vlastnosti rovna 2, bude na skupině zobrazen třetí obrázek z ImageListu specifikovaného vlastností CoolBar.Images (první obrázek má pořadové číslo 0, další 1 apod.).

Vlastnost: MinHeight

Popis: Specifikuje minimální možnou výšku skupiny, pod kterou není možné za běhu programu skupinu zmenšít.

Vlastnost: MinWidth

Popis: Analogická vlastnost, specifikuje minimální možnou šířku skupiny, pod kterou uživatel nemůže za běhu programu skupinu zmenšit.

Vlastnost: ParentBitmap

Popis: Logická vlastnost, která říká, zda má skupina použít nastavení hodnoty Bitmap své komponenty CoolBar. Jinak řečeno – zda se má na skupině zobrazit ta bitmapa, která je nastavena ve vlastnosti CoolBar.Bitmap. Připomeňme, že nastavíme-li skupině její vlastní bitmapu (viz výše v této podkapitole), dojde k automatické změně hodnoty ParentBitmap na False.

Vlastnost: ParentColor

Popis: Analogická vlastnost; udává, zda se má skupina zobrazit ve stejné barvě, jako její rodičovský CoolBar.

Vlastnost: Text

Popis: Textový řetězec, který se na skupině má zobrazit. Pomocí tohoto řetězce se skupina také identifikuje v Bands editoru (připomeňme, že jej lze otevřít např. klepnutím pravým tlačítkem na komponentu CoolBar). Nastavíme-li hodnotu této vlastnosti, bude příslušný textový řetězec zobrazen na levé straně skupiny.

Vlastnost: Visible

Popis: Říká, bude-li skupina za běhu programu zobrazena (připomeňme, že v návrhové fázi jsou zobrazeny všechny skupiny).

Vlastnost: Width

Popis: Vlastnost, která obsahuje aktuální šířku skupiny. Nejde o read-only vlastnost, je tedy možné změnit šířku skupiny nastavením hodnoty této vlastnosti. Šířka se udává samozřejmě v pixelech.

Na závěr

Tolik k popisu vytváření CoolBaru, který se v současných aplikacích používá velmi často. Pomocí této komponenty můžeme vytvářet „plovoucí“ nástrojové lišty, které si uživatel může poměrně jednoduše přizpůsobit ke svému obrazu. Druhou stranou mince je fakt, že chování těchto posuvných lišt ve Windows je občas trochu nevyzpytatelné a třeba akce spočívající v navrácení lišt do původní pozice je takřka nerealizovatelná. I přes tento drobný nedostatek však přinášejí CoolBary velmi ceněnou možnost uživatelského přizpůsobení ovládacích prvků. Jejich použitím se naše aplikace opět o krok přiblíží standardu, po kterém se často marně volá – tedy dobré uživatelské přívětivosti aplikace.
Diskuze (1) Další článek: Service pack pro Windows XP nebude pro piráty

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , ,