delphi开发过程中有多个不同功能的模块,但每个功能模块之间可以互相调用(我的这些话说的可能不清楚),举例来说,
   有一个主窗体main ,上有A和B两个按钮,A打开frma,B打开frmb,frma和frmb功能上可能没什么联系,但在frma上有按钮可以直接打开frmb,frmb打开后有可以直接通过frmb上的按钮直接打开frma(关系有点绕),大家都是怎么处理这种关系的?
     我delphi新丁是也,反正有点晕。我想这可能是oop的思想,我不知道该怎么做,大家帮帮忙,在此小弟先谢过各位了!

解决方案 »

  1.   

    简单!
    在Main上引用frma的Unit和frmb的Unit,然后调用frma.show和frmb.show;
    在frma上引用frmb的Unit,然后调用frmb.show;
    在frmb上引用frma的Unit,然后调用frma.show;==================================================================
    不过要在程序的实现部分引用对方的模块,否则程序会报错(循环调用!)
      

  2.   

    继承吧,很简单的
    A继承b就可以了
    Buttonb: TButton;
    Buttona: TButtonb;
      

  3.   


    在frma的implementation
    uses frmb;在frmb的implementation
    uses frma;
      

  4.   

    添加相应的事件就可以了,在相应的按钮中写相相应的Show就行了!
      

  5.   

    这个问题或许是我没说清楚,大家的回答都很好,我在实际中遇到的问题可能是有20个form,其中有一个是main,main打开frma用的是“frma=Tfrma.create(nil);frma.showmodal;frma.free”,main打开frmb同理。
       main上打开frma,再frma打开frmb时,frma必须要隐藏起来不显示(这是一个条件),所以在frma中写上:frmb.show; frma.hide;  在frmb上打开其frmx他操作时可能都要怎么写,这是其一。
       其二,从frma打开frmb后,如果这时frmb关闭,“frmb.close”,再关闭main 看样子程序是关闭了,其实,在任务管理器中还有frma的进程存在。所以我在frmb的关闭按钮中这样写“frmb.close;frma.close”;运行一遍,ok,程序没问题了,很正常。but,问题也来了,
      因为我有很多的form,frmb可以打开frmc,frmc打开frmd.......等等等等,而且我还要再最后一个frmx中的关闭按钮中写上“close;frmx-1.close......frmb.close;frma.close;”很烦吧?更糟的是frmc还可能随意的调用frma,frmd,frmx,到时后根本不知道要关闭谁了,即使可以用条件来判断该关闭谁,但也太繁了一点,所以这样做程序绝对不行。这样的程序不是一个树型结构,而是一个网型的结构。
      这就是我的问题,大家仔细试试就知道了,我不知道这回我说清楚了没有。
      这个东东烦了我很久了,我有想过用form.Destroy 但使用的时候还是困难重重。
      对于继承的使用,我还不会,我不知道是不是可行,还请menggirl多多指教。
      

  6.   

    主窗体关闭了,应用程序就关闭了呀。或者可以维护一个窗体列表的数组,每次窗体创建时都将新窗体指针添加到该数组中。
    要关闭时,用一个循环,全部free。
      

  7.   

    还漏了一个:
    如: frmAbc1: TfrmAbc;
    创建时这样做: frmAbc1 := TfrmAbc.Create(Application);
    这样,当应用程序结束时,自动会释放frmAbc1
      

  8.   

    继承很简单
    在你新建立窗体的时候,可看到你的工程名字那一栏,选择你要继承的窗体来新创建FORM,你自己仔细看看,知道你是新人,我说的你可能不太懂
      

  9.   

    在frma的implementation
    uses frmb;在frmb的implementation
    uses frma;
      

  10.   

    建一个公用单元,在里面定义一个数组存放这些tforma、tformb类,再写个过程处理显示新form,接收两个参数,一个是要显示的tform类编号(数组下标),一个是要关闭的form实例本身。这样那些forma、formb、formc等等单元就只需引用这个公用单元,代码不会那么乱。至于这些form的释放问题,在那个公用过程中,建立每个新form时也将form指针存储在另一个数组(这并非必要,你建立的每个窗体实例其实都会存储在appliction对象中。),再写个过程根据这个数组关闭窗体。或者,如果不需要,每次建立新form时直接释放原显示的那个。