几个MDIChildForm先是最小化。然后将其中一个最大化,再点击最大化这个MDIChildForm的关闭按钮,这个窗体将会关闭。问题是当这个窗体关闭的时候为什么原先最小化的其他几个窗体中,有一个自动最大化了呢?
MDIChildForm是动态创建,关闭事件中代码是 action:=cafree;
Delphi中MDI窗体关闭问题
答案:2 悬赏:80 手机版
解决时间 2021-03-02 01:40
- 提问者网友:雪舞兮
- 2021-03-01 19:57
最佳答案
- 五星知识达人网友:轮獄道
- 2021-03-01 20:17
调用前先调用一下这个函数
procedure TMainForm.CloseFrm;
var
i : integer;
begin
try
for i := 0 to Screen.FormCount - 1 do
begin
if Screen.Forms[i].FormStyle = fsMDIChild then
begin
CloseWindow(Screen.Forms[i].Handle);
Screen.Forms[i].Close;
end;
end;
except
end;
end;
然后每个窗体的close中写
action:=cafree;
和
yourform:=nil;
procedure TMainForm.CloseFrm;
var
i : integer;
begin
try
for i := 0 to Screen.FormCount - 1 do
begin
if Screen.Forms[i].FormStyle = fsMDIChild then
begin
CloseWindow(Screen.Forms[i].Handle);
Screen.Forms[i].Close;
end;
end;
except
end;
end;
然后每个窗体的close中写
action:=cafree;
和
yourform:=nil;
全部回答
- 1楼网友:山河有幸埋战骨
- 2021-03-01 21:19
看你的代码,我的理解是你在 rzpagecontrol 嵌入了窗体,然后再rzpagecontrol的页面切换后,相应的窗体也要激活(即设置焦点setfocus)
问题可能就出在设置焦点上,因为 窗体获得焦点后,窗体上的tabstop=0的twincontrol类控件也将同时获得焦点,lable不属于twincontrol类控件所以没有焦点,而tbutton是属于twincontrol类控件。
在 rzpagecontrol 的 change 事件中,可能rzpagecontrol页面并没有真正切换完成,目标页面还处于隐藏状态,delphi是绝对不能对隐藏页面设置焦点的(这一点我以前碰得过)。
为了证明我的想法是否正确,你可以在窗体中加入一个image控件或其它不能获取焦点的控件,看看是不是正常。
另外,你也可以注释掉这一行再试试:
tform(rzpagecontrol1.activepage.controls[i]).setfocus;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯