Ver Mensaje Individual
  #5  
Antiguo 23-01-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Tal vez estás intentando llamar a un método de una clase "estática" que no es tal. Es decir, en lugar de algo como esto:

Código Delphi [-]
Form2.Metodo();

... suponiendo que "Form2" es una variable que guarda una instancia de "TForm2" (por ejemplo) y que es "correcto", puedes estar codificando algo como:

Código Delphi [-]
TForm2.Metodo();

... directamente, lo que no sería válido, a no ser que "TForm2" fuera una clase "estática", es decir, que no requiere de instanciación alguna. Pero, esto último no es lo común, mucho menos en el caso de clases "formularios".

En todo caso no vas por mal camino (en mi opinión) si te decides a utilizar funciones, procedimientos o métodos, que no sean propiamente eventos, porque un evento no debería ser llamado por ti.

El ejemplo del "onclick" es bastante claro: el evento debería lanzarse cuando se hace clic en cierto lugar y no de otro modo, puesto que entonces se están confundiendo las cosas. Supongamos algo de código:

Código Delphi [-]
Unit Form1;

interface

uses
  Forms {...};

type
  TForm1 = class(TForm)
  public
    procedure Button1Click(Sender: TObject);
  end;

implementation

{TForm1}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Self.Caption := 'ClubDelphi';  
end;

end.

Si quieres cambiar el "Caption" del formulario a "ClubDelphi", lo suyo no es que llames al evento "Click" del botón que hace esa tarea, sino, plantearte el asunto más o menos de este otro modo:

Código Delphi [-]
Unit Form1;

interface

uses
  Forms {...};

type
  TForm1 = class(TForm)
  public
    procedure Button1Click(Sender: TObject);
    procedure CambiaCaption(newCaption: string);
  end;

implementation

{TForm1}

procedure TForm1.CambiaCaption(newCaption: string);
begin
  Self.Caption := newCaption;  
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Self.CambiaCaption('ClubDelphi');
end;

end.

Ahora en el evento haces uso de un método para hacer lo que quieres, un método que no es un evento, y que forma parte también, en este caso, de la clase "TForm1". Pues bien, si ahora quisieras cambiar el "Caption" del formulario desde otro lugar, no usarías el evento "Onclick" del botón de marras, sino el método que sirve, precisamente, para lo que quieres hacer, y que puedes usar en donde mejor te parezca: sea en el evento "Onclick" de un botón, o desde cualquier otro sitio.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita