注册 登录
编程论坛 Delphi论坛

[求助]关于MDI主窗体调用MDI子窗体问题

hlw 发布于 2007-04-10 18:31, 1725 次点击

大家帮忙看下:
procedure Tfjzgl.normaltoimportplanExecute(Sender: TObject);
var
newform:Tfnormaltoimportplan;
i,flag:integer;
begin
flag:=0;
for i:=0 to fjzgl.MDIChildCount do
begin
// 通过对窗体标题判断窗体是否存在
if fjzgl.MDIChildren[i].Caption='普通件转重点件生产计划' then
begin
//如果窗体已存在,则恢复窗体
SendMessage(mdichildren[i].Handle, WM_SYSCOMMAND, SC_restore, 0);
mdichildren[i].show;
mdichildren[i].SetFocus;
mdichildren[i].Enabled:=true;
//标识窗体已存在
flag:=1;
//退出循环
break;
end;
end;
//若窗体不存在,则创建窗体
if flag=0 then
begin
newform:=Tfnormaltoimportplan.Create(application);
newform.Caption:='普通件转重点件生产计划';
end;

if (sender = N20) then
begin
fjzgl.n20.Checked :=true;
fjzgl.n21.Checked :=false;
fjzgl.n22.Checked :=false;
fjzgl.n23.Checked :=false;
fnormaltoimportplan.label22.Caption :=' 铸造';
fnormaltoimportplan.ADOTable1.TableName :='normaltoimportplan-zhuz';
end;
if (sender=N21) then
begin
fjzgl.n21.Checked :=true;
fjzgl.n20.Checked :=false;
fjzgl.n22.Checked :=false;
fjzgl.n23.Checked :=false;
fnormaltoimportplan.Label22.Caption:=' 铆焊';
fnormaltoimportplan.ADOTable1.TableName :='normaltoimportplan-maoh'
;
end;
if (sender=N22) then
begin
fjzgl.n22.Checked :=true;
fjzgl.n21.Checked :=false;
fjzgl.n20.Checked :=false;
fjzgl.n23.Checked :=false;
fnormaltoimportplan.Label22.Caption:='一金工';
fnormaltoimportplan.ADOTable1.TableName :='normaltoimportplan-yijg'
;
end;
if (sender=N23) then
begin
fjzgl.n23.Checked :=true;
fjzgl.n21.Checked :=false;
fjzgl.n22.Checked :=false;
fjzgl.n20.Checked :=false;
fnormaltoimportplan.Label22.Caption:='二金工';
fnormaltoimportplan.ADOTable1.TableName :='normaltoimportplan-erjg';
end;

end;

现在主要问题是:运行后在子窗体没有更改它的labe22的标题,而且明显感觉到只执行了判断子窗体的代码,应该是子窗体没有打开,但用了几种方法都打开子窗体都不行,包括设第三个nform来传递,但无法执行nform:=MDIchild[i].create(self)~~,消去红色的那几个代码,程序就执行的了,不过只是执行MDI主窗体的控件,无法执行MDI子窗体的控件.所以,MDI主窗体如何调用MDI子窗体的控件呢???

13 回复
#2
hlw2007-04-10 19:25
帮帮忙吖,在线等~~~
#3
hlw2007-04-10 22:51
没人懂吗????
#4
hlw2007-04-11 09:41
版主也不会吗??????
#5
liuminghui2007-04-11 10:49

路过的人,帮你顶顶

#6
liuminghui2007-04-11 10:50
你可以发短信给斑竹和高手的,“用户控制面板”里面有的
#7
liuminghui2007-04-11 10:51
不要急  会有高手来的啊
#8
liuminghui2007-04-11 10:52
不要急  会有高手来的啊
#9
liuminghui2007-04-11 10:52

不要急 会有高手来的啊

#10
hlw2007-04-12 18:55
估计没人解决的了,看了大概思路,可能要用到更改窗体主子属性问题,复杂,所以我改在子窗体控制了~~~~不想吊死在这个问题上,只有变通~~~
#11
anthony6342007-04-12 20:10

?虽然不是很明白想表达的意思,我对你的程序大致是理解成你想修改子窗体的组件标题什么的,是不是呢?是的话,你最后怎么不显示它呢?
newform.show,另外不清楚你打算放这个函数那里,但是注意if (sender=N23) then 这些类似的条件句,可能是不会执行的。

#12
hlw2007-04-12 22:14

是通过在MDI主窗体修改MDI子窗体的组件标题,试过用newform.show,但仍不起作用.没有写红色那几个代码时,整个代码是起作用的.所以if (sender=N23) then 没有问题~~但仍谢谢楼上~~~

#13
anthony6342007-04-12 22:40
如果if (sender=N23) then ,是起作用的,那么在最后一个end,那么加上newform.ShowModal应该可以的啊,疑惑,关注ing!
#14
nongen2007-04-13 08:53

Tfnormaltoimportplan的定义是什么?
红色的代码是更改子窗体的控件属性?
fnormaltoimportplan.Label22.Caption:='二金工';这个你有定义fnormaltoimportplan吗?
最好把整段代码发上来瞧瞧,你有很多定义让人不明白。

1