• Delphi中多标签页面的实现


    unit uMain;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, RzTabs, Menus;
    
    type
      TFrmMain = class(TForm)
        RzPageControl1: TRzPageControl;
        MainMenu1: TMainMenu;
        N1: TMenuItem;
        N11: TMenuItem;
        N21: TMenuItem;
        N31: TMenuItem;
        TabSheet1: TRzTabSheet;
        procedure N11Click(Sender: TObject);
        procedure N21Click(Sender: TObject);
        procedure N31Click(Sender: TObject);
        procedure RzPageControl1Close(Sender: TObject; var AllowClose: Boolean);
      private
        { Private declarations }
      public
        procedure ShowDockForm(FormClass: TFormClass; dockCtrl: TRzPageControl );
    
      end;
    
    var
      FrmMain: TFrmMain;
    
    implementation
    
    uses
      Unit1;
    
    {$R *.dfm}
    { TForm12 }
    
    procedure TFrmMain.N11Click(Sender: TObject);
    begin
      ShowDockForm(TForm1,RzPageControl1);
    end;
    
    //procedure TFrmMain.N21Click(Sender: TObject);
    //begin
    //  ShowDockForm(TForm2,RzPageControl1);
    //end;
    //
    //procedure TFrmMain.N31Click(Sender: TObject);
    //begin
    //  ShowDockForm(TForm3,RzPageControl1);
    //end;
    
    procedure TFrmMain.RzPageControl1Close(Sender: TObject;
      var AllowClose: Boolean);
    begin
      AllowClose :=  RzPageControl1.ActivePageIndex >0;
    end;
    
    procedure TFrmMain.ShowDockForm(FormClass: TFormClass; dockCtrl: TRzPageControl);
      procedure ShowCaption(ParentCtrl: TWinControl; ACaption: string);
      begin
        if ParentCtrl is TRzTabSheet then
          TRzTabSheet(ParentCtrl).Caption := ACaption;
      end;
    
    var
      i: Integer;
      TabCtrl: TRzTabSheet;
      Form: TForm;
    begin
      Screen.Cursor := crHourGlass;
      try
        for i := 0 to Screen.CustomFormCount - 1 do
          if Screen.CustomForms[i] is FormClass then
          begin
            if (not(Screen.CustomForms[i]).Visible) then
              (Screen.CustomForms[i]).Visible := True;
            (Screen.CustomForms[i]).BringToFront;
            (Screen.CustomForms[i]).SetFocus;
            TabCtrl := TRzTabSheet(Screen.CustomForms[i].Parent);
            ShowCaption(TabCtrl, Screen.CustomForms[i].Caption);
            TRzPageControl(dockCtrl).ActivePageIndex := TabCtrl.PageIndex;
            exit;
          end;
    
        TabCtrl := TRzTabSheet.Create(dockCtrl); // dockCtrl
        TabCtrl.PageControl := TRzPageControl(dockCtrl);
        TRzPageControl(dockCtrl).ActivePageIndex := TabCtrl.PageIndex;
    
        Form := FormClass.Create(TabCtrl);
        with Form do
          try
            ManualDock(TabCtrl);
            ShowCaption(TabCtrl, Caption);
    
            Show;
            Form.WindowState := wsMaximized;
            Form.Align := alClient;
          except
            Free;
          end;
    
      finally
        Screen.Cursor := crDefault;
      end;
    end;
    
    end.

    http://blog.csdn.net/diligentcatrich/article/details/8281965

  • 相关阅读:
    昆虫洞
    湖南一师大酒店
    三、CentOS 7.X系统安装配置超祥细图解教程
    二、Centos7—U盘启动盘制作
    一、VMware Workstation 15中文破解版 下载与安装(附密钥)
    三、Pycharm2019.3.3的安装
    二、Python2.7的安装并与Python3.8共存
    一、Python3.8的安装
    一、华为模拟器eNSP下载与安装教程
    关于c#的一些笔记
  • 原文地址:https://www.cnblogs.com/findumars/p/5217945.html
Copyright © 2020-2023  润新知