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 

 


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:

Delphi, Delphi 2.0, Delphi 3, Borland International, and the Delphi logos are either trademarks or registered trademarks of Borland International. Borland International in no way endorses or is affiliated with "Delphi Brasil"™
All other trademarks are the sole property of their respective owners.