原先是这样的
form1:=TForm1.Create(Application);
form1.Caption:='123';form2:=TForm2.Create(Application);
form2.Caption:='456';我想提取个公共的操作
form1:=SetTest(TForm1,'123');//这样写参数会出错
function SetTest(form:TForm;str:string):TForm;
var
  form:TForm;
begin
form:=TForm.Create(Application);
form.Caption:=str;
end;

解决方案 »

  1.   

    procedure SetTest(form:TObject;str:string);
    var
      form1 :TForm;
    begin  Tform(form).Caption := str;
    end;procedure TForm1.Button1Click(Sender: TObject);
    beginform2:=TForm2.Create(Application);
    form2.Caption:='456';
     SetTest(form1,'123');//这样写参数会出错
    end;
      

  2.   

    SetTest的参数Tform对象,你赋一个类作参数,当然会错。
      

  3.   


    function SetTest(mformclass:TFormclass;str:string):TForm; 
    var 
      form:TForm; 
    begin 
    form:=mFormclass.Create(Application); 
    form.Caption:=str;
    result:=form; 
    end;
      

  4.   

    不好意思,剛看錯意思了。function SetTest(form:TFormClass;str:string) : TForm;
    var
      form1 :TForm;
    begin
      Tform(form) := TForm.Create(Application);
      Tform(form).Caption := str;
      Result := Tform(form);
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      Form1 : TForm;
    beginform2:=TForm2.Create(Application);
    form2.Caption:='456';
     Form1 := SetTest(TForm1,'123');//这样写参数会出错
     form1.ShowModal;
    end;
      

  5.   

    to lhylhy , starluck 都是这样的错误啊
    form1 := SetTest(TForm1,'123');
    [错误] Unit1.pas(152): Incompatible types: 'TForm1' and 'TForm'
      

  6.   


    setTest  你沒認真看我怎麼寫。
      

  7.   

    procedure SetTest(form:TObject;str:string);
    begin
      form.Caption := str;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var  Form1 : TForm;
    begin
      form2:=TForm2.Create(Application);
      form2.Caption:='456';
      SetTest(Form2,'123');  //一样的道理,可以设Form1,SetTest(Form1,'123');
      form2.ShowModal;
    end;
      

  8.   

    form1定义成Tform,别用Tform1。
      

  9.   


    function SetTest(Pform:TFormClass;str:string):TForm;
    begin
      //application.CreateForm(pform,result);
      result := Tform(pform.Create(application));
      result.Caption := str;
      result.Show;
    end;var
      f2:tform1;
    begin
      f2 := SetTest(tform1,'sdfsd') as tform1;
      

  10.   

    jason_28693  的可以 
    谢谢