Esse artigo faz parte da revista Clube Delphi edição 37. 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.

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;

...

Quer ler esse conteúdo completo? Tenha acesso completo