我软件关闭时候,会提示用户是否关闭,结果用户关闭win时候也弹出来提示,很麻烦(50分)

  • 主题发起人 主题发起人 Gec
  • 开始时间 开始时间
G

Gec

Unregistered / Unconfirmed
GUEST, unregistred user!
有没有办法解决这个捆饶我的问题?
 
不是应该的吗?
Delphi如果没有保存退出会提示,关闭Windows的时候也会提示。
 
问题是我不需要任何保存啊
 
那你关闭的时候为什么要给提示?
你可以设置需要保存的时候给提示,其他时候不给提示呀。

还有,如果你要在系统关闭的时候不给提示,估计就需要截获消息了,是WM_QUERYENDSESSION吧。
 
WM_QUERYENDSESSION在form1.closequery事件后面啊
我是在closequery里让用户选择是否关闭的
它的顺序比WM_QUERYENDSESSION靠前
 
在Form的Destory里面写事件呢?
 
用如下代码就ok了
procedure Tzjm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if Application.MessageBox('是否真的要退出系统?','提示',MB_OKcancel+MB_IconInformation)=mrcancel then
BEGIN
canclose:=false;
END;
end;
 
添加个布尔变量吧,通过条件修改变量的值,再通过变量判断需不需要弹出对话框
 
设个Boolean变量,在Form的OnClose事件里写退出前的提示代码,
截获到WM_QUERYENDSESSION消息后设全局变量为False

private
{ Private declarations }
procedure WMQUERYENDSESSION(var Msg: TWMQUERYENDSESSION); message WM_QUERYENDSESSION;
public
{ Public declarations }
end;

var
Form1 : TForm1;

implementation

{$R *.DFM}
var
IsShow : Boolean = True;


procedure TForm1.WMQUERYENDSESSION(var Msg: TWMQUERYENDSESSION);
begin
IsShow := False;
inherited ;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Application.MessageBox('是否退出!', '提示', mb_yesno + mb_iconquestion) = mrNo then
Action:=caNone;
end;
 
接受答案就给分啊
 
后退
顶部