1、子窗口的创建顺序是否决定了子窗口的序号?2、如何根据子窗口的名字或标题去取得该子窗口的序号3、一个子窗口如何判断自己是当前激活的子窗口(此时主窗口可能非激活,即焦点不在本程序)4、主窗口中有一按钮,所有子窗口都含有元件EDIT1,如何让点击按钮时操作当前活动的子窗口中的EDIT1(子窗口数量不定,程序运行过程中随时可能增减)5、在程序中写有一个主窗口mainform和两个子窗口CForm和childform1,如何让程序运行时创建多个和子窗口childform1一模一样的子窗口(子窗口数量不定,不要叫我在程序中先写上一堆一模一样的子窗口备用)6、子窗口CForm中有一按钮,如何让点击该按钮时操作其它子窗口(子窗口数量、创建次序不一,窗口名称不同,都含有元件EDIT)中的一个(编程时未知是哪一个)的EDIT元件。谢谢,不知哪位高手能帮忙

解决方案 »

  1.   

    1、是的
    2、for i:= 0 to MDIChildCount -1 do
        if self.MDIChildren[i].Caption ='你的标题' then do……
    3、for i:= 0 to MDIChildCount -1 do
         if ActiveMDIChild = MDIChildren[i] then 
            begin
              showmessage(inttostr(i));
              break;
            end;
    4、TYourFormClass(ActiveMDIChild).edit1.text:= 'modify';
    5、假设是TYourFormClass类的对象
    procedure TForm1.Button1Click(Sender: TObject);
    var f:TYourFormClass;
    begin
      f:= TYourFormClass.create(application);
      f.show;
    end;
    6、同上遍历即可(可以使用消息)
      

  2.   

    ActiveMDIChild--当前活动子窗口的一个指针
    eg:
     if activeMDIChild <>nil then
       activeMDIChild.Close;for i:= MDIChildCount -1 downto 0 do
      MDIChildren[i].Edit1.text:='example';6.要在一个子窗口中操作其他子窗口中的控件,只能通过此子窗口的父(parent)窗口来调用.
      

  3.   

    1。对于程序而言,都是form。只要create他,就能用它。
    2。每一个form都有一个name。根据name就可以判断form的状态:
       如判断是否被创建:
       if application.findform('form1')=nil then ...
    3.在uses中引用其他form,即可对该窗体进行操作。
      

  4.   

    to fengjn(小枫) 第3个答案不行呀,这样只知道活动窗口的ID,并无发知道自己是否活动的子窗口,除非子窗口知道自己的ID,这个怎么得到呢?第四个问题我没说清楚,难点在于我的子窗口并非一类,名字也各不相同,只是他们的共同点都是含有该控件(有且只有一个,而且同名)而且都含有一个同名的过程(过程是不同的)。要解决的就是用主窗口的一个事件去控制当前活动的子窗口中的那个控件、运行那个过程。
    我曾试过把子窗口的名字作为变量,用下面的步骤:
    在主窗口的一个事件中:
    首先得到当前活动子窗口的名字
    用子窗口的名字付给一个变量
    最后用 变量.控件.属性 的写法去实现,但是编译不出来,因为这个变量不知道该怎样设置 xiaoyupzy(pzypzy的方法好像可行:for i:= MDIChildCount -1 downto 0 do
      MDIChildren[i].Edit1.text:='example';假如子窗口同名的过程都叫gogo的话,是否可这样写ActiveMDIChild.gogo;
    ActiveMDIChild.edit1.text:='ok';
      

  5.   

    假如子窗口同名的过程都叫gogo的话,是否可这样写ActiveMDIChild.gogo;
    ActiveMDIChild.edit1.text:='ok';错的
      

  6.   

    for i:= MDIChildCount -1 downto 0 do
      MDIChildren[i].Edit1.text:='example';可以完全实现你想要的目的,
      

  7.   

    5.用动态创建
        formi:=Tmainform.create(self);
        formi.free;
      

  8.   

    Child := TMDIChild.Create(Application);
      Child.Caption := Name;
      if FileExists(Name) then Child.Memo1.Lines.LoadFromFile(Name);