Buscar

Criando componentes no delphi - final

Código

Olá pessoal, como passaram a semana? Deu tudo certo? Aprenderam e ensinaram muita coisa? Pois é, cada vez mais em nosso ramo de atividade é importante ter contato com outras pessoas, outras tecnologias e, por quê não, com outros problemas?!É muito importante essa integração e essa troca de informações e experiências é o que te trará de forma mais rápida e clara reconhecimento, admiração e que divulgará o seu trabalho. Portanto não prendam conhecimento, divulguem-no!

Nessa nossa 7ª coluna estaremos finalizando o assunto sobre Criação de Componentes, aonde vimos os passos básicos para criamos um componente personalizado. Falaremos então sobre criação de um novo evento para um componente personalizado.

Um evento na verdade é um tipo especial de que aponta para uma função a ser executada sob determinada condição. Um dos tipos mais comuns de evento é o TnotifyEvent, no qual o procedimento associado a ele terá como único parâmetro o Sender, da Classe TObject.

Dando continuidade ao nosso componente das últimas duas semanas vamos criar o evento OnErroAoConverter, que como o próprio nome sugere, quando ocorrer um erro ao tentarmos converter para um valor numérico um valor de texto que contenha caracteres que não sejam números, como letras, por exemplo, que ocorre quando ativamos a propriedade Numérico do Edit para TRUE.

Vamos por a mão na massa então:

» Abra o código fonte do seu componete criado nas últimas duas semanas;

» Acrescente na diretiva PRIVATE o seguinte:

      a. Private
            i.      Fnumerico: boolean;
            ii.      FonErroAoConverter: TnotifyEvent;

» Na diretiva PUBLISHED acrescente a propriedade do evento:

      a. Published
            i.      Property Numérico: boolean read Fnumerico write Fnumerico defaut True;
            ii.      Property OnErroAoConverter: TNotifyEvent read FonErroAoConverter write OnErroAoConverter;

» Note que assim como a propriedade Numérico, criada na semana passada, o evento também tem um campo interno associado a ele, o FonErroAoConverter.

» Devemos definir um método de escrita (write) e este deve ter um único parâmetro, do mesmo tipo tipo da propriedae acessada. Podemos definir então um método chamado Atribuir, para a classe do nosso componente:

      a. Procedure TnumEdit1.Atribuir(Valor: boolean);

      b. Var ValorConvertido: integer;

      c. Begin
            i.      Fnumerico := Valor;
            ii.      If not Valor then

                  1.      try

                        a.      

ValorConvertido := StrToInt(Text);
Except
            OnEConvertErro do
                       If csDesigner in ComponentState then
                                   Text := ‘0
                       Else
                                   If Assigned(FonErroAoConverter) then
                                               FonErroAoConverter(Self)
End;
                                   End;
                        End;

» Acrescente na diretiva protected o seguinte:

      a. Protected
            i.      Property KeyPress(var Key: char); override;
            ii.      Property Change; override;
            iii.      Procedure Atribuir(Valor: boolean);

» Recompile o pacote (packager) que contém seu componete e o iclua em um Formulário para testar, como por exemplo:

      a. Procedure Tform1.NumEdit1ErroAoConverter(Sender: Tobject);

      b. Begin
            i.    
            NumEdit1.Text := ‘0’;
            End;

» Pontro! Assim sendo, sempre que ocorrer um erro de conversão durante a execução do seu aplicativo o valor da propriedade text será igual a ‘0’, conforme foi definido pelo usuário do componente, que poderá decidir o que deve ser feito pelo programa quando houver um erro de conversão.

Espero que tenham aprendido o básico de criação de componentes, na próxima semana espero todos com um novo assunto. Lembrem-se, qualquer coisa entre em contato
 

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Componentes
Adicionada dia: 09/02/05
Por: Jose Ribeiro
Visualizada: 5399 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009