Delphi中多标签页面的实现
2016-02-25 18:12
405 查看
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
相关文章推荐
- 关于Delphi中TRttiContext.FindType失效的问题
- Delphi中拖动无边框窗口的5种方法
- Delphi TListView刷新闪烁问题
- Delphi中关于资源释放(Free/release/freeAndNil)的一点体会
- delphi控件安装(重安装系统也不用再安装)
- Delphi - 软件注册的一个例子
- 深入VCL源码研究DELPHI窗体的创建和关闭
- Delphi XE4 For IOS 之SQLite初试
- Delphi XE4 For IOS中程序的调试(虚拟机,真实机和win32)
- .net C# inputBox文字输入对话框,类似delphi的inputBox
- delphi7打开的时候一直让说注册失效,然后不让进入到开发界面
- delphi socket使用心得
- Delphi7编译时,发生Access violation at address 00A7B628 in module 'dcc70.dll'. Read of address 00000000.(Delphi6升级到Delphi7)
- Delphi 运行Word VBA 宏 删除软回车
- 转:Delphi XE4 语言变化 [Weak] [Unsafe]
- 在delphi如何把TADOQuery.ParamCheck
- Delphi XE7中新并行库
- delphi开发中的菜单及权限
- Delphi Setlength 内存释放总结
- Delphi TreeView遍历所有节点问题