程序启动时所有子窗体默认都创建,主窗体显示菜单中加有MDI窗体的显示,目前想通过点击显示菜单下的菜单来控制子窗体的打开与关闭,程序代码如下:
procedure TForm1.N19Click(Sender: TObject);
begin
if n19.Checked then
begin
n18.Checked:=false;
end
else
begin
winshow(tform6);
n19.Checked:=true;
end;
end;procedure TForm1.winshow(AClass: TComponentClass);
var i:integer;mk:boolean;frm1:tform;
begin
i:=mdichildcount-1;
mk:=true;
while (i>=0) and mk do
begin
if (mdichildren[i] is aclass) then mk:=false
else i:=i-1;
end;
if not mk then mdichildren[i].BringToFront
else
begin
application.CreateForm(aclass,frm1);
frm1.OnShow(nil);
end;
end;procedure TForm6.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
form1.n19.Checked:=false;
end;
现象如下,点击子窗体FORM6中的叉来关闭,再点击N19来打开窗体这没有问题,不会出错,如都通过点击N19来控制打开关闭窗体就会出错,不知是什么原因,请大家帮我看看。。
谢谢了
procedure TForm1.N19Click(Sender: TObject);
begin
if n19.Checked then
begin
n18.Checked:=false;
end
else
begin
winshow(tform6);
n19.Checked:=true;
end;
end;procedure TForm1.winshow(AClass: TComponentClass);
var i:integer;mk:boolean;frm1:tform;
begin
i:=mdichildcount-1;
mk:=true;
while (i>=0) and mk do
begin
if (mdichildren[i] is aclass) then mk:=false
else i:=i-1;
end;
if not mk then mdichildren[i].BringToFront
else
begin
application.CreateForm(aclass,frm1);
frm1.OnShow(nil);
end;
end;procedure TForm6.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
form1.n19.Checked:=false;
end;
现象如下,点击子窗体FORM6中的叉来关闭,再点击N19来打开窗体这没有问题,不会出错,如都通过点击N19来控制打开关闭窗体就会出错,不知是什么原因,请大家帮我看看。。
谢谢了
解决方案 »
- 如何删除OleContainer 右键菜单的功能?
- 如何使停靠窗口和主窗口同时保持活动状态(Floating状态的停靠窗口和标题窗口的标题栏保持选中蓝色)
- 誰有 Crystal Reports 10 VCL
- delphi在打开tquery时报内存错误
- adoQuery使用缓存后没保存到数据库前时怎么判断是否修改了缓冲区数据
- 关于日期计算问题
- Delphi中关于控件拖动的问题
- 宽带在线求显示gif图片控件,版本d6,qq1965788,急,能用的话马上给分
- 可以这样用query吗
- 谁可以把 MessageDlg(sStr, mtInformation, [mbYesToAll, mbYes, mbNo, mbCancel], 0) 修改为中文提示:
- 如何能把居于网内的所有计算机按照拓扑图罗列出来 并现实是否连接上
- 还有oNkeyUp是什么作用
var
i:integer;
Frm1:Tform;
begin
for i:=0 to Form1.MDIChildCount-1 do
if (Form1.MDIChildren[i] is AClass) then
begin
if Not kk then
Form1.MDIChildren[i].Close
else
Form1.MDIChildren[i].BringToFront;
Exit;
end; Application.CreateForm(Aclass,Frm1);end;procedure TForm1.N19Click(Sender: TObject);
begin N19.Checked:=Not N19.Checked;
Winshow(Tform6,N19.Checked);end;procedure TForm6.FormClose(Sender: TObject; var Action: TCloseAction);
beginAction:=caFree;
Form1.N19.Checked:=false;end;
呵呵,谢谢了,问题解决了 送分。。