是的,我用了下面的代码: procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin if MessageDlg('还没有完成工程信息输入,是否取消?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin Action := caFree end else Action := caNone; end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin if MessageDlg('还没有完成工程信息输入,是否取消?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then Action := caFree; end; //这样就行了吧
如果一个窗体Free了,就不能再使用了,要是你还想用,关闭它就行如果你的窗体不是动态创建,可以把你的代码中的改为:procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin if MessageDlg('还没有完成工程信息输入,是否取消?', mtConfirmation, [mbYes, mbNo], 0) <> mrYes then Action := caNone; end;
如果是这样,在你的子窗体Onclose事件里写上 action:=Cafree;
如果是普通的窗体
当你释放窗体的时候
比如
Try
FORM2.SHOWMODEL;
FINALLY
FORM2.FREE;
FORM2:=NIL;//这句话保证窗体的指针为空
END
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if MessageDlg('还没有完成工程信息输入,是否取消?', mtConfirmation,
[mbYes, mbNo], 0) = mrYes then
begin
Action := caFree
end
else
Action := caNone;
end;
begin
if MessageDlg('还没有完成工程信息输入,是否取消?', mtConfirmation,
[mbYes, mbNo], 0) = mrYes then
Action := caFree;
end;
//这样就行了吧
begin
if MessageDlg('还没有完成工程信息输入,是否取消?', mtConfirmation,
[mbYes, mbNo], 0) <> mrYes then
Action := caNone;
end;