还有一个问题?
为什么在两个子窗口之间不能相互调用?如:
form1是form2,form3的父窗口
form2与form3相互都是用implementation uses连接
用form2创建form3
而form3却不能修改form2中的内容,提示form2=nil这是为什么?

解决方案 »

  1.   

    将uses错开放。看看你的两个子窗体是否都创建了。
    用FindWindow可以得到的。
      

  2.   

    findwindow;
    findwindowex;
    可以得。
      

  3.   

    http://expert.csdn.net/Expert/topic/1603/1603113.xml?temp=.4790918
      

  4.   

    以下是我的例子,Form1 是主窗体,自动建立
    Form2、Form3 禁止自动建立,由程序建立。没有任何问题
    //Unit1 for Form1
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Panel1: TPanel;
        Panel2: TPanel;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
    showmessage('ddl');
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      Form2:=TForm2.Create(nil);
      Form2.Parent:=Panel1;
      Form2.Visible:=True;
      Form2.Align:=alClient;
    end;
    //Unit2 for Form2
    var
      Form2: TForm2;implementationuses Unit3, Unit1;{$R *.dfm}procedure TForm2.FormCreate(Sender: TObject);
    begin
      Form3:=TForm3.Create(nil);
      Form3.Parent:=Form1.Panel2;
      Form3.Visible:=True;
      Form3.Align:=alClient;
    end;procedure TForm2.Button1Click(Sender: TObject);
    begin
    Caption:=Form3.Caption;
    end;
    //Unit3 for Form3
    var
      Form3: TForm3;implementationuses Unit2;{$R *.dfm}procedure TForm3.Button1Click(Sender: TObject);
    begin
      Caption:=Form2.Caption;
    end;
      

  5.   

    我原来是在SDI环境下编的代码,一切都正常,而一转到MDI时就出现了很多莫名其妙的错误,上面提出的两个问题就是其中两个最严重的问题,后来我用sendmessage基本上已经解决了第二个问题。(Delphi 7)