我的作业中需要用两个窗体:MainForm主窗体和NodeForm新建节点窗体(MainForm主窗体完成主要逻辑操作,NodeForm新建节点窗体获取用户输入)
  点击MainForm中的按钮打开NodeForm,然后当用户点击NodeForm窗体的一个按纽(OK)时,MainForm从NodeForm窗体的编辑框中获取用户输入的数据,NodeForm窗体关闭;
  应该在MainForm中use NodeForm,而从NodeForm中返回数据又可能需要use MainForm,这样就产生循环引用的问题,这个如何解决呀,谢谢大家了!

解决方案 »

  1.   

    implementationuses
    //这里写你要引用的单元。
      

  2.   

    //在NodeForm单元里定义一个打开窗体的函数
    Unit NodeForm...
    private
      bReturn: Boolean; var
      ...
      function OpenNodeFrm(var Text:string):Boolean;implementationfunction OpenNodeFrm(var Text:string):Boolean;
    var
      aNodeFrm: TNodeFrom;
    begin
      try
        aNodeFrm := TNodeFrom.Create(nil);
        aNodeFrm.ShowModal;
        aNodeFrm.Edit1.Text := Text;
        Result := aNodeFrm.bReturn; 
      finally
        aNodeFrm.Free;
        aNodeFrm := nil;
      end;
    end;...
     
    //在MainForm单元里引用这个函数就可以了
    Unit MainFormuse
      NodeForm;...procedure TMainFrom.Button1Click(Sender: TObject);
    begin
      ShowMessage(OpenNodeFrm(''));
    end;
      

  3.   

    错了,不好意识procedure TMainFrom.Button1Click(Sender: TObject);
    var
      mTxt:string;
    begin
      mTxt := '';
      if OpenNodeFrm(mTxt)) then
       ShowMessage(mTxt);
    end;
      

  4.   

    哎,有点漫不经心,还有个地方写错了,不好意识...Unit NodeForm里这句
     aNodeFrm.Edit1.Text := Text;
    改成
     Text := aNodeFrm.Edit1.Text;