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.
Componentes com estilo
Editores de propriedades e de componentes
O ambiente Delphi é bastante flexível, pois permite a agregação de novas funcionalidades personalizadas à IDE. Você pode estender o Object Inspector adicionando editores de propriedades personalizados, e estender o Form Designer, criando editores de componentes.
Para exemplificar a utilização dos dois tipos de editores, criaremos dois exemplos bastante simples. Primeiramente, vamos criar um editor para as propriedades Date, EndDate, MaxDate e MinDate da classe TMonthCalendar; depois um editor de componente para a classe TStringGrid.
Criando um package
Vamos criar um package para armazenar nossos editores. Selecione File|New>Other>Package; clique na seção Requires do editor de packages e use o botão Browse para adicionar o arquivo designide.dcp (no diretório $(DELPHI)\Lib); salve o package com o nome “miPackage.dpk”.
Editor de propriedade
A forma que uma propriedade é editada no Object Inspector é determinada pelo seu editor de propriedade. Existem várias classes de editores de propriedade pré-definidas no Delphi, mas talvez nenhuma dessas sejam adequadas para uma propriedade personalizada, criada por você. Nesses casos, você precisará criar seu próprio editor de propriedade. É o que faremos a seguir.
Primeiramente, adicione um componente TMonthCalendar ao formulário principal e altere a propriedade Name do componente para "calDate" (veja a Figura 1). Altere o nome do formulário para "frmDatePropEditor"; essa tela exibirá um calendário para o usuário selecionar uma data para a propriedade correspondente.
Figura 1. Formulário para seleção de data
O próximo passo será criar um descendente da classe TPropertyEditor. Crie uma unit com o seguinte código inicial:
unit miPropEditor;
interface
uses DesignIntf, DesignEditors, TypInfo, ComCtrls, SysUtils, Controls;
type
TDatePropEditor = class(TPropertyEditor)
public
function GetValue: string; override;
procedure SetValue(const Value: string); override;
function GetAttributes: TPropertyAttributes; override;
procedure Edit; override;
end;