我把我的form 放在Panel中procedure Tfrmtrain.CreatePXJHfrm;
var
  frm: Tfrmpxjh;
begin
   try
     FreeAndNil(frmpub);
     frm:= Tfrmpxjh.Create(nil);
     frmpub:= frm;
     frm.Align:= alClient;
     frm.BMList:= MainBMList;
     frm.UserList:= UserList;
     frm.Parent:= Pn_main; //TPanel
     frm.BorderStyle:= bsNone;
     frm.Show; 
   Finally
   end;
end;
出现了一个问题
form 中的DBGrid控件就是不占满整个空间(align = alclient无效)
结构缩成很小的一块,请高手指点,我已经研究了很久了

解决方案 »

  1.   

    下面的代码没问题:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      frm: TForm2;
    begin
      frm := TForm2.Create(nil);
      frm.Parent := Self.Panel1;
      frm.Align := alClient;
      frm.BorderStyle := bsNone;
      frm.Show;
    end;
      

  2.   

    将panel控件docksite属性设置为true,可以实现窗体的停靠功能!
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Form3 := tForm3.Create(nil);
      Form3.Parent := Panel1;
      Form3.Align := alClient;
      Form3.DBGrid1.Align := alClient;
      Form3.BorderStyle := bsNone;//如果不想要窗体的标题栏,加这一句
      Form3.Show;
    end;
      

  4.   

    建議樓主用NOBDEResizerpanel/Resizerpanel控件,可直接擴大DBGRID等.
      

  5.   

    //显示窗体
    procedure TMainFrm.showform(TClass: TComponentClass; var Reference);
    begin
      CloseAllWindow;
      if assigned(TForm(Reference)) then
      begin
        TForm(Reference).Close;
        TForm(Reference).free;
      end;
      application.CreateForm(TClass,TForm(Reference));
      TForm(Reference).Dock(Panel2,Panel2.ClientRect);
      TForm(Reference).Show;
    end;procedure TMainFrm.SpeedButton2Click(Sender: TObject);
    begin
      if assigned(TForm(SKILLFrm)) then exit;
      showform(TSKILLFrm,SKILLFrm);
    end;
      

  6.   

    //显示窗体
    procedure TMainFrm.showform(TClass: TComponentClass; var Reference);
    begin
      if assigned(TForm(Reference)) then
      begin
        TForm(Reference).Close;
        TForm(Reference).free;
      end;
      application.CreateForm(TClass,TForm(Reference));
      //把窗体放在Panel2中
      TForm(Reference).Dock(Panel2,Panel2.ClientRect);
      TForm(Reference).Show;
    end;procedure TMainFrm.SpeedButton2Click(Sender: TObject);
    begin
      if assigned(TForm(SKILLFrm)) then exit;
      showform(TSKILLFrm,SKILLFrm);
    end;