Ver Mensaje Individual
  #7  
Antiguo 16-07-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 27
Delphius Va camino a la fama
Hola Panteon,
¿Eres nuevo en Delphi?

Lo mejor que puedes hacer para ir entendiendo el tema de la estructura de una unit es leer la cara oculta, disponible en el FTP del club.

En forma simple una unit se compone de 5 secciones, 3 de ellas son necesarias, las otras 2 opcionales.

La primera sección es la cabecera y contiene el nombre de la unit. Por ejemplo:

Código Delphi [-]
Unit UPrincipal;

Seguidamente le sigue en orden, la seccion interface. En ella se pone todo lo que será de acceso público a las demás unidades que hagan uso de ella.
Pero he aqui que no va nada de código, por tanto esta sección es a nivel declarativa.

Dentro de esta sección pueden figurar en orden:
uses
constantes
tipos
variables

Un ejemplo es este:

Código Delphi [-]
interface

uses
  Unit1, Unit2; // Esta unit hace uso de las unit 1 y 2.

const
  UNA_CONSTANTE = 3254;

type
  TArray = array[1..UNA_CONSTANTE] of string;

var
  MiArray: TArray;

En el caso de unit para los formularios te encuentras con algo como esto:

Código Delphi [-]
interface

uses
  Windows, .... etc ...;

type
  TForm1 = class(TForm);
  ...
  end;

var
  Form1: TForm1;

luego sigue la sección implementation. Y es aquí donde se encuentra el código. Por tanto todos los métodos, funciones y/o procedimientos que declares en interface deben tener su correspondiente código en implementation. Todo lo que de declare en Implementation es privado: no se da a concer al exterior (a otras unit).
De igual manera, en implementation también podemos tener:
uses
constantes
tipos
variables

La diferencia será que no será vistos desde afuera.

Cuando tu creas un método o evento (por ejemplo la pulsación de un botón) en la sección interface encontrarás algo como esto:
Código Delphi [-]
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

Si te fijas, no hay código alguno. Sólo aparece la declaración del evento.

Y en la sección implementation figura algo como esto:
Código Delphi [-]
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin

end;

Es aquí donde se colocará el código.

El problema tuyo está en que tienes en la sección implementation el "cuerpo" pero en interface no figura la declaración.

Como dice Neftali eso se soluciona borrando toda refencia al evento en cuestión y volviendo a pulsar en el evento OnClic de botón.

Espero que se entienda.

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