Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Artigo Clube Delphi Edição 27 - O Poder dos Wizards
Artigo da Revista Clube Delphi Edição 27.

Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML.
O Poder dos Wizards
Extensão do Delphi com a Open Tools API
Neste artigo irei abordar um recurso muito poderoso – a capacidade do ambiente de desenvolvimento do Delphi ser estendido pelo programador. Usando a Open Tools API, vamos criar um Wizard completo e explorar as interfaces necessárias para o desenvolvimento de Wizards.
Nova API
Um fato importante é que veremos a nova Open Tools API, baseada em interfaces COM. Quem já tiver desenvolvido algum projeto baseado em COM, provavelmente terá mais facilidade no entendimento das técnicas empregadas. Embora o uso de interfaces para delegar responsabilidades não seja uma técnica muito comum no Delphi, ela é bastante utilizada em outras linguagens.
Simplificando, podemos explicar o processo dessa forma: definimos classes que implementam as interfaces que desejamos e depois registramos estas classes. No momento adequado, a IDE chama os métodos definidos nas interfaces que implementamos, executando então nosso código. Podemos, ainda, obter referências para interfaces implementadas pela própria IDE, através das quais temos acesso a várias tarefas do Delphi/Kylix, como fechar todos os arquivos abertos, compilar um projeto etc.
A nova Open Tools API é cross-platform e baseada principalmente na unit ToolsAPI.pas. Esta unit é uma excelente fonte de informação sobre a API.
Wizards
Vamos ao estudo dos Wizards, muito comuns nas ferramentas visuais. Os Wizards, ou "assistentes", são normalmente criados para nos auxiliar em tarefas repetitivas, agilizando assim o desenvolvimento. Um exemplo simples é o Wizard para criação de um "Thread Object" (File | New > Thread Object) do próprio Delphi/Kylix (veja a Figura 1).
Nesse Wizard, basta que forneçamos o nome da classe desejada para que seja gerada automaticamente uma unit com a definição de um novo descendente de TThread. Dessa forma, não temos o trabalho de criar uma nova unit, criar a definição da classe etc.

Figura 1. Exemplo de Wizard no Delphi – criação de threads
Interface IOTAWizard
Antes de passarmos à prática vamos analisar as interfaces envolvidas na criação de Wizards. Começaremos com a IOTAWizard, que deve ser implementada obrigatoriamente para qualquer tipo de Wizard. Os métodos dessa interface, com exceção do método Execute, têm implementação trivial – são apenas configurações básicas do Wizard. No método Execute é colocada toda a funcionalidade do Wizard.
|
IOTAWizard | |
|
GetIDString: String |
" |
Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Fernando Vasconcelos Mendes
Borland Delphi Certified Developer, palestrante da BorCon 2002, e criador e mantenedor do projeto TDSExpress (www.tdsexpress.hpg.com.br). Atualmente, ministra cursos de Delphi avançado e para internet. Atua na equipe de desenvolvimento de uma solução distribuída de CRM com Computer Telephony Integra...



