Toolbar jako u MS Office? - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



Komponenty

Toolbar jako u MS Office?

30. května 2001, 00.00 | Pokud jste někdy zatoužili mít ve své aplikaci lišty nástrojů, které jako by z oka vypadly těm v Microfoft Office, určitě využijete sadu komponent Toolbar97.

Podívejte se na obrázek nalevo, a pak na ten napravo. Vidíte nějaký podstatný vzhledový rozdíl? Já tedy ne. Ale přitom nástrojová lišta nalevo pochází z Wordu, zatímco ta u aplikace vpravo byla vytvořena pomocí sady komponent Toolbar 97.

Autor této sady, spam_email('.org', '@', 'jrsoftware', 'jr');, se totiž rozhodl dát uživatelům Delphi možnost, jak do svých aplikací začlenit lišty přesně ve stylu Microsoft Office. Řekl bych, že tento cíl se mu docela dobře povedl. (Jistou formou podpory tohoto tvrzení budiž fakt, že Toolbar97 používám ve svých programech běžně skoro dva roky). Pojďme se tedy podívat, z čeho se sada skládá a jak ji použít.

Jednotlivé komponenty

Pokud chcete do svého programu lištu začlenit, musíte nejdřív na formulář umístit tzv. dok, tedy v podstatě definovat, v jaké oblasti se lišta bude moci nacházet. U doku (komponenta Dock97) máte možnost ovlivnit, u kterého okraje formuláře bude ležet, případně nastavit, zda bude oddělen od krajů linkami. Můžete zvolit i barvu na jeho pozadí, nebo ho "vytapetovat" bitmapou dle vlastního výběru.

Nejdůležitější komponentou celého souboru je samozřejmě Toolbar97 - vlastní lišta. U ní je možno nastavit spoustu vlastností - především dok, ve kterém má být umístěna, a zda z něj může výt "vytažena" a fungovat jako "plovoucí". Samozřejmě lze nastavit i pozadí (opět barva/bitmapa), nadpis lišty (a zda ho vůbec zobrazovat), zda lištu skrýt, když je hlavní formulář alikace neaktivní, a několik dalších zajímavých vlastností.

Na lištu samotnou lze umisťovat v podstatě libovolné vizuální komponenty Delphi. Ale nejvíce zřejmě využijete ToolBarButton. To je tlačítko, specializované na spolupráci s Toolbar97. Základní možnosti má podobné třeba "klasickému" SpeedButtonu, ale oproti němu přidává například podporu obrázku z ImageListu, průhlednost a možnost vytvořit drop-down menu. Princip jeho funkce je stejný jako třeba v Internet Exploreru u tlačítka Zpět - tlačítko je rozděleno na dvě části a při stisku té napravo (se šipkou) se rozbalí menu, definované ve vlastnosti DropdownMenu.

Další komponentou sady je ToolbarSep97. Jeho jediným účelem je grafické oddělení jednotlivých tlačítek na liště, a proto se jím nebudu dále zabývat.

Naproti tomu třeba komponenta Edit97 je o něco zajímavější. Je to v podstatě klasický editbox, který se ale normálně zobrazuje bez okrajů. Okraje se objeví pouze, když přes něj přejíždíte myší. Hodí se tedy dobře k tlačítkům na liště, které oplývají stejnou vlastností (pokud ji nevypnete nastavením vlastnosti Flat na False).

Poslední komponentou sady je ToolWindow97. Je to jistá obdoba Toolbar97, ale nemá pevně dané rozměry (lze je tedy měnit i za běhu aplikace) a komponenty, které na ToolWindow97 umístíme, si zachovají svou pozici a neseskupí se za sebe, jak je tomu u Toolbar97. Komponenta se dá s výhodou použít na tvorbu různých paletek typu "nastavení vlastností". Kdo někdy pracoval třeba s Adobe Photoshopem, ví, o čem mluvím.

Další "features"

Komponenta disponuje velice užitečnou možností ukládat a číst nastavení lišt z/do registrů a INI souborů. Nastavením se zde myslí především poloha lišt v docích, případně jejich souřadnice na obrazovce, pokud se nacházejí v "plovoucím" stavu. Vše je shrnuto do čtyř globálních procedur v unitě TB97.pas, které uložení či načtení vykonají pro všechny toolbary na formuláři. Takže startovací kód formuláře může vypadat třeba takto:

procedure TForm1.FormCreate(Sender: TObject);
begin
  ...
  RegLoadToolbarPositions (Self, 'Software\My Company\My Program\Toolbars');
  ...
end;

A ukončovací zase třeba takhle:

procedure TForm1.FormDestroy(Sender: TObject);
begin
  ...
  RegSaveToolbarPositions (Self, 'Software\My Company\My Program\Toolbars');
  ...
end;

Jak prosté :-)

K sadě komponent je dodáván navíc soubor glyphs.zip, což jsou bitmapky na tlačítka vypreparované z Microsoft Office. Najdete tam všechny ikony pro práci se soubory, schránkou, okny, tiskem apod. - prostě ty, které jsou potřeba téměř v každé aplikaci. Pro ty, kteří si podobné ikonky tvořili sami (jako já :-), je to určitě ulehčení práce; navíc jejich aplikace můžou mít docela snadno standardní vzhled, za což jim jejich uživatelé budou jistě vděční.

Závěr

Sada má za sebou relativně dlouhý vývoj (od roku 1997, momentálně je ve verzi 1.77). Díky tomu je poměrně sofistikovaná a odpadá většina nářků typu "kdyby tam jen byla tahle funkce". Toolbar97 je freeware pro nekomerční využití, jinak je nutné zaplatit registrační poplatek (20 dolarů). Dodávány jsou i zdrojové kódy a velice kvalitní dokumentace včetně návodu k instalaci pro všechna podporovaná prostředí (Delphi 2.0-5.0 a C++ Builder 1.0-5.0).

Autor momentálně pracuje na nové sadě, Toolbar2000, které by měla oproti stávající přinést několik vylepšení. Především menu ve stylu Office 2000, možnost jejich run-time úpravy a podporu dokovatelných panelů (jako např. v MS Visual Studiu). Máme se tedy na co těšit.

Domovská stránka: http://www.jrsoftware.org/

Sthnout: http://www.jrsoftware.org/files/site1/tb97.zip

E-mail autora: spam_email('.org', '@', 'jrsoftware', 'jr');?subject=Toolbar97 version 1.77">

Tématické zařazení:

 » Rubriky  » Komponenty  

 » Rubriky  » Delphi  

 » Rubriky  » Windows  

Diskuse k článku

 

Vložit nový příspěvek   Sbalit příspěvky

 

Zatím nebyl uložen žádný příspěvek, buďte první.

 

 

Vložit nový příspěvek

Jméno:

Pohlaví:

,

E-mail:

Předmět:

Příspěvek:

 

Kontrola:

Do spodního pole opište z obrázku 5 znaků:

Kód pro ověření

 

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: