Artigo Clube Delphi 70 - Open Tools API
Artigo da Revista Clube Delphi Edição 70.
Atenção: por essa edição ser muito antiga não há arquivo pdf para download desta revista. Os artigos disponíveis somente em doc.
Open Tools API
Crie seus próprios plug-ins para o IDE do Delphi.
Se você já pensou: “o Delphi é tão bom, mas por que o IDE não tem mais essa funcionalidade para facilitar meu trabalho?”, certamente irá se identificar com o que a Open Tools API (OTA) permite fazer. De maneira rápida e fácil, podemos implementar desde simples itens no menu a poderosos assistentes com a função de automatizar a criação de formulários. Só dependemos de nossa criatividade e/ou necessidade para criar exemplares plug-ins e melhorar ainda mais a ferramenta de trabalho.
Hoje existem, diversos plugins, pagos e gratuitos, disponíveis na internet para download. Por exemplo, podemos citar o GExperts e o CnPack, que oferecem conjuntos de funcionalidades para aumentar ainda mais a produtividade do desenvolvedor. Neste artigo, você aprenderá a criar seus próprios plug-ins wizards para o IDE do Delphi, usando o OTA.
Um primeiro exemplo – “Hacking” |
Antes de começarmos a utilizar a API do OTA, vamos ver como podemos acessar os objetos do IDE através de pacotes. Note que essa é uma maneira totalmente desaconselhada para a construção de plug-ins, pois existem meios que nos garantem uma maior confiabilidade em tal tarefa, principalmente no tocante a compatibilidade entre versões da ferramenta.
No Delphi, crie um pacote (File>New>Other>Package), adicione nele uma nova unit (File>New>Unit) e salve os arquivos como “HackingPackage.dpk” e “Hacking.pas”, respectivamente. Substitua o conteúdo de Hacking.pas pelo código da Listagem 1 e lembre-se que a declaração do método Register é case-sensitive.
Compile e instale seu pacote. Quando lhe for perguntado sobre a adição de uma referência à VCL, responda OK. Veja que conseguimos acessar facilmente os objetos internos do IDE e alterar algumas propriedades, como título e a cor do formulário principal. A seção finalization, da unit, que só poder ser delcarada se existir initialization, servirá para restaurarmos os valores antigos e liberarmos regiões alocadas da memória.
Agora, a menos que você queira continuar com a Ide do Delphi na cor vermelha, desinstale o pacote através de Component>Install Packages.
Mais uma vez, devemos analisar que essa técnia deve ser usada somente em situações extremas, e foi apresentada aqui apenas para fins didáticos. Como veremos, existem soluções muito mais elegantes para a construção de plug-ins.
Listagem 1. Código de Hacking.pas do projeto HackingPackage unit Hacking;
interface
uses Forms, Graphics;
procedure Register;
implementation
var TituloAntigo: string; CorAntiga: TColor;
procedure Register; begin TituloAntigo := Application.Title; Application.Title := 'Revista ClubeDelphi';
CorAntiga := Application.MainForm.Color; Application.MainForm.Color := clRed; end;
initialization finalization Application.Title := TituloAntigo; Application.MainForm.Color := CorAntiga; end. |
Open Tools API e IOTAWizard |
A Open Tools API, comumente chamada apenas de OTA, pode ser compreendida como um conjunto de ferramentas para a extensão do IDE. Sua infra-estrutura é baseada em interfaces e pacotes, ou seja, para registrar um plug-in que exerça determinada tarefa, é preciso apenas implementar a interface correspondente e compilar tudo em um pacote. Além disso, os plug-ins construídos poderá rolar tanto no Delphi quanto no C++ Builder, sem grandes problemas.
Dica: Para um bom entendimento deste artigo, é ideal que o leitor tenha conhecimento básico sobre o uso de interfaces. Para aprender mais sobre interfaces, consulte minha coluna no portal ClubeDelphi. |
Uma outra saída para a construção de plug-ins seria através de DLLs, em vez de pacotes design-tima. Essas seriam declaradas no registro do Windows e carregadas pelo IDE, em sua inicialização. Contudo, pacotes são bem mais simples de implementar, de forma que não discutiremos o uso DLLs neste artigo.
Hoje, existem mais de 100 interfaces disponibilizadas pelo Delphi para a OTA. Essas, em sua grande maioria, estão localizadas na unit ToolsAPI.pas, em <DirDelphi>\Source\ToolsAPI\ToolsAPI.pas.
Todos os assistentes na OTA, sejam eles itens de menu ou criadores interativos de janela, são conhecidos como wizards (antigamente chamados de Experts). Para eles, existe uma super classe em comum, a IOTAWizard que sempre deve ser implementada. Vejamos a sua declaração:
IOTAWizard = interface(IOTANotifier)
[‘ {B75COCEO – EEA6 - 11D1 – 9504 – 00608CCBF153}’ ]
{Expert UI strings }
function GetIDString: string;
function GetName: string;
function GetState: TWizardState;
{ Launch the AddIn }
procedure Execute;
end;
Podemos notar a presença de quatro métodos: dois para identificação, um para reconhecimento de estado e outro para a execução propriamente dita. Veja, no quadro " [...] continue lendo...
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo