Ver Mensaje Individual
  #4  
Antiguo 28-10-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 25
Delphius Va camino a la fama
Hola Stanley,
Te agradezco que te pusieras en contacto conmigo por MP (Mensaje Privado) para agradecerme que te fui de ayuda.
Lo que creo conveniente hacerte notar es que aqui preferimos que tus dudas estén a disposición de todos. Tratamos de ofrecer ayuda en forma desinteresada y para el bien de toda la comunidad y no por mensajes privados o "en linea". Ya que de esa manera el conocimiento queda en poder de pocos.
No es una reprimenda, sino una aclaración.

Con respecto a tu duda, básicamente la estructura de una unit es como sigue:

Código Delphi [-]
unit UEjemplo;

interface
{Aqui declaro el cuerpo y la estructura. Todo en forma declarativa,
y no en forma "procedimental". Es decir que en esta sección no se encuentra
el código sino la declaración.
La sección interface sirve para hacer público el comportamiento de la unidad.
Es decir que lo declarado aquí será visto desde "afuera"}

{En este ejemplo desde cualquier otra unidad que haga uso de ésta (UEjemplo) se
podrá ver:
 * UNA_CONSTATE
 * TArreglo
 * TClase
}

uses
  {Unidades que usa la Unit UEjemplo}
  SysUtils, QDialogs;

const
  UNA_CONSTANTE = 1000;

type
  TArreglo = array[1..UNA_CONSTANTE] of integer;

  {Un ejemplo de clase}
  TClase = class
    {Una clase tiene 4 secciones: private, protected, public, published}
    private
    {Desde afuera de la clase no se puede tener acceso a esta sección. Por
      Tanto FCantidad es privada, solo puede ser empleada desde "adentro"
      de la propia clase}
      FCantidad: integer;
      {Primero se listan las variables y luego las funciones y/o procedimientos}
      procedure SetCantidad(Value: integer);
    public
     {Lo dispuesto en public es visto desde afuera. Cantidad es una propiedad
     y permite cambiar el valor de FCantidad mediante SetCantidad}
      property Cantidad: integer read FCantidad write SetCantidad;
  end;


implementation
{Lo declarado en implementation no es visto desde afuera. Tiene 2 propósitos:
1. Ocultar alguna función o procedimiento
2. Mantener el código}

var unArreglo: TArreglo;

procedure ProcedimientoOculto;
{Este procedimiento está oculto. No puede ser visto desde afuera}
var i: integer;
begin
  for i := 0 to UNA_CONSTANTE do
    unArreglo[i] := i;
end;

procedure Aviso;
begin
  ShowMessage('Se ha disparado la unidad');
end;

{ --- Aqui comienza el cuerpo de la clase ----}
procedure TClase.SetCantidad(Value: integer);
begin
  if Value <> FCantidad
     then FCantidad := Value
     else raise Exception.Create('Cantidad ya tiene dicho valor');
end;

initialization
{Esta sección es opcional. Y se usa para que cuando se "inicie" esta unidad
 se disparen algunos procedimientos, funciones, eventos.. etc}
  ProcedimientoOculto;
  Aviso;

end.
Ahora para hacer uso de UEjemplo sólo basta con ir a la unidad correspondiente (no necesariamente dicha unit debe corresponder a algún form) y declararla en la parte uses:

Código Delphi [-]
uses
  UEjemplo;

Como podrás observar... UEjemplo no tiene o no le pertenece a ningún form.
En el ejemplo que te expuse están expuesto los temas más comunes con respecto a tus dudas. Viendo que recién te inicias en Delphi te sugiero una buena lectura: La Cara Oculta de Delphi 4. Al pdf lo vas a ubicar muy fácil con sólo buscarlo en San Google (o el buscador de tu predilección). Concretamente te sugiero empezar a leer:
Capitulo 3. Unidades, proyectos y paquetes. Allí está bien explicado como está estructurada una unit.
Capítulo 6 y 7. Programación Orientada a Objetos. Allí se trata lo referente a clases.

Bueno creo que con eso ya tienes para empezar. Ya sabes, ante problemas:
1. Buscar en los foros.
2. Si la búsqueda no fue satisfactoria:
2.1. Si existe un hilo en que se trate el tema ya sea en forma superficial o algo similar, postear tus dudas allí.
2.2. Si no hay hilo con dicha temática. Iniciar uno.

Recuerda que cuanto mayores detalles puedas aportarnos con respecto a tus inconvenientes más te podremos ser de ayuda.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita