delphi.gif - 582,0 K 
Curso de criação de componentes em Delphi
 
Unidade 3. Um  componente não-visual: TNif 
delphi.gif - 582,0 K 
 
Voltar ao índice  Por Luis Roche emailed.gif - 15503,0 K 

nif.gif - .933 K Chegou o momento de entrar em ação. Nós criaremos nosso primeiro componente: TNif. Mas antes de começar a escrever código isto serve para analisar o propósito do componente e como nós implementaremos isto.
Bverde.gif - .325 K Objetivo do componente

O propósito do componente é muito simples: a partir de um dado de entrada, o número de DNI, nosso componente deverá calcular a letra do NIF correspondente. O método de calcular esta letra é por meio de uma operação matemática muito simples. Esta operação é: DNI - ((DNI div 23) * 23). O resultado desta operação será um número entendido entre 1 e 23. Por meio de um quadro nós nomearemos uma certa letra a cada número, a letra que corresponde o NIF pedido. Os detalhes completos desta letra eu tenho no código fonte.
Bverde.gif - .325 K O projeto do componente

Baseado em nosso objetivo, está claro que nosso componente será do tipo não-visual e, então, nós derivaremos isto a partir de TComponent que eu como já foi visto; (unidade 2), é a base para a criação de componentes não-visuais.
A forma de introduzir o número de DNI será por meio de uma propriedade (propriedade DNI) de leitura. O valor desta propriedade será armazenada em um campo (FDNI) do tipoLongInt . Esta propriedade será publicada (published) de forma que ela aparece deste modo no Object Inspector . A leitura e escrita de valores nesta propriedade serão diretamente no campo FDNI, quer dizer, nós deixaremos que o  próprio Object Inspector se encarrega de verificar se o valor introduzido orresponde ao tipo LongInt.

Nós teremos outra propriedade (NIF) no que a letra calculada será armazenada (de tipo Char). Mas esta propriedade será somente leitura ja que o usuário do componente não poderá inserir a letra manualmente, pois o proprio componente que calcula isto. Esta propriedade deveria ser pública (Public) desde que seja somente leitura. Este aspecto serve para se salientar isto: as propriedades somente-leitura deverião ser declaradas na parte pública. A função que se encarrega de calcular a letra do NIF se chamará GetNIF.

Sempre serão declarados os campos que armazenam o valor de propriedades na parte privada (Private) desde que nós tenhamos certeza de que todos tenham acesso a ele, mas o usuário do componente, desde que se conscientize pela propriedade e não pelo  campo (isso representa o armazenamento interno da propriedade).

Relativo aos nomes usados, são continuadas as convenções seguintes:

Uma vez o método de empregado de desígnio de acordo é hora de começo para digitar.
Bverde.gif - .325 K Codifique fonte do componente
    
unit Nif;          { (c)1996 by Luis Roche }

interface

uses
  Classes;

type
  TNif = class(TComponent)   
  private
    FDNI : LongInt;          
    function GetNIF : char;  
  protected
  public
    property NIF: char read GetNIF;    
  published
     property DNI: LongInt read FDNI write FDNI;  
  end;

procedure Register;       

implementation

function TNIF.GetNIF : char;      
Var aux1 : integer;
Const letras : string = 'TRWAGMYFPDXBNJZSQVHLCKE';
begin
  aux1:=FDNI - ((FDNI div 23) * 23);
  result:=letras[aux1+1];
end;

procedure register;           
begin
  registercomponents('curso', [tnif]);
end;

end.
Bverde.gif - .325 K Comentários para o código fonte

O código fonte tem que ser criado através dos seguintes passos:

Bverde.gif - .325 K Criando um bitmap para o componente

Cada componente precisa de um bitmap para representar ao componente na paleta de componentes. Se nenhum for especificado, o Delphi usará um como padrão.

O bitmap não é incluído no código fonte do componente, mas é incluído separado em um arquivo com a extensão .DCR (Dynamic Component Resource). Este arquivo pode ser criado com o próprio editor de imagens que vem com o Delphi.

O nome do arquivo que .DCR deveria coincidir com o nome da unidade do seu componente. O nome do bitmap de imagem (em letra maiúscula) devera coincidir com o nome do componente. Os dois arquivos (o da unidade * .pas e que do bitmap * .dcr) devem residir no mesmo diretório.

Em nosso componente, se nós salvamos a unidade com o nome nif.pas  o arquivo de recursos se chamará nif.dcr. Dentro deste arquivo estarão o bitmap para os quais nós colocaremos o nome TNIF. O bitmap que nós criamos: nif.gif - .933 K O tamanho do bitmap devera ser de 24x24 pixels.

Como último detalhe, se você quer usar este mesmo bitmap, você pode usar um programa de tratamento de imagens para recortar isto e colar no editor de imagens do Delphi.
Bverde.gif - .325 K TNif instalando na paleta de componentes.

Para instalar nosso componente na paleta de componentes é muito simples. Siga os passos:


Luis Roche revueltaroche@redestb.es

Ultima modificación 5.12.1996