Živě.cz o počítačích a internetu

Tipy a triky v Delphi, díl 192. – vytváříme experta

Jan Šindelář 13.7.2005

Uživatelské prostředí Delphi lze rozšířit o řadu užitečných vlastností tím, že do něj doinstalujeme tzv. experty. Jedná se většinou o jednoduché pomocné nástroje integrované přímo v IDE, které nám mají usnadnit práci. Jak takového experta vytvořit si ukážeme v dnešním dílu seriálu.

Podobně jako jiné programy umožňuje i uživatelské prostředí Delphi rozšířit své funkce pomocí "zásuvných modulů" v podobě tzv. expertů. Začínající programátoři obvykle hledají na internetu šikovné komponenty do svých projektů, ale málokdy tuší, že lze vylepšit i samotné prostředí. Mezi známé experty či spíše jejich balík patří například GExperts.

Tyto nástroje vylepšují jednak samotný editor o funkce lepšího hledání či zlepšování čitelnosti kódu, pomohou vám při generování dialogových oken, zálohování projektu, mazání nepotřebných (dočasných) souborů v projektu a další a další šikovné funkce. Tolik tedy stručný nástin problematiky pro uživatele, kteří zatím o existenci expertů netušili.

Dnešním tématem je naučit se vytvořit si sami takového jednoduchého experta. V zásadě se nejedná o nic jiného, než o běžnou aplikaci. Ta bude tvořit výkonné jádro našeho experta. Co bude dělat, to nechám na vás a vaší fantazii či potřebám, to není cílem našeho článku. Důležité je však to, jak tento program poté zakomponovat přímo do menu Delphi, což si právě teď ukážeme.

Začneme tím, že si vytvoříme nový unit. Ten bude tvořit základ našeho experta a bude složen ze třídy TExpert, která bude reprezentovat náš nástroj a ze čtyř funkcí a jedné procedury. Funkce slouží zejména k nastavení takových parametrů jako je název experta, jeho unikátní identifikátor, text zobrazovaný v menu či stav. Procedura s názvem Execute pak slouží ke spuštění samotného nástroje a bude obsahovat výkonnou část. Náš malý expert bude pro ukázkové účely zobrazovat po jeho vyvolání pouze aktuální datum a čas v dialogovém okně. Zrovna tak by ale mohl provádět daleko užitečnější činnost, ale to již ponechám na vás.

unit DelphiExpert;

interface

uses ToolsApi;

type
  TExpert = class(TNotifierObject, IOTAMenuWizard, IOTAWizard)
  public
    function GetIDString: string;
    function GetName: string;
    function GetState: TWizardState;
    function GetMenuText: string;
    procedure Execute;
  end;

procedure Register;

implementation

uses Dialogs, SysUtils;

procedure Register;
begin
  RegisterPackageWizard(TExpert.Create);
end;

procedure TExpert.Execute;
begin
  ShowMessage(`Je právě: ` + DateTimeToStr(Now));
end;

function TExpert.GetIDString: string;
begin
  Result := `Pokusny.Expert`;
end;

function TExpert.GetMenuText: string;
begin
  Result := `Pokusný expert Delphi`;
end;

function TExpert.GetName: string;
begin
  Result := `Pokusný expert Delphi`;
end;

function TExpert.GetState: TWizardState;
begin
  Result := [wsEnabled];
end;

end.

Povšimněte si toho, že unit je poměrně krátký a hodně jednoduchý. Kromě jednotky ToolsApi (která je klíčová pro fungování experta) v části interface a dále jednotek Dialogs a SysUtils v implementační části neobsahuje žádné zbytečné knihovny. Jednotku Dialogs potřebujeme kvůli funkci ShowMessage a jednotku SysUtils pak kvůli funkcím pro datum a čas. Seznam těchto potřebných knihoven může být pochopitelně různý, záleží čistě na vás, co vše budete potřebovat.

Máme-li hotovou jednotku, musíme si připravit balíček (package), do kterého ji umístíme. Připomínám stručný postup pro vytvoření balíčku přes menu File -> New -> Other a na záložce New poté objekt Package (cesta se může drobně lišit v závislosti na verzi Delphi, popsán je postup pro Delphi7). Do balíčku vložíme přes Add náš nový unit a balíček nainstalujeme.

A to je vše. Nyní už je expert připraven a nainstalován. Ptáte se, odkud ho vyvoláme? Podíváte-li se nyní do menu Help, měli byste zde najít vašeho experta pod tím názvem, který je ve zdrojovým kódu. Jeho spuštěním se pak provede příslušná činnost z procedury Execute, což v našem případě znamená zobrazení dialogového okna se aktuálním datem a časem.

Pokud budete chtít experta odstranit, stačí odinstalovat příslušný balíček, ve kterém se expert nachází. Ihned by měl z menu zmizet a vše bude opět jako dřív. Tolik tedy stručný nástin tvorby expertů. Problematika je samozřejmě daleko obsáhlejší a pro zájemce doporučuji vyhledat si a prostudovat problematiku Open Tools API.