Ver Mensaje Individual
  #6  
Antiguo 30-01-2009
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
Hasta, incluso funciona si se define dentro de la propia clase la rutina:

Código Delphi [-]
unit UMiClase;

interface

uses Dialogs;

type

  // Mi tipo de evento
  TCambiaCadenaEvent = procedure(Cadena: string) of object;

  TMiClase = class
    private
      FCadena: string;
      // nuestro campo de tipo evento
      FOnCambiaCadenaEvent: TCambiaCadenaEvent;

      // métodos privados
      procedure SetCadena(Value: string);
      procedure SetOnCambiaCadenaEvent(Value: TCambiaCadenaEvent);

      procedure CambiaCadenaRespuesta(Cadena: string);
    public
      constructor Create;
      destructor Destroy; override;
      property Cadena: string read FCadena write SetCadena;
      property OnCambiaCadenaEvent: TCambiaCadenaEvent read FOnCambiaCadenaEvent write SetOnCambiaCadenaEvent;
   end;



implementation

{ TMiClase }

procedure TMiClase.CambiaCadenaRespuesta(Cadena: string);
begin
  ShowMessage(Cadena);
end;

constructor TMiClase.Create;
begin
  inherited Create;
  FOnCambiaCadenaEvent := CambiaCadenaRespuesta;
end;

destructor TMiClase.Destroy;
begin
  FOnCambiaCadenaEvent := nil;
  inherited Destroy;
end;

procedure TMiClase.SetCadena(Value: string);
begin
  if FCadena <> Value
     then begin
            if Assigned(FOnCambiaCadenaEvent)
               then FOnCambiaCadenaEvent(Value);
          end;
end;

procedure TMiClase.SetOnCambiaCadenaEvent(Value: TCambiaCadenaEvent);
begin
  FOnCambiaCadenaEvent := Value;
end;

end.

Y ahora en el create del form no hacemos la asignación:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  FMiClase := TMiClase.Create;
  //FMiClase.OnCambiaCadenaEvent := MiRutina;
end;

Y si no le comentamos la acción notarás que realiza la rutina que defines en tu form.

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