Hola Delphius, he seguido tus indicaciones pero creo que algo me falla.
Tengo esto:
Unit1.pas (mi formulario)
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, MiUnit;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
MiClase: cMiClase;
procedure MiRutina(Cadena: string);
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
MiClase := cMiClase.Create;
MiClase.OnCambiaCadenaEvent := MiRutina;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
MiClase.Cadena := 'Hola, mira como cambio';
end;
procedure TForm1.MiRutina(Cadena: string);
begin
Edit1.Text := Cadena;
end;
end.
MiUnit.pas
Código Delphi
[-]
unit MiUnit;
interface
type
TCambiaCadenaEvent = procedure (Cadena: string) of object;
cMiClase = class
private
FCadena: string;
FOnCambiaCadenaEvent: TCambiaCadenaEvent;
procedure SetCadena(Value: string);
procedure SetOnCambiaCadenaEvent(Value: TCambiaCadenaEvent);
procedure EventoCambiarCadena(Cadena: string);
public
constructor Create;
property Cadena: string read FCadena
write SetCadena;
property OnCambiaCadenaEvent: TCambiaCadenaEvent read FOnCambiaCadenaEvent
write SetOnCambiaCadenaEvent;
end;
implementation
uses Dialogs;
constructor cMiClase.Create;
begin
FOnCambiaCadenaEvent := EventoCambiarCadena;
end;
procedure cMiClase.SetCadena(Value: string);
begin
if Value <> FCadena then
begin
FCadena := Value;
if Assigned(FOnCambiaCadenaEvent) then FOnCambiaCadenaEvent(Value); end;
end;
procedure cMiClase.SetOnCambiaCadenaEvent(Value: TCambiaCadenaEvent);
begin
FOnCambiaCadenaEvent := Value;
end;
procedure cMiClase.EventoCambiarCadena(Cadena: string);
begin
ShowMessage(Cadena); end;
end.
Saludos.