5. Návrh palet nástrojů 
  1. Paleta nástrojů je panel, obvykle umístěný u horního okraje formuláře (pod nabídkou), který obsahuje tlačítka a další ovladače. Paleta nástrojů poskytuje vizuální prezentaci voleb uživatele. Na formulář můžeme přidat libovolný počet palet nástrojů. Když máme více palet zarovnaných k hornímu okraji formuláře, pak jsou uspořádány svisle v pořadí přidávání.

  2. Je několik možností přidání palety nástrojů na formulář: Způsob implementace palety nástrojů závisí na naší aplikaci. Výhodou použití komponenty Panel je to, že máme plné řízení nad paletou. S těmito paletami jsme se již dostatečně seznámili a nebudeme se jimi již zabývat.
    Použití komponent ToolBar a CoolBar nám dává jistotu, že naše aplikace bude mít vzhled Windowsovské aplikace, neboť se jedná o Windowsovské ovladače. Jestliže tyto ovladače operačního systému se v budoucnosti změní, pak naše aplikace se také změní. Jedná se o ovladače Windows 95/NT 4.0 (v předchozích verzích neexistovaly).
  3. Komponenta ToolBar nabízí správu tlačítek a zobrazovací služby (komponenta Panel toto neprovádí). Pro vytvoření palety nástrojů pomocí této komponenty, přidáme ToolBar na formulář (je na stránce Win32 Palety komponent). Komponenta je automaticky zarovnána s horním okrajem formuláře a na komponentu vložíme tlačítka a další ovladače. Pro práci na komponentě ToolBar jsou určena tlačítka ToolButton. Podobně jako SpeedButton mohou pracovat jako normální tlačítka, přepínací tlačítka nebo jako množina voličů.

  4. Pro přidání ToolButton na ToolBar v místní nabídce palety zvolíme New Button. Paleta vlastní svá tlačítka a s přesunem nebo ukrytím palety se také přesouvají nebo ukrývají. Dále paleta automaticky udržuje stejné rozměry všech tlačítek. Pokud na paletu vložíme jinou komponentu z Palety komponent, pak je jí automaticky nastavena jednotná výška. Ovladače mohou být také zalamovány a začínat na novém řádku, pokud se již nevejdou vodorovně na řádek.
    Každý ToolButton má vlastnost ImageIndex určující obrázek zobrazený na tlačítku za běhu. Pro přiřazení obrázků tlačítkům vybereme ToolBar a v Inspektoru objektů přiřadíme vlastnosti Images objekt TImageList (kolekce ikon nebo bitových map stejné velikosti). Dále vybereme tlačítko a v Inspektoru objektů přiřadíme jeho vlastnosti ImageIndex celé číslo, které určuje obrázek v seznamu obrázků, přiřazený k tlačítku.
    Můžeme také specifikovat pro tlačítka další obrázky, které se použijí pro zakázaná tlačítka nebo pro tlačítka, která jsou pod ukazatelem myši. To provedeme přiřazením dalšího seznamu obrázků vlastnostem palety DisabledImages a HotImages.
    Tlačítko zakážeme nastavením vlastnosti Enabled na false. Levý okraj na paletě vytvoříme nastavením vlastnosti Indent palety na hodnotu větší než 0. Pro vytvoření transparentní palety nastavíme vlastnost Flat palety na true (použití této vlastnosti vyžaduje alespoň verzi 4.70 COMCTL32.DLL). K vložení nového řádku ovladačů za určité tlačítko, vybereme tlačítko, které má být poslední na řádku a nastavíme jeho vlastnost Wrap na true. K zakázání automatického zalamování tlačítek, nastavíme vlastnost Wrapable palety na false.
    K vytvoření skupiny tlačítek vybereme tlačítka která chceme seskupit a nastavíme jejich vlastnost Style na tbsCheck, a dále nastavíme jejich vlastnost Grouped na true. Toto je užitečné k reprezentaci množiny vzájemně se vylučujících voleb. Pro vytvoření mezer nebo oddělovačů na paletě, přidáme tlačítko a jeho vlastnost Style změníme na tbsSeparator nebo tbsDivider. Vlastnost AllowAllUp lze použít k vytvoření přepínacích tlačítek.
  5. Komponentu CoolBar používáme k zobrazování Windowsovských ovladačů na nezávislých přemístitelných proužcích u nich je možno měnit velikost. Uživatel může změnit pozici proužku přetažením rukojeti na levé straně každého proužku. Po přidání komponenty CoolBar na formulář (je na stránce Win32 Palety komponent), je automaticky zarovnána s horním okrajem formuláře. Na paletu dále přidáme Windowsovké ovladače (odvozené od TWinControl) z Palety komponent. Použití komponenty CoolBar vyžaduje verzi 4.70 nebo vyšší COMCTL32.DLL.

  6. Komponenta CoolBar nabízí několik užitečných konfiguračních voleb. Při nastavení AutoSize na true je automaticky měněna velikost proužku v závislosti na jeho obsahu. Nastavením FixedSize na true, proužky získají jednotnou výšku. Při nastavení vlastnosti Vertical na true změníme vodorovnou orientaci proužku na svislou (tato změna ovlivňuje vlastnost FixedSize). Nastavením ShowText na false zabráníme zobrazování vlastnosti Text na proužcích za běhu aplikace. Vlastností BandBorderStyle (bsNone) odstraníme rámeček prožku. Vlastnost FixedOrder určuje, zda je možno měnit pořadí proužků. Vlastnost Bitmap určuje obrázek pozadí palety. Nastavením vlastnosti Images na objekt ImageList určíme seznam obrázků zobrazených na levé straně proužků. Pro přiřazení obrázků k jednotlivým proužkům, vybereme paletu a dvojitě klikneme na vlastnost Bands v Inspektoru objektů. Potom vybereme proužek a přiřadíme hodnotu k jeho vlastnosti ImageIndex.
  7. Všechna tlačítka na paletách mají událost OnClick. Vytvořením obsluh událostí můžeme reagovat na stisk jednotlivých tlačítek. Pokud používáme ToolBar s ToolButton, pak k jednotlivým tlačítkům můžeme přiřadit místní nabídky. Vybereme tlačítko a přiřadíme jeho vlastnosti DropDownMenu vytvořenou místní nabídku. Pokud vlastnost AutoPopup nabídky je nastavena na true, pak při stisku pravého tlačítka myši je nabídka zobrazena.

  8. Palety nástrojů nemusí být stále viditelné. Paletu nástrojů ukryjeme (i s jejím obsahem), když nastavíme vlastnost Visible palety na false.
  9. Nyní se začneme zabývat Správcem projektu. Můžeme se dostat do situace, kdy potřebujeme k projektu přidat novou zdrojovou jednotku, nebo ji z projektu odstranit. Můžeme také někdy potřebovat k projektu přidat další typy souborů (binární soubor zdrojů nebo importní knihovnu DLL).

  10. Jak již víme, projekt je kolekce souborů, které společně slouží k vytvoření samostatného spustitelného souboru nebo DLL. Ve skutečnosti máme různé typy projektů. Velké projekty mohou zahrnovat více spustitelných souborů a několik DLL. Protože některé projekty se skládají z více spustitelných souborů, C++ Builder umožňuje pracovat se skupinou projektů.
    Skupina projektů dává možnost lepší kontroly nad kompletním projektem, umožňuje pracovat na DLL a testovacím programem pro DLL současně, umožňuje mít několik projektů otevřeno současně (a přepínat se mezi nimi) a umožňuje organizovat související projekty. Projekt, který vytváří jeden spustitelný soubor nepožaduje skupinu projektů. Pokud ale potřebujeme vytvořit EXE soubor a jednu podporující DLL, pak je vhodné skupinu projektů použít. Vytvoříme skupinu projektů, která obsahuje tyto dva projekty a uložíme ji. Když potom pracujeme na aplikaci, můžeme namísto projektu otevřít skupinu projektů a lze pracovat na obou projektech skupiny (lze se mezi nimi přepínat).
    V libovolné skupině projektů je vždy aktivní projekt. Aktivní projekt je zobrazen ve Správci projektů tučným písmem. Pokud zvolíme Project | Make nebo Project | Build, pak je překládán aktivní projekt. Aktivní projekt má také význam, když přidáváme nový formulář nebo novou jednotku pomocí Správce projektu nebo volbou v nabídce (jsou přidány k aktivnímu projektu).
    Aktivní projekt je možno změnit několika způsoby. Jednou z možností je výběr prvku projektového uzlu a stisknutí tlačítka Activate ve Správci projektů. Jiná možnost je dvojité kliknutí na samotném projektovém uzlu ve Správci projektů nebo volba v místní nabídce tohoto uzlu.
  11. Správce projektu umožňuje centrální řízení všech našich projektů a skupin projektů. Umožňuje přidávat soubory k projektu, odstraňovat soubory z projektu, zobrazovat jednotky nebo formuláře, přidávat projekty do skupiny projektů, změnit pořadí projektů apod. Správce projektu zobrazíme volbou View | Project Manager.

  12. Okno správce projektů obsahuje strom, který má čtyři úrovně. Tyto úrovně jsou: skupina projektů, projekty ve skupině projektů, formuláře a další soubory v projektu a jednotlivé soubory formulářů a jednotek pod uzlem formuláře. Uzly stromu mají ikonu, která indikuje, zda uzel obsahuje projekt, samostatný soubor, formulář nebo dvojici formulář/jednotka.
    Většinu práce se Správcem projektů provádíme pomocí místní nabídky. Správce projektu má tři místní nabídky. První získáme při kliknutí pravým tlačítkem myši na uzlu skupiny projektů. Zde jsou k dispozici následující volby:
     
    Volba Popis
    Add New Project Otevírá Zásobník objektů, ve kterém můžeme zvolit nový projekt (aplikaci, DLL, formulář, datový modul, komponentu apod.).
    Add Existing Project Otevírá projektový soubor z disku a přidává jej ke skupině projektů.
    Save Project Group Ukládá skupinu projektů (přípona BPG).
    Save Project Group As Ukládá skupinu projektů pod novým jménem.
    View Project Group Source Zobrazuje zdrojový soubor skupiny projektů. Jedná se o speciální vytvářecí soubor, který obsahuje odkazy na všechny projekty ve skupině.

    Při kliknutí pravým tlačítkem myši na uzlu projektu je zobrazena další místní nabídka s těmito volbami:
     

    Volba Popis
    Add Odpovídá volbě Project | Add To Project z hlavní nabídky - přidává soubor k projektu.
    Remove File Otevírá dialogové okno, ve kterém můžeme vybrat soubor odstraňovaný z projektu.
    Save Ukládá projekt.
    Options Zobrazuje dialogové okno voleb pro tento projekt.
    Activate Dělá tento projekt aktivním.
    Make Vytváří projekt.
    Build Buduje projekt (rozdíl mezi Make a Build byl popsán již dříve).
    View Source Zobrazuje zdrojový soubor projektu. 
    View Project Makefile Zobrazuje vytvářecí soubor projektu.
    Close Uzavírá projekt a všechny jeho soubory. Pokud projekt je součástí uložené skupiny projektů, pak projektový uzel bude zobrazen nevýrazně. Zůstává stálé součástí skupiny ale není otevřen v IDE.
    Remove Project Odstaňuje tento projekt ze skupiny projektů.
    Build Sooner Přesouvá projekt výše v projektovém stromu. Projekty jsou vytvářeny v pořadí jejich uvedení ve skupině.
    Build Later Přesouvá projekt v projektovém stromu dolů.

    Mimo těchto dvou nabídek, existuje třetí nabídka, která je zobrazena při kliknutí pravým tlačítkem myši na jiný než skupinový nebo projektový uzel. Tato nabídka se mění v závislosti na typu uzlu. Správce projektu má také paletu nástrojů se třemi tlačítky. Tato tlačítka slouží pro přidávání objektu do projektu (skupiny projektů), odstraňování objektů z projektu a změnu aktivního projektu. Obdobné činnosti lze provádět i klávesami Insert a Delete.

  13. Skupiny projektů jsou důležité pro složité projekty, ale jejich použití je nepovinné. Nemusíme pro každý projekt vytvářet skupinu projektů. Správce projektů má implicitní skupinu projektů nazvanou ProjectGroup1, která je použita automaticky pokud neotevřeme nebo nevytvoříme skupinu projektů. Při přidávání souborů k našemu projektu je možno přidávat následující typy souborů: jednotka C++ Builderu (CPP), jednotka Pascalu (PAS), zdrojový soubor C (C), soubor skriptu zdrojů (RC), soubor asembleru (ASM), definiční soubor modulu (DEF), přeložený soubor zdrojů (RES), soubor typu OBJ (OBJ) a knihovní soubor (LIB). Pro tyto typy souborů C++ Builder ví, co s nimi dělat (jakým překladačem je přeložit). Pokud předáme jiný typ souboru, pak C++ Builder jej nezpracuje.

  14. Pro překlad celé skupiny projektů používáme volby Project | Make All Projects a Project | Build All Projects. Překlad začne prvním projektem skupiny a pokračuje dále v pořadí projektů ve skupině.
  15. Volby projektu jsou něco, co se snadno ignoruje. Jejich implicitní nastavení je většinou vyhovující. Můžeme se ale dostat do situace, kdy některé z těchto voleb budeme potřebovat změnit. Nyní se stručně s těmito volbami seznámíme. Dialogové okno voleb projektu zobrazíme volbou Project | Options. Toto dialogové okno má 11 stránek. V dalších bodech bude následovat popis jednotlivých stránek. Ve spodní části okna je značka Default. Pokud je označena, pak současné nastavení voleb je implicitní pro všechny nově vytvořené projekty.
  16. Jednou ze stránek dialogového okna voleb projektu je stránka Form. Tuto stránku jsme již používali. V horní části obsahuje rozbalovací seznam, ve kterém vybíráme hlavní formulář aplikace (formulář zobrazený po spuštění aplikace). Implicitně je to první vytvořený formulář. Ve spodní části stránky jsou dva seznamy. Na levé straně je seznam automaticky vytvářených formulářů (jsou vytvářeny po spuštění aplikace). Do tohoto seznamu jsou umístěny všechny vytvářené formuláře. V pravém seznamu jsou uvedeny dostupné formuláře, které nejsou vytvářeny automaticky. Pokud některé formuláře chceme vytvářet (a rušit) sami, pak jej musíme přemístit z levého do pravého seznamu. Pro přesun používáme tlačítka umístěná mezi seznamy.
  17. Stránka Aplication dialogového okna voleb projektu je velmi jednoduchá. Položka Title se používá k nastavení titulku aplikace. Titulek je text zobrazovaný při minimalizaci aplikace. Titulek a Caption hlavního formuláře jsou dva různé prvky.

  18. Položka Help File je používána k určení nápovědného souboru používaného aplikací. Jedná se o soubor, který je zaveden, když v běžící aplikaci stiskneme klávesu F1. Nezadáme-li nápovědný soubor, pak stisk klávesy F1 nemá žádný efekt. K nalezení tohoto souboru lze použít tlačítko Browse.
    Volba Icon umožňuje volit ikonu aplikace. Tato ikona je zobrazována na pruhu úloh při běhu aplikace nebo při její minimalizaci a také na titulním řádku aplikace. Pro volbu ikony stiskneme tlačítko Load Icon a najdeme požadovaný soubor ikony (přípona ICO).
    V části Target File Extension specifikuje příponu souboru, který bude projektem vytvořen. Např. když vytváříme šetřič obrazovky, pak zde musíme zadat scr, prože tento typ programu vyžaduje použití přípony scr na místo exe.
  19. Stránka Compiler dialogového okna voleb projektu obsahuje volby pro překladač. V horní části stránky jsou dvě tlačítka, které slouží pro rychlé nastavení voleb. Tlačítko Full Debug nastaví implicitní volby překladače pro případ ladění. Tlačítko Release nastaví tyto volby pro případ již dokončené aplikace. Volby nastavené těmito tlačítky lze kdykoliv podle potřeby změnit. Ve zbývající části stránky je pět sekcí.

  20. Sekce Code Optimization určuje způsob optimalizace našeho kódu. Volič None určuje, že se žádná optimalizace neprovádí. Při nastaveném voliči Speed je vytvářen nejrychlejší možný kód a to bez ohledu na jeho velikost. Volič Selected umožňuje použití voleb, které se zadají po stisku tlačítka Optimizations.
    Sekce Warnings umožňuje určit, která varování překladače budou vypisována (žádná, všechna nebo vybraná). Sekce Debugging určuje jak je generován kód pro ladění. Při nastavené značce Debug Information překladač generuje ladící informace. Ladící informace jsou uloženy v samostatném souboru s příponou TDS. Pokud tyto informace nejsou generovány, pak nelze provádět některé činnosti při ladění (např. nastavovat body přerušení). Značka Line Number Information říká překladači zda generovat informace o číslech řádků programu. Tyto informace jsou využívány při krokování programem. Volič Disable Inline Expansions určuje jak překladač zpracuje vložené funkce (při jejich normálním zpracování mohou vznikat při ladění problémy).
    Sekce Pre-Compiled Headers umožňuje řídit předpřeložení hlavičkových souborů. Pokud tato volba je povolena, pak při prvním překladu je zapamatován obraz tabulky symbolů projektu po překladu hlavičkových souborů a tento obraz je používán při následujících překladech (setří se tím čas). Sekce Compiling obsahuje tři značky. Značka Merge Duplicate Strings určuje zda duplicitní řetězce má překladač umístit na jedno místo v paměti. Vypnutím značky Stack Frames po dokončení ladění získáme menší a rychlejší kód. Při nastavené značce Show Genereal Msgs jsou různé stavové zprávy zobrazovány v okně zpráv Editoru kódu. Po vypnutí této volby jsou stavové zprávy zobrazovány v okně zpráv.
  21. Stránka Advanced Compiler je používána k nastavování dalších voleb překladače. Volby z této stránky pravděpodobně nikdy nepoužijeme. Totéž platí i o stránce C++, která obsahuje specifické volby překladu C++. Stránka Pascal slouží k nastavování voleb pro překladač Pascalu. Tento překladač je použit, pokud přidáme jednotku Pascalu k našemu projektu. Touto stránkou se také nebudeme podrobněji zabývat.
  22. Stránka Linker dialogového okna voleb projektu slouží k zadávání voleb pro sestavovací program. Pokud se důkladně neseznámíme s C++ Builderem, pak je vhodné zde používat pouze implicitní nastavení. Stránka má opět několik sekcí.

  23. Sekce Linking má několik sestavovacích voleb. Značka In-Memory EXE říká zda projektový spustitelný soubor bude vytvořen v paměti (místo na disku). Tím se urychlí vytváření spustitelného souboru, neboť se nic nezapisuje na disk. Tato volba je dostupná pouze pro Windows NT. Je vhodné ji používat pouze při vývoji aplikace. Značka Include Debug Information říká, zda vygenerované ladící informace mají být vloženy do výsledného souboru. Pokud provádíme ladění v IDE, pak tato značka musí být označena. Značka Use Dynamic RTL určuje, zda kód běhové knihovny má být připojen k naši aplikaci nebo zda se bude používat externě z DLL. Při použití balíčků budeme pravděpodobně chtít používat dynamické RTL (s naší aplikací budeme muset dodávat i soubor CP3240MT.DLL). Značka Generate Import Library je dostupná pouze pro DLL. Při nastavení této značky je automaticky vytvářen importní soubor knihovny (při vytváření knihovního souboru jej nemusíme vytvářet ručně). Položku Max Errors používáme ke specifikaci maximálního počtu chyb, po jejichž výskytu se sestavování ukončí.
    Sekce Map File řídí zda generovat mapový soubor a jak podrobný tento soubor má být. Sekce Warnings určuje, která varování budou vypisována v okně zpráv Editoru kódu. Sekce PE File Options umožňuje zadat minimální a maximální velikosti zásobníku a hromady pro naši aplikaci apod. Změna tohoto nastavení obvykle není nutná.
  24. Stránka Directories/Conditional umožňuje určit, ve kterých adresářích hledat knihovní a hlavičkové soubory. V části Include Path nastavujeme cesty k adresářům, kde budou hledány hlavičkové soubory. Jednotlivé adresáře jsou odděleny středníky. Symbol $(BCB) je makro, které určuje kořenový adresář C++ Builderu. Část Library Path obsahuje adresářové cesty ke knihovním souborům. Pokud do těchto dvou částí přidáváme další adresářové cesty, pak je vhodné zapsat je na konec již uvedeného seznamu. Část Debug Source Path určuje adresář pro výstupní soubory typu OBJ. Pomocí Intermediate output eliminujeme přeplnění hlavního adresáře projektu. Část Conditional Defines specifikuje všechny definice, které chceme přidat k projektu. Např. pro přidání podpory pro diagnostická makra TRACE a WARN vložíme do této položky text:

  25. __TRACE;__WARN
    Část Aliases přiřazuje jméno Pascalovské jednotky k hlavičkovému souboru C++.
    Stránka Version Info umožňuje nastavit informace o verzi pro naši aplikaci. Pokud tyto informace zadáme pak jsou uloženy ve výsledném souboru (EXE nebo DLL). Stránka Packages se týká používání balíčků. Horní část této stránky umožňuje přidávat a odstraňovat návrhové balíčky použité v současném projektu. Spodní část se týká běhových balíčků. Stránka Tasm umožňuje nastavovat volby pro Turbo Assembler.
5. Návrh palet nástrojů