1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
//=========== Frame
type
TFrame3 = class(TFrame)
private
FOnDone: TNotifyEvent;
public
property OnDone: TNotifyEvent read FOnDone write FOnDone;
end;
procedure TFrame3.Button2Click(Sender: TObject);
begin
if Assigned(FOnDone) then begin
FOnDone(Self);
end;
end;
//=========== Form
const
APPWM_FREE_FRAME = WM_APP + 100;
type
TForm1 = class(TForm)
private
procedure FrameIsDone(Sender: TObject);
procedure AppWmFreeFrame(var Message: TMessage); message
APPWM_FREE_FRAME;
end;
implementation
var
Frame3 : TFrame3;
procedure TForm1.AppWmFreeFrame(var Message: TMessage);
begin
TFrame(Message.LParam).Free;
end;
procedure TForm1.FrameIsDone(Sender: TObject);
begin
if Sender is TFrame3 then begin
//E2010 Incompatible types: 'Integer' and 'TFrame3'
PostMessage(Handle, APPWM_FREE_FRAME, 0, Frame3);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Frame3 : TFrame3;
begin
Frame3 := TFrame3.Create(nil);
Frame3.Align := alClient;
Frame3.Parent := Self;
Frame3.OnDone := FrameIsDone;
Frame3.Visible := True;
end; |
Partager