当前位置:主页>销售管理软件> 列表

点击右上角关闭按钮后,像迅雷一样最小化 找excel进销存软件

库存管理软件版1楼: 我试过用CANCLOSE和CANONE的方法,结果会影响到系统关机。请教各位最简洁的实现方法。方法最简的朋友得分。

2楼: action:=canone;
application.Minimize; 如网吧管理软件

3楼: 把程序的main form隐藏,在别的除main form外的窗口的onclose里写
action:=cafree;

4楼: procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Application.Minimize;
Action:=caNone;
end;

5楼: 不好意思,表达错了!我是想点关闭时程序会最小化,然而不能影响关机,用caNone可以做到,但是却要物定条件下,比如A=TRUE时,执行关机时,系统会提示是否关机。

防止关机用canclose可以做到,但只要执行messagebox、messagedlg好像canclose就失效了,应该是messagebox得到了application的句柄,系统当然有权关闭messagebox和它的句柄,而同时这也就相当于对application执行了free。

除了改写vcl,哪位高人还有更好的方法!

6楼: 还是没表达清楚

库存管理软件版7楼: 意思就是.
canclose:=false;//可以阻止关机
application.messagebox(...) //加了这个canclose就失效了!


messagedlg(...)//或者加这个也失效
showmessage(...)//连这个也失效

但是又需要用到提示框.........

8楼: 在窗体的 OnCloseQuery 写:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if Messagebox(self.Handle,
''要退出吗?'',
''消息'',MB_YESNO)=idNo then begin
CanClose:=false;
Application.Minimize;
end;
end;

9楼: Application.Minimize;
Action:=caNone;

10楼: procedure TForm1.WMSysCommand(var Msg: TMessage);
var
Pt: TPoint;
begin
if Msg.WParam = SC_CLOSE then
begin
Pt.x := Msg.LParamLo;
Pt.y := Msg.LParamHi;
Pt := ScreenToClient(Pt);
if Pt.y < 0 then exit;
end;
Inherited;
end;

看看可以不?

11楼: 同意crazyman2006,以下是函数的申明
procedure TForm1.WMSysCommand(var Msg: TMessage);message WM_SYSCOMMAND;
还可以处理以下一些消息
SC_CLOSE 关闭
SC_MAXIMIZE (or SC_ZOOM) 最大化
SC_MINIMIZE (or SC_ICON) 最小化
SC_MOVE 移动


SC_RESTORE 还原

12楼: kaida的方法我已经说过不行了。

crazyman2006的方法不可能达到防止关机效果! 如excel进销存软件

13楼: 奇怪,为什么我试的没问题?

库存管理软件版14楼: 已临时解决问题,加用一个form,不知道谁还有更好的办法。
kaida应该是电脑设置的问题!如果你XP设置“不强行关闭不响应程序”就不会关机。


感谢大家的关注!

15楼: 本来就是小菜一叠的问题,请版主以后多思考,然后再提问,对你是有好处的。,。。

16楼: zhbj,假如你认为问题小菜一叠,请给出一个可行的解决方案?这样的口气回答会很让人看不起你的。明白?