我的程序里有多个FRAME,fmewelcome,fmequery,fmefly......
我现在是用下面的语句打开FRAME
procedure Tfrmmain.actwelcomeExecute(Sender: TObject);
begin 
   tab:=TNxTabSheet.Create(NxPageControl1);
    tab.Caption :=(sender as TAction).Caption;
    NxPageControl1.AddPage(tab,true) ;
    fmewelcome := Tfmewelcome.Create( Application );
    fmewelcome.Parent := NxPageControl1.Pages[NxPageControl1.PageCount-1];
    fmewelcome.BringToFront ;
    fmewelcome.Align := alClient;
    NxPageControl1.ActivePageIndex:=NxPageControl1.PageCount-1 ;
end
因为FRAME太多,每个FRAME都这么写太麻烦,我想用过程getframe把FRAME作为参数来执行,应该怎么写?
谢谢各位了!!

解决方案 »

  1.   


    procedure Tfrmmain.AddFrameToPageControl(AFrameClass, ATabCaption: string; APageControl: TNxPageControl);
    var
      tab: TNxTabSheet;
    begin
      try    
        tab := TNxTabSheet.Create(APageControl);
        tab.Caption := ATabCaption;
        with TCustomFrameClass(FindClass(AFrameClass)).Create(Application) do
        begin
          Parent := tab;
          BringToFront;
          Align := alClient;
        end;
        APageControl.AddPage(tab, true);
        APageControl.ActivePageIndex := tab.PageIndex;
      except    
        on E: Exception do
        begin
          tab.Free;
          ShowMessage(E.Message);
        end;
      end;
    end;initialization
      RegisterClasses([fmewelcome, fmequery, fmefly]);finalization
      UnRegisterClasses([fmewelcome, fmequery, fmefly]);