在子MDI上調用Close()
從按鈕內部形式OnClick
同一孩子的事件形式是完全安全。在內部,Close()
觸發OnClose
事件,如果Action
參數設置爲caFree
,則表將調用Release()
本身,這是一個行動遲緩這將釋放從內存表單時,它是安全的這樣做。
下面的代碼工作完全正常,我在Delphi 7:
unit ChildUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TChildForm = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
ChildForm: TChildForm;
implementation
{$R *.dfm}
procedure TChildForm.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TChildForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
end.
如果您呼叫Close()
當得到一個訪問衝突,最可能的罪魁禍首是你在一個無效表指針調用Close()
。
我在onclick上使用以下代碼: 'code procedure Tfrm_input.SpeedButton1Click(Sender:TObject); begin frm_input.Close(); 結束; ' 它給了我一個例外。 –
試試'Self.Close',或者簡單的就是'Close'。 –
@AlianaDonovan顯然你的'frm_input'變量沒有指向一個有效的Form對象,這將佔AV。 –