delphi.gif - 582,0 K
Curso de creación de componentes en Delphi

Unidad 3. Un componente no visual: TNif

delphi.gif - 582,0 K
Volver al índice Por Luis Roche emailed.gif - 15503,0 K

nif.gif - .933 K Ha llegado el momento de pasar a la acción. Vamos a crear nuestro primer componente: TNif. Pero antes de ponernos a escribir código conviene analizar el propósito del componente y cómo lo vamos a implementar.

Bverde.gif - .325 KObjetivo del componente

El propósito del componente es muy simple: a partir de un dato de entrada, el número de DNI, nuestro componente debe calcular la letra del NIF correspondiente. El método de calcular esta letra es mediante una operación matemática muy sencilla. Esta operación es: DNI - ((DNI div 23) * 23). El resultado de esta operación será un número comprendido entre 1 y 23. Mediante una tabla asignaremos una letra determinada a cada número, letra que corresponde al NIF pedido. Los detalles completos de este calculo y asignación de letra se encuentran en el código fuente.

Bverde.gif - .325 KDiseño del componente

En base a nuestro objetivo, queda claro que nuestro componente será del tipo no visual y, por lo tanto, lo derivaremos a partir de TComponent, que como ya se ha visto; (unidad 2), es la base para la creación de componentes no visuales.

La forma de introducir el número de DNI será mediante una propiedad (propiedad DNI) de lectura y escritura. El valor de dicha propiedad lo almacenaremos en un campo (FDNI) de tipo longInt. Esta propiedad será publicada (published) para que así aparezca en el inspector de objetos. La lectura y escritura de valores en esta propiedad la haremos directamente sobre el campo FDNI, es decir dejaremos que sea el propio inspector de objetos el que se encargue de verificar que el valor introducido corresponde al tipo longInt.

Tendremos otra propiedad (NIF) en la que se almacenará la letra calculada (de tipo char). Pero esta propiedad será de sólo lectura ya que el usuario del componente no debe poder introducir la letra manualmente, ya que debe ser el propio componente el que la calcule. Esta propiedad debe de ser pública (public) ya que es de sólo lectura. Este aspecto conviene resaltarlo: las propiedades de sólo lectura deben ir declaradas en la parte pública. La función que se encarga de calcular la letra del NIF la llamaremos GetNIF.

Los campos que almacenan el valor de propiedades siempre se declararán en la parte privada (private) ya que así nos aseguramos de que el componente que declara la propiedad tiene acceso a ellos, pero el usuario del componente no, ya que él debe acceder a través de la propiedad y no del campo (que representa el almacenamiento interno de la propiedad).

Respecto a los nombres empleados, se siguen las siguientes convenciones:

Una vez acordado el método de diseño empleado es hora de comenzar a teclear.

Bverde.gif - .325 KCódigo fuente del componente
unit Nif;          { (c)1996 by Luis Roche }

interface

uses
  Classes;

type
  TNif = class(TComponent)   {Nuestro propiedad deriva de TComponent}
  private
    FDNI : LongInt;           {Almacenará el número de DNI}
    function GetNIF : char;   {Calcula la letra del NIF}
  protected
  public
    property NIF: char read GetNIF;    {Propiedad NIF: sólo lectura}
  published
     property DNI: LongInt read FDNI write FDNI;  {DNI: lectura y escritura}
  end;

procedure Register;       {Registra nuestro componente en la paleta}

implementation

function TNIF.GetNIF : char;      {Calcula el NIF a partir del DNI}
Var aux1 : integer;
Const letras : string = 'TRWAGMYFPDXBNJZSQVHLCKE';
begin
  aux1:=FDNI - ((FDNI div 23) * 23);
  result:=letras[aux1+1];
end;

procedure register;           {registro del componente}
begin
  registercomponents('curso', [tnif]);
end;

end.

Bverde.gif - .325 KComentarios al código fuente

El código fuente se ha creado siguiendo los siguientes pasos:

Bverde.gif - .325 KCreando un bitmap para el componente

Cada componente necesita un bitmap para representar al componente en la paleta de componentes. Si no se especifica uno, Delphi utilizará uno por defecto.

El bitmap no se incluye en el código fuente del componente, sino que debe incluirse en un archivo aparte con la extensión .DCR (dynamic component resource). Este fichero puede crearse con el propio editor de imagenes que incorpora Delphi.

El nombre del archivo .DCR debe coincidir con el nombre con que se ha salvado la unidad que contiene el componente. El nombre de la imagen bitmap (que debe estar en mayúsculas) debe coincidir con el nombre del componente. Los dos ficheros (el de la unidad *.pas y el de el bitmap *.dcr) deben residir en el mismo directorio.

En nuestro componente, si hemos salvado la unidad con el nombre nif.pas nuestro archivo de recursos deberá tener el nombre nif.dcr. Dentro de este archivo se encontrará el bitmap, al que pondremos el nombre TNIF. El bitmap que hemos creado es el siguiente: nif.gif - .933 K El tamaño del bitmap debe ser de 24x24 pixels.

Como último detalle, si quieres utilizar este mismo bitmap, puedes utilizar un programa de tratamiento de imágenes para cortarlo y pegarlo en el editor de imágenes de Delphi.

Bverde.gif - .325 KInstalando TNif en la paleta de componentes.

Instalar nuestro componente en la paleta de componentes es muy sencillo. Basta con seguir los siguientes pasos: Nota: Es una buena idea antes de comenzar hacer una copia de seguridad del archivo COMPLIB.DCL para evitar posibles problemas derivados de fallos al compilar, caídas de tensión, etc.
Luis Roche revueltaroche@redestb.es
Ultima modificación 5.12.1996

Otros Links de Interés:

Cocina  -  Videos  -  Juegos Gratis  - Postales cachondas  - Cine  - Programas Gratis  -  Letras de Canciones

Listas de todos los Tutoriales Gratis. 1998- 2007 - -

Los tutoriales y cursos aquí reunidos son una recopilación de los mejores encontrados en Internet.
El crédito y copyright de los mismos si lo hubiere corresponde al autor de cada uno de ellos.
Si tu tutorial o curso está aquí, y deseas darlo de baja de esta recopilación o quieres añadir el tuyo, envíanos un mensaje desde
aquí

Publispain - Fun