Esse artigo faz parte da revista Clube Delphi Edição 71. Clique aqui para ler todos os artigos desta edição

: yes">  function GetPage: string;

  function GetGlyph: Cardinal;

 

Seus métodos bastante descritivos pedem como resposta o nome do autor, um comentário, o título da aba e o ícone do wizard. Note que esses são os mesmos campos do diálogo Add To Repository (botão direito no Form Designer>Add to Repository).

Nossa intenção será colocar um wizard qualquer no repositório para entendermos a técnica. Você já deve ter reparado que os ícones dessa janela às vezes mudam, ao clicarmos em New. Isso acontece porque os wizards registrados no Object Repository podem ser de dois tipos: criadores de formulário (só aparecem quando existir um projeto ativo) ou de projeto (sempre aparecem).

Por esse motivo, vamos ter de informar ao IDE também qual é o tipo de wizard, através de sua interface correspondente: IOTAFormWizard ou IOTAProjectWizard. Para reforçar o que vimos até agora, vamos construir um simples Hello World, que será adicionado ao Object Repository.

Crie um novo pacote (File>New>Other>Package), adicione a ele uma nova unit (File>New>Unit) e salve-os como “RepositoryPackage.dpk” e “RepHelloWorld.pas”, respectivamente. Substitua, então, o código da unit pelo da Listagem 1.

 

Listagem 1. Código do exemplo Hello World no Object Repository

unit RepHelloWorld;

 

interface

 

uses ToolsAPI, Dialogs;

 

type

  TRepositoryHello = class(TNotifierObject,

    IOTAWizard, IOTAFormWizard,

    IOTARepositoryWizard)

  public

    //IOTAWizard

    procedure Execute;

    function GetIDString: string;

    function GetName: string;

    function GetState: TWizardState;

 

    //IOTARepositoryWizard

    function GetAuthor: string;

    function GetComment: string;

    function GetGlyph: Cardinal;

    function GetPage: string;

  end;

 

procedure Register;

 

implementation

 

{ TRepositoryHello }

 

procedure TRepositoryHello.Execute;

begin

  ShowMessage('Hello World!!');

end;

 

function TRepositoryHello.GetAuthor: string;

begin

  Result := 'SEU NOME';

end;

 

function TRepositoryHello.GetComment: string;

begin

  Result := 'Revista ClubeDelphi';

end;

 

function TRepositoryHello.GetPage: string;

begin

  Result := 'ClubeDelphi';

end;

 

function TRepositoryHello.GetGlyph: Cardinal;

begin

  Result := 0;

end;

 

...

Quer ler esse conteúdo completo? Tenha acesso completo