怎样在父窗体的菜单控制子窗体? (50分)

  • 主题发起人 主题发起人 gravel
  • 开始时间 开始时间
G

gravel

Unregistered / Unconfirmed
GUEST, unregistred user!
比如我要在子窗体画一条直线。子窗体的名字是什么呢?
 
将子窗体的pas uses到父pas中,
再调用子窗体中的方法。
 
frmMDI.ActiveMDIChild就是当前的child form.
 
用的时候还要类型强制转换一下
TMDIChildForm(MainMDIForm.ActiveMDIChild). ...
 
父窗体、子窗体都是从TForm派生出来的对象,无论是不是MDI Form都一样,所以它
们相互操作实际上就是不同的对象之间(两个对象存在拥有关系)的操作。
Jetideas的办法是可行的。其实,在父窗体的方法中也可以直接访问子窗体的Publish、
Public成员,例如子窗体上的控件等。
 
补充:至于名字嘛,就是子窗体的类名+'.'+要访问的类成员(或类属性)了。例如:
子窗体名为ChildForm,要访问其Canvas属性,就是ChildForm.Canvas。
 
不用强制转换就行.
procedure TForm1.Button1Click(Sender: TObject);
var
ThForm: TForm;
begin
TheForm := Form1.ActiveMDIChild;
TheForm.WindowState := wsMinimized;
end;
 
你们说的我都试过了,但是还是不行,如子窗体的publish声明了
一个过程 breline;
怎样在父窗体调用他。(form1:父窗体
formchild:子窗体)
 
直接使用了:-)
TheForm := Form1.ActiveMDIChild;
theform.breline;
如果form1中添加use:formchild.pas了, 就可以:
formchild.breline;就可以了.
 
(Form1.ActiveMDIChild as TMDIChild).breline;
 
多人接受答案了。
 
后退
顶部