凭感觉写的,没有实际测试,参考一下吧,应该可以的
function showform(aform:tform;acontrol:twincontrol):tform;
begin
   result :=nil;
  if Not assigned(form2) then
   with tform(aform).create(application) do begin
          parent:= acontrol;
    Color:= MainPanel.Color;
    show;
   end;
    result:= form2;
end;

解决方案 »

  1.   

    procedure CreateMyFrom(mFormClass: TFormClass; mForm: TForm);
    begin
      if not Assigned(mFormClass) then Exit;
      if not Assigned(mForm) then
        try
          mForm := mFormClass.Create(Application);
        except
          mForm.Free;
        end;
      mForm.Parent := MainPanel;
      mForm.Colo r:= MainPanel.Color;
      mForm.show;
      NodeForm := mForm;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      vForm: TForm;
    begin
      vForm := nil;
      CreateMyFrom(TForm, vForm);
    end;
      

  2.   

    procedure ShowForm(AFormClass: TFormClass; var AForm; AParentControl: TWinControl);
    var
      Instance: TForm;
    begin
      Instance := TForm(AForm);
      if Not Assigned(Instance) then
      begin
        Instance := AFormClass.Create(Application);
        TForm(AForm) := Instance;
        With Instance do
        begin
          Parent := AParentControl;
          Color := TForm(AParentControl).Color;
          Show;
        end;
        NodeForm := Instance;
      end;
    end;调用时
    ShowForm(TForm1, Form1, MainForm.MainPanel);
      

  3.   

    自定义一个pub的pas,公用单元,可以写一个如下的过程:procedure ANewForm(FormClass: TFormClass; var Reference; const FormName: string);
    begin
    if FindGlobalComponent(FormName) <> nil then exit;
      Application.CreateForm(FormClass,Reference); if Aform <> nil then
    Aform.Release; Aform := (FindGlobalComponent(FormName) as TForm); Aform.parent := Fmain.panel1;
      Aform.align := alclient;
      Aform.show;
    end;procedure CloseForm;
    begin
    if Aform <> nil then
       Aform.close;
      Aform := nil;
    end;
      

  4.   

    function ShowForm(AForm: TForm;
      AControl: TWinControl; AColor: TColor): TForm;
    begin
      Result := nil;
      if not Assigned(AForm) then
        with TForm(AForm).Create(Application) do begin
          Parent := AControl;
          Color := AColor;
          Show;
        end;
      Result := AForm;
    end;
      

  5.   

    感谢各位的仗义相救,这里所有的人对我解决这个问题都帮助莫大,尤其是 zswang(伴水)(破碎的心只剩下灵感) 、 cobi(我是小新) 、 xzgyb(老达摩) 还有 s2s() 。问题已经解决,在此感谢各位!!