VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1092|回复: 7

如何做到点击一个窗口的关闭按钮时只是hide它?

[复制链接]

2

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-3-24 09:00:01 | 显示全部楼层 |阅读模式
如题  一个窗口的HIDE和CLOSE有什么区别呢?
回复

使用道具 举报

2

主题

7

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-7-5 00:45:01 | 显示全部楼层
截取Windows的消息,然后进行处理
回复

使用道具 举报

0

主题

34

帖子

21.00

积分

新手上路

Rank: 1

积分
21.00
发表于 2020-7-5 10:45:01 | 显示全部楼层
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  self.Hide;
  abort;
end;
回复

使用道具 举报

0

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-7-10 23:45:01 | 显示全部楼层
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
    CanClose := false;
    Form1.Hide;
end;
回复

使用道具 举报

0

主题

17

帖子

16.00

积分

新手上路

Rank: 1

积分
16.00
发表于 2020-7-11 11:45:02 | 显示全部楼层
action:=canone;
  hide;
回复

使用道具 举报

0

主题

5

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-7-11 13:30:02 | 显示全部楼层
建立一个全局变量:CloseTrue:Boolean;

在程序中设一个真正的关闭按钮,事件代码为
procedure TForm1.btnCloseClick(sender:TObject);
begin
CloseTrue:=True;
Close;
end;
在窗体的关闭询问事件中
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
    CanClose := CloseTrue;
    Form1.Hide;
end;
回复

使用道具 举报

0

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-7-12 10:15:01 | 显示全部楼层
正常情况下,程序主窗体的close意味着程序的终止
而其它的窗体的close只是hide了
如果要主窗体关闭时隐藏,可以使用上面提到的那个
    CanClose := CloseTrue;
    Form1.Hide;
如果其它窗体想关闭时释放则使用
    action := caFree;
    freeAndNil(Form1);
回复

使用道具 举报

0

主题

53

帖子

29.00

积分

新手上路

Rank: 1

积分
29.00
发表于 2020-7-13 15:30:01 | 显示全部楼层
close是event,hide是method 后者无法加入自己的设置功能,其实两者的差别不大,就像楼上所说,主窗体的close就是关闭窗口,如果是其它窗口hide,close则是差不多的,当然,close中的参数Action也可以为MDI子窗口来服务的,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表