Artigo Clube Delphi 71 - Open Tools API
Criando novos assistentes para o Object Repository.
Open Tools API
Parte II – Criando novos assistentes para o Object Repository
Se você utiliza o Delphi há algum tempo, provavelmente já deve ter feito uso do BDE para acessar o seu banco de dados. Nesse momento, alguns devem estar se lembrando de como era fácil e rápido construir um novo formulário de acesso a dados, através do velho conhecido, o Form Wizard.
Existem ainda outros assistentes muito úteis em nosso ambiente, como o Application Wizard, o COM Object Wizard, o Web Server Application e o próprio New Component. Esses nos ajudam a economizar muito tempo no desenvolvimento e, às vezes, tornam-se indispensáveis.
Seria então possível criar nossos próprios assistentes construtores de formulários? Assim, poderíamos aproveitar ao máximo o tempo de nossos desenvolvedores em implementação de regras de negócio, não em atividades repetitivas e desnecessárias.
Interagindo com o Object Repository
Na primeira parte do artigo (edição 70), aprendemos a disponibilizar nossos wizards para o usuário final através do menu principal do Delphi. Vimos também que podemos utilizar NTA para acessar os objetos nativos do IDE, como o MainMenu e a ToolBar. Contudo, quando falamos de assistentes criadores de janela, ou de projeto, logo pensamos no Object Repository.
Mais uma vez, a única diferença em nossa classe será o conjunto de interfaces implementadas. Para suportar o repositório, o nosso meio de comunicação com o ambiente será através de IOTARepositoryWizard. Vamos analisá-la em mais detalhes, conforme o código a seguir:
IOTARepositoryWizard = interface(IOTAWizard)
['{B75C0CE1-EEA6-11D1-9504-00608CCBF153}']
function GetAuthor: string;
function GetComment: string;
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
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;
" [...] continue lendo...
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo