Form之间传递参数一般都用全局变量,如果你不想用全局变量,可以借助中间手段比如使用记录文件等。第二个问题就如你所言,通常是这样。不过如果窗体比较多,不赞同在工程启动时就创建所有子窗体,而是在需要显示时才创建并显示子窗体。

解决方案 »

  1.   

    可以在窗体的Public部分设置一个变量,那样窗体调用前就可以设置这些参数了,
    例如:
    type
      tform1=class(tform)
        ...
        public
           Para1:integer;
           Para2:string;
        private
           
      end;var
       form1:tform1;....
       form1.Para1:=10;
       Form1.Para2:='Test For Para';
       form1.show
    .....
      

  2.   

    举个例子,有窗体form1,form2,form3......如果在form[i]之间相互调用参数,可以在被调用的窗体中声明一个public型的方法,通过这个方法,你可以任意的访问此窗体的所有参数,只要你在此方法中写入相应的处理过程,其实这个方法就相当于一个这个窗体的对外接口,通过他你可以访问到这个窗体的所有参数,而不必在用到此参数的窗体的uses 中声明被调用的窗体。
    such :
    form1:
    private
       paraX,paraY:string;
    .....
    public
      procedure offerInfOfSelf(var para1,para2:string);
    .....
    procedure Tform1.offerInfOfSelf(var para1,para2:string)
      begin
        para1:=paraX;
        para2:=paraY;
      end;
    form2
     .....
      procedure Tform2.YouNeedproc(.....)
      var str1,str2:string;
      begin
        ...
         form1.offerInfOfSelf(str1,str2);{这时已经吧form1的两个参数取了回来,而不必再from2 的uses下声明 form}
        ...
      end;
    以此类推,哪个form中的参数可能被别的窗体用到就在此窗体中声明这样的函数或过程就可以了
    至于打开的同时开启别的窗体,你可以在将要开启的窗体中写相应的过程,这个过程就是打开自己的窗体(pulic型),然后在将关闭的窗体中的.close 事件中调用这个过程就可以了。
      

  3.   

    只要窗体在不同的单元中,就得互相引用USES。
    通过互相引用传递变量,这是编程基本的方法。
      

  4.   

    sorry ,灌灌水,别当真:)
    同意jiker的看法:))
    呵呵
      

  5.   

    同意jiker的看法,再加一句:
    uses放在
    implementation之后。