我设计了两个FORM,其中FORM1中调用FORM2,并且在初始化时想将参数传递给FORM2,而FORM2在CREATE时能够通过参数选择显示的内容。我是这样设计的:
在FORM2中放置一个public arg: Integer
FORM1是这样调用的:
form2 := tapplication.createform(tform2, form2);
form2.arg := 1;
form2.showmodal;
form2.free;而form2中的create是这样处理的:
if arg=1 then
  ...
else
 ...事实上,运行的结果为arg总是不会为1的,除非我把这段代码放置到form2的show事件中才行,有没有办法能够让FORM在CREATE时就初始化参数呢?

解决方案 »

  1.   

    重载Create事件
    var
      vForm:TForm2;
    begin
      vForm:=TForm2.Create(nil,parame);
      ...
    end;
    大概是这样的。
      

  2.   

    constructor Create(AOwner: TComponent;arg:integer);reintroduce;
    constructor TAnalyseFrm.Create(AOwner: TComponent;arg:integer);
    begin
      inherited Create(AOwner);
      case arg of
      ...
    end;
      

  3.   

    将arg放到Form1中
    在FORM1中放置一个public arg: Integer
    FORM1是这样调用的:
    form1.arg := 1;而form2中的create是这样处理的:
    if form1.arg=1 then
      ...
    else
     ...
      

  4.   

    一般来说
     可在初始化窗体中的public 中申请一个变量
     在初始化窗体后,再传这个变量值
    也可以把调用窗体中show事件与变量容入一个自定义的函数中