如何Form的OnClose事件终止?

程序x人生 2003-07-21 10:36:33
是令Action:=???? 吗?
procedure TfrmAsk.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if m_bModified then
begin
if MessageBox(Handle,'记录有所改变,是否保存改动?','信息',MB_YESNO or MB_ICONWARNING)=IDYES then
begin
Action:=???;
ADOTable1.Edit;
DataSetPost1Execute(nil);//保存
Action:=???;//保存成功则关掉程序
end;
end;
ADOTable1.Close;
Q_Item.Close;
end;
...全文
45 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
李_军 2003-07-21
  • 打赏
  • 举报
回复
你这种代码放在FormCloseQuery事件中好了
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if m_bModified then
begin
if MessageBox(Handle,'记录有所改变,是否保存改动?','信息',MB_YESNO or MB_ICONWARNING)=IDYES then
begin
ADOTable1.Edit;
DataSetPost1Execute(nil);//保存
CanClose := True;
end;
end;
ADOTable1.Close;
Q_Item.Close;
end;
end;
Chen_ZhongHua 2003-07-21
  • 打赏
  • 举报
回复
我觉得这样是比较好得,安全:

比如我需要执行一个窗口功能:
function DoSomething:boolean;
begin
with TFormFunc.Create(Application) do
try
...
Result:=ShowModal=mrOK; //比较适用与对话框
finally
Free; //窗体肯定会被释放,不需要再在OnClose事件中写什么代码了
end;
end;

代码很简单,也直接
errorkiss 2003-07-21
  • 打赏
  • 举报
回复
up
older 2003-07-21
  • 打赏
  • 举报
回复
如果用show显示,则可以用Action := caFree; 关闭,如果是showModal,不关闭用abort终止执行
Chen_ZhongHua 2003-07-21
  • 打赏
  • 举报
回复
Action是事件传出来的一个变量,对此变量赋值就是告诉对象你对OnClose事件将要做出什么样的反映,
Action:=caFree;//表示释放窗体,窗体没了,但也得执行完此事件过程代码
Action:=caHide;//表示隐含窗体,但不释放,下次只需对此窗体对象进行Show方法即可显示窗体
Action:=caNone;//表示不关闭窗体
... //看帮助吧

通俗一点讲就是窗体通过OnClose事件像你要了个变量值Action
loh 2003-07-21
  • 打赏
  • 举报
回复
你可以在Onclosequery事什中设置,是否退出?
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
result :smallint;
begin
result:=Application.Messagebox('确定退出吗?','退出提示:',MB_OKcancel+MB_ICONINFORMATION);
case result of
IDOK: canclose:=true; //if press OK关闭程序
IDCancel:canclose:=false;//if press cancel 不关闭
end;
end;
爱编程的老五 2003-07-21
  • 打赏
  • 举报
回复
关掉界面:Action:=caFree,不关:Action:=caNone;

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧