Delphi编程问题,MB_YESNO
代码如下procedureTMainForm.FormClose(Sender:TObject;varAction:TCloseAction);beginifmessag...
代码如下procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if messagebox(0, '真的要退出本系统吗?', '确认', MB_YESNO + MB_ICONQUESTION) =
IDYES then
begin
DM.UserLogin.Locate('用户名称', Auser.UserName, []);
// 定位当前用户在数据库中的位置
//记录用户的退出时间
DecodeDate(now, year, month, day);
DecodeTime(now, Hour, Min, Sec, MSec);
DM.UserLogin.Edit;
//记录退出日期
DM.UserLogin.FieldByName('退出日期').AsString := IntToStr(year) + '年' +
IntToStr(month) + '月' + IntToStr(day) + '日';
DM.UserLogin.FieldByName('退出时间').AsString := IntToStr(Hour) + '时' +
IntToStr(Min) + '分' + IntToStr(Sec) + '秒';
DM.UserLogin.Post;
Application.Terminate;
end;
end;
为什么我点了否,仍然会退出?要怎么样才能实现点否的时候,不进行操作?
一楼的,procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
提示出错 展开
begin
if messagebox(0, '真的要退出本系统吗?', '确认', MB_YESNO + MB_ICONQUESTION) =
IDYES then
begin
DM.UserLogin.Locate('用户名称', Auser.UserName, []);
// 定位当前用户在数据库中的位置
//记录用户的退出时间
DecodeDate(now, year, month, day);
DecodeTime(now, Hour, Min, Sec, MSec);
DM.UserLogin.Edit;
//记录退出日期
DM.UserLogin.FieldByName('退出日期').AsString := IntToStr(year) + '年' +
IntToStr(month) + '月' + IntToStr(day) + '日';
DM.UserLogin.FieldByName('退出时间').AsString := IntToStr(Hour) + '时' +
IntToStr(Min) + '分' + IntToStr(Sec) + '秒';
DM.UserLogin.Post;
Application.Terminate;
end;
end;
为什么我点了否,仍然会退出?要怎么样才能实现点否的时候,不进行操作?
一楼的,procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
提示出错 展开
5个回答
展开全部
不要把代码写在窗体的Close事件里,写在CloseQuery事件里,该事件有个CanClose,当你不想退出时,只要在最后写上CanClose:=False,如果你同意退出,就CanClose:=True
procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if messagebox(0, '真的要退出本系统吗?', '确认', MB_YESNO + MB_ICONQUESTION) =
IDYES then
begin
DM.UserLogin.Locate('用户名称', Auser.UserName, []);
// 定位当前用户在数据库中的位置
//记录用户的退出时间
DecodeDate(now, year, month, day);
DecodeTime(now, Hour, Min, Sec, MSec);
DM.UserLogin.Edit;
//记录退出日期
DM.UserLogin.FieldByName('退出日期').AsString := IntToStr(year) + '年' +
IntToStr(month) + '月' + IntToStr(day) + '日';
DM.UserLogin.FieldByName('退出时间').AsString := IntToStr(Hour) + '时' +
IntToStr(Min) + '分' + IntToStr(Sec) + '秒';
DM.UserLogin.Post;
CanColse:=true; //////就是这里改一下,下面这行加一句就可以了
end else CanCLose:=False;
end;
窗体事件里面改啊,不要写在OnClose里,双击OnCloseQuery,代码写在这里面啊
procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if messagebox(0, '真的要退出本系统吗?', '确认', MB_YESNO + MB_ICONQUESTION) =
IDYES then
begin
DM.UserLogin.Locate('用户名称', Auser.UserName, []);
// 定位当前用户在数据库中的位置
//记录用户的退出时间
DecodeDate(now, year, month, day);
DecodeTime(now, Hour, Min, Sec, MSec);
DM.UserLogin.Edit;
//记录退出日期
DM.UserLogin.FieldByName('退出日期').AsString := IntToStr(year) + '年' +
IntToStr(month) + '月' + IntToStr(day) + '日';
DM.UserLogin.FieldByName('退出时间').AsString := IntToStr(Hour) + '时' +
IntToStr(Min) + '分' + IntToStr(Sec) + '秒';
DM.UserLogin.Post;
CanColse:=true; //////就是这里改一下,下面这行加一句就可以了
end else CanCLose:=False;
end;
窗体事件里面改啊,不要写在OnClose里,双击OnCloseQuery,代码写在这里面啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
窗体事件里,把onclose改成onclosequery,然后在你这段代码的末尾改成
DM.UserLogin.Post;
CanColse:=true; //////就是这里改一下,下面这行加一句就可以了
end else CanCLose:=False;
end;
DM.UserLogin.Post;
CanColse:=true; //////就是这里改一下,下面这行加一句就可以了
end else CanCLose:=False;
end;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不要把代码写在窗体的Close事件里,写在CloseQuery事件里,该事件有个CanClose,当你不想退出时,只要在最后写上CanClose:=False,如果你同意退出,就CanClose:=True
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实写在BUTTONCLICK事件里就可以!!
if messagedlg('确定要退出吗?!',mtconfirmation,[mbYes,mbNo],0)=mrYes then
这样写也可以的 !!
if messagedlg('确定要退出吗?!',mtconfirmation,[mbYes,mbNo],0)=mrYes then
这样写也可以的 !!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询