[求助]一个小问题

settingsun 2002-07-05 09:20:27
我用一个panel做为模板显示窗体,例如其中 一个(举个例子)

if (not Assigned(form2)) then
application.CreateForm(tform2,form2);
form2.Dock(panel,BoundsRect);
form2.Show;


我想关闭当前的窗口
for i:=0 to panel.DockClientCount -1 do
begin
if (panel.DockClients[i] as Tform).Showing then
begin
(panel.DockClients[i] as Tform).Close ;
end;

为什么关闭不了(没有反应),什么地方有问题,望指教。

...全文
36 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ruthfox 2002-07-05
  • 打赏
  • 举报
回复
在TForm2的OnClose中加入
Action := caFree;
settingsun 2002-07-05
  • 打赏
  • 举报
回复
还 有人回答吗
settingsun 2002-07-05
  • 打赏
  • 举报
回复
完了,还是没有反应,我照搬你的代码,它根本不执行循环中的代码。
yansea 2002-07-05
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
begin
if (not Assigned(form2)) then
application.CreateForm(tform2,form2);
form2.Dock(panel1,BoundsRect);
form2.Show;

end;

procedure TForm1.Button2Click(Sender: TObject);
var i : integer;
begin
for i:=0 to panel1.DockClientCount -1 do
begin
if (panel1.DockClients[i] as Tform).Showing then
begin
(panel1.DockClients[i] as Tform).Close ;
end;
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
if (not Assigned(form3)) then
application.CreateForm(tform3,form3);
form3.Dock(panel1,BoundsRect);
form3.Show;
end;
//你看啊,我就是这样的
settingsun 2002-07-05
  • 打赏
  • 举报
回复
那我怎么不行啊,我就写了上面的几行代码测试,还是不行,for循环里面的代码根本没有执行就跳过了。什么原因。
yansea 2002-07-05
  • 打赏
  • 举报
回复
是其他什么地方的问题吧,我按照你的方法写,没有问题啊~~蛮好使的;
settingsun 2002-07-05
  • 打赏
  • 举报
回复
真是太奇怪了,我加了,还是不行,在运行的过程中,panel1.DockClientCount的值始终为-1。
yansea 2002-07-05
  • 打赏
  • 举报
回复
不可能吧,还不好使吗??
哦“在TForm2的OnClose中加入Action := caFree;”这个我可没有啊;

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧