Código
Estamos hoje na nossa 6º Coluna. Semana passada falamos sobre o início de criação de componentes. Hoje veremos a segunda parte desse material, onde falaremos sobre a criação de novas propriedades para os nossos componentes.
Criar novas propriedades e eventos, esses últimos serão vistos na terceira e última parte desse assunto, são basicamente o que justifica a criação de novos. Pois quando você cria uma nova propriedade você está na verdade evitando ter que digitar todos aqueles procedimentos e funções que você definiu para um componente qualquer e que você geralmente utiliza.
Criaremos um Edit que terá uma propriedade boleana, ou seja, só recebe valores true ou false, o que definirá se o componente aceitará apenas números ou não. Normalmente o valor de uma propriedade é armazenado em uma variável (campo) privada da classe sendo assim a propriedade mero meio de comunicação entre o campo e o programador.
Por convenção e organização esses campos geralmente têm o mesmo nome da propriedade referida do componente apenas precedido da letra F que representa field, campo em inglês. Uma propriedade pode ter métodos de leitura e escrita, read e write respectivamente.
Para criar o esqueleto para um novo componente siga os passos ensinados na Coluna anterior.
Vamos agora para a definição de uma nova propriedade:
» A seção Public (pública) abriga as variáveis, procedimentos ou funções que podem ser lidos e executados por quaisquer outras units que utilizem (através cláusula Uses) a unit em questão já a seção Published (Publicado) é utilizada para inserir propriedades ou eventos aos componentes;
» Na diretiva private digite:
private
{ Private declarations }
FNumerico: boolean;
» Na diretiva public digite:
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
procedure KeyPress(var Key: Char);
» Na diretiva public digite:
published
{ Published declarations }
property Numerico: boolean read FNumerico write FNumerico default true;
» Na cláusula implementation vamos definir o corpo da propriedade;
» Para definir que a propriedade virá marcada com o seu valor padrão True, após a procedure de registro vamos acrescentar um construtor:
constructor TNumEdit.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FNumerico := true;
Text := '0';
end;
» Vamos também definir a validação de entrada de valores para esse nosso novo Edit, onde se o valor da propriedade Numérico for verdadeiro (true) somente serão atribuídos os valores numéricos e a tecla back scape:
procedure TNumEdit.KeyPress(var Key: Char);
const teclasDec = ['0'..'9', #8];
begin
if FNumerico then
if not (key in teclasDec) then
key:=#0;
inherited KeyPress(Key);
end;
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009