Artigos
Delphi
Artigo Clube Delphi Edição 47 - Editores de Componentes na Prática
Esse artigo faz parte da revista Clube Delphi edição 47. Clique aqui para ler todos os artigos desta edição
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.
Editores de Componentes na Prática
Parte I: Conceitos e configuração automática do acesso com dbExpress
Com um duplo clique em um ImageList da VCL você verá o editor que auxilia na configuração de suas imagens; ao fazer o mesmo em um componente descendente de TDataSet (como
TClientDataset, TSQLQuery etc.), será exibido o conhecido Field Editor. Essas telas (algumas vezes mini-aplicativos completos) que simplificam a configuração de componentes são chamadas de Editores de Componente, e são o assunto desta série de artigos em duas partes.
Apresentaremos dois exemplos construídos passo a passo. O primeiro, bem simples, mostra conceitos básicos através da criação de um editor no estilo “Olá Mundo” para o componente Button da VCL. O segundo demonstra como criar um editor para o componente SQLQuery do dbExpress, que pode ser bastante útil – ele permite que, com apenas alguns cliques seja configurado um acesso dbExpress completo, usando os componentes SQLConnection, o próprio SQLQuery, um DataSetProvider, um ClientDataSet e um DataSource, sem que seja necessário inserir esses componentes no formulário ou no Data Module, nem conectá-los manualmente.
Nota – Um assunto relacionado ao tratado aqui é a criação de Editores de Propriedade. Veja mais no artigo de Ivan Martins, na Edição 37.
Conceitos básicos
Vamos ao primeiro exemplo. Clique em File|New>Other>Package (Figura 1) e no editor do pacote clique no botão Options. Clique na aba Description e na opção Description digite “Button - Editor de componente”. Como um editor de componente é utilizado somente pela IDE do Delphi (ele não é compilado junto com aplicações), devemos marcar a opção Designtime only em Usage Options (Figura 2).
Figura 1. Criando um pacote
Figura 2. Configurando o pacote como designtime e fornecendo uma descrição
Clique em File|New>Unit e altere a seção interface da unit como mostrado a seguir:
uses
DesignEditors;
type
TMeuEditor = class (TComponentEditor)
public
function GetVerbCount : integer; override;
function GetVerb (Index : integer): string; override;
procedure ExecuteVerb (Index : integer); override;
procedure Edit; override;
end;
procedure Register;
Salve o pacote e a unit, mantendo os nomes padrões. Como você pode ver, para criar um editor de componente devemos criar uma subclasse de TComponentEditor (declarada na unit DesignEditors.pas) – ou uma subclasse de um de seus descendentes –, e redefinir seus métodos virtuais (override).
Pressione Shift+Ctrl+C para criar os cabeçalhos de implementação dos métodos, e implemente o método Edit da seguinte forma (esse método é disparado quando é dado um duplo clique sobre o componente):
...