Ver Mensaje Individual
  #2  
Antiguo 06-12-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Reputación: 23
maeyanes Va por buen camino
Para definir eventos "personalizados":

Código Delphi [-]
// Evento creado por el usuario:
TMyEvent = procedure(Sender: TObject; var Recibido: Boolean) of object;

TMyClass = class(TObject)
private
  // Campo para guardar la referencia al procedimiento del evento
  FOnMyEvent: TMyEvent;
protegido
  // Método que dispara el evento:
  procedure DoMyEvent(var Recibido: Boolean);
public
  procedure Recibir;
published
  // Evento
  property OnMyEvent: TMyEvent
    read FOnMyEvent
    write FOnMyEvent;
end;

implementation

procedure TMyClass.DoMyEvent(var Recibido: Boolean);
begin
  if Assigned(FOnMyEvent) then
    FOnMyEvent(Self, Recibido)
end;

procedure TMyClass.Recibir;
var
  Recibido: Boolean;

begin
  // Código para recibir...
  DoMyEvent(Recibido);
  if not Recibido then
    raise Exception.Create('No se recibió')
end;

Luego en donde quieras usar tu clase nueva:

Código Delphi [-]
TMyForm = class(TForm)
private
  FMyClass: TMyClass;

  procedure Recibir(Sender: TObject; var Recibido: Boolean);
public
  procedure FormCreate(Sender: TObject);
end;

implementation

procedure TMyForm.FormCreate(Sender: TObject);
begin
  FMyClass := TMyClass.Create;
  FMyClass.OnMyEvent := Recibir;
  // etc, etc, etc...
end;

procedure TMyForm.Recibir(Sender: TObject; var Recibido: Boolean);
begin
  // Haces cualquier cosa y cambias el valor de Recibido
  Recibido := False
end;

Espero que sea esto lo que estabas buscando...



Saludos...
Responder Con Cita