Bu yöntem destroy edilmiş bir nesnenin özelliğine erişmediği için daha güvenli bir yol olabilir.
unit UnitBirincil;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TfrmBirinci = class(TForm)
Label1: TLabel;
btnShowIkinciForm: TButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnShowIkinciFormClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
procedure setMsg();
{ Public declarations }
end;
var
frmBirinci: TfrmBirinci;
implementation
uses UnitIkincil;
{$R *.dfm}
procedure TfrmBirinci.btnShowIkinciFormClick(Sender: TObject);
var
instanceIkinciForm:TfrmIkinci;
begin
instanceIkinciForm := TfrmIkinci.Create(nil);
instanceIkinciForm.pFrmBirinci := self;
instanceIkinciForm.Show;
end;
procedure TfrmBirinci.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TfrmBirinci.FormDestroy(Sender: TObject);
var
I: Integer;
begin
for I := 0 to Screen.FormCount - 1 do
begin
if (Screen.Forms[i] is TfrmIkinci) then
if TfrmIkinci(Screen.Forms[i]).pFrmBirinci = self then
TfrmIkinci(Screen.Forms[i]).pFrmBirinci := nil;
end;
end;
procedure TfrmBirinci.setMsg;
begin
Caption := DateTimeToStr(now);
end;
end.
unit UnitIkincil;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,UnitBirincil;
type
TfrmIkinci = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
pFrmBirinci : Pointer;
{ Public declarations }
end;
var
frmIkinci: TfrmIkinci;
implementation
{$R *.dfm}
procedure TfrmIkinci.Button1Click(Sender: TObject);
begin
close
end;
procedure TfrmIkinci.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action := caFree;
end;
procedure TfrmIkinci.FormDestroy(Sender: TObject);
begin
if (Assigned(pFrmBirinci)) and (pFrmBirinci <> nil) then
begin
TfrmBirinci(pFrmBirinci).setMsg;
end;
end;
end.