📄 sampledockingmain.pas
字号:
unit SampleDockingMain;
{$I ..\cxVer.inc}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, dxDockControl, dxDockPanel, dxBar, StdCtrls, ExtCtrls, ImgList,
ActnList, ShellAPI, cxControls, dxBarExtItems, dxStatusBar, ComCtrls,
cxGraphics, EBarsUtils;
type
TFormClass = class of TForm;
PPersistInfo = ^TPersistInfo;
TPersistInfo = record
WinControl: TWinControl;
SpecInfo: Integer;
end;
PRichEditSelInfo =^ TRichEditSelInfo;
TRichEditSelInfo = record
SelStart: Integer;
SelLength: Integer;
end;
TSampleDockingMainForm = class(TForm)
dxDockingManager: TdxDockingManager;
DockSite1: TdxDockSite;
BarManager: TdxBarManager;
dxBarButtonExit: TdxBarButton;
dxBarButtonStandardView: TdxBarButton;
dxBarButtonNETView: TdxBarButton;
dxBarButtonOffice11View: TdxBarButton;
dxBarButtonXPView: TdxBarButton;
dxBarButton1: TdxBarLargeButton;
dxBarButton2: TdxBarLargeButton;
dxBarButton3: TdxBarLargeButton;
dxBarButton4: TdxBarLargeButton;
dxBarButton5: TdxBarLargeButton;
dxBarButton6: TdxBarLargeButton;
dxBarButton7: TdxBarLargeButton;
imBarIcons: TImageList;
dxBarSubItem1: TdxBarSubItem;
dxBarSubItem2: TdxBarSubItem;
dxBarSubItem3: TdxBarSubItem;
dxBarButton8: TdxBarButton;
dxBarButton9: TdxBarButton;
dxBarButton10: TdxBarButton;
dxBarButton11: TdxBarButton;
dxBarButton12: TdxBarButton;
dxBarButton13: TdxBarButton;
dxBarButton14: TdxBarButton;
dxBarButton15: TdxBarButton;
dxBarButton16: TdxBarButton;
dxBarSubItem4: TdxBarSubItem;
dxBarButton17: TdxBarButton;
lbDescription: TLabel;
dxBarButton18: TdxBarButton;
dxBarButton19: TdxBarButton;
dxBarButton20: TdxBarButton;
dxBarPopupMenu: TdxBarPopupMenu;
dxBarButtonDockable: TdxBarButton;
dxBarButton22: TdxBarButton;
dxBarButtonAutoHide: TdxBarButton;
dxBarButtonFloating: TdxBarButton;
ilDockPanels: TImageList;
ilDisabledImages: TImageList;
ilHotImages: TImageList;
dxBarLargeButton1: TdxBarLargeButton;
dxBarLargeButton2: TdxBarLargeButton;
dxStatusBar: TdxStatusBar;
procedure SchemeClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure dxBarButton12Click(Sender: TObject);
procedure dxBarButtonExitClick(Sender: TObject);
procedure actRateDemoExecute(Sender: TObject);
procedure dxBarButton13Click(Sender: TObject);
procedure dxBarButton17Click(Sender: TObject);
procedure dxBarButton16Click(Sender: TObject);
procedure dxBarButton14Click(Sender: TObject);
procedure dxBarButton15Click(Sender: TObject);
procedure dxBarButton18Click(Sender: TObject);
procedure dxBarButton19Click(Sender: TObject);
procedure dxBarButtonDockableClick(Sender: TObject);
procedure dxBarButton22Click(Sender: TObject);
procedure dxBarButtonFloatingClick(Sender: TObject);
procedure dxBarButtonAutoHideClick(Sender: TObject);
procedure ShowDockControl(Sender: TdxDockSite; AControl: TdxCustomDockControl);
procedure HideDockControl(Sender: TdxDockSite; AControl: TdxCustomDockControl);
procedure FormCreate(Sender: TObject);
private
FTreeViewFrameCount, FDockingRichTextFrameCount, FRadioGroupFrameCount, FListBoxFrameCount: Integer;
FPopupMenuDockControl: TdxCustomDockControl;
procedure StartDock(Sender: TdxCustomDockControl; X, Y: Integer);
procedure EndDock(Sender: TdxCustomDockControl; Zone: TdxZone; X, Y: Integer);
{$IFDEF DELPHI5}
procedure dpContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
{$ENDIF}
procedure HookupEvents(Sender: TdxCustomDockControl);
procedure CreateTabContainer(Sender: TdxCustomDockControl; ATabContainer: TdxTabContainerDockSite);
procedure CreateSiteContainer(Sender: TdxCustomDockControl; ASideContainer: TdxSideContainerDockSite);
procedure CreateFloatSite(Sender: TdxCustomDockControl; AFloatSite: TdxFloatDockSite);
procedure AutoHideChanged(Sender: TdxCustomDockControl);
procedure AutoHideChanging(Sender: TdxCustomDockControl);
procedure ClearContent;
procedure SetPanelsVisibility(AVisible: Boolean);
procedure CreateScheme1;
procedure CreateScheme2;
procedure CreateScheme3;
procedure CreateScheme4;
procedure CreateScheme5;
procedure CreateFrame(AFrameClass: TFormClass; AOwner: TdxDockPanel);
end;
var
SampleDockingMainForm: TSampleDockingMainForm;
implementation
uses SampleDockingContainers, EBarsDemoRating, SampleDockingAbout,
SampleDockingRichText, SampleDockingRadioGroup, SampleDockingTreeView,
SampleDockingListBox;
{$R *.dfm}
{$R windowsxp.res}
function GetFocusedControl(AWinControl: TWinControl): TWinControl;
var
i: Integer;
begin
Result := nil;
for i:=0 to AWinControl.ControlCount - 1 do
if AWinControl.Controls[i] is TWinControl then
begin
Result := GetFocusedControl(TWinControl(AWinControl.Controls[i]));
if Result <> nil then Exit;
if TWinControl(AWinControl.Controls[i]).Focused then
begin
Result := TWinControl(AWinControl.Controls[i]);
Exit;
end;
end;
end;
procedure TSampleDockingMainForm.HookupEvents(Sender: TdxCustomDockControl);
begin
if Sender is TdxDockSite then
begin
TdxDockSite(Sender).OnShowControl := ShowDockControl;
TdxDockSite(Sender).OnHideControl := HideDockControl;
end;
Sender.OnAutoHideChanged := AutoHideChanged;
Sender.OnAutoHideChanging := AutoHideChanging;
{$IFDEF DELPHI5}
Sender.OnContextPopup := dpContextPopup;
{$ENDIF}
Sender.OnEndDocking := EndDock;
Sender.OnStartDocking := StartDock;
Sender.OnCreateTabContainer := CreateTabContainer;
Sender.OnCreateSideContainer := CreateSiteContainer;
Sender.OnCreateFloatSite := CreateFloatSite;
end;
procedure TSampleDockingMainForm.CreateFloatSite(
Sender: TdxCustomDockControl; AFloatSite: TdxFloatDockSite);
begin
HookupEvents(AFloatSite);
end;
procedure TSampleDockingMainForm.CreateTabContainer(
Sender: TdxCustomDockControl; ATabContainer: TdxTabContainerDockSite);
begin
HookupEvents(ATabContainer);
end;
procedure TSampleDockingMainForm.CreateSiteContainer(
Sender: TdxCustomDockControl; ASideContainer: TdxSideContainerDockSite);
begin
HookupEvents(ASideContainer);
end;
procedure TSampleDockingMainForm.CreateScheme1;
var
Panel, Panel1, Panel2: TdxDockPanel;
begin
Panel1 := TdxDockPanel.Create(Self);
HookupEvents(Panel1);
Panel1.Height := 360;
Panel1.DockTo(DockSite1, dtBottom, 0);
CreateFrame(TSampleDockingListBoxFrame, Panel1);
Panel2 := TdxDockPanel.Create(Self);
HookupEvents(Panel2);
Panel2.DockTo(Panel1, dtClient, 1);
CreateFrame(TSampleDockingRadioGroupFrame, Panel2);
Panel := TdxDockPanel.Create(Self);
HookupEvents(Panel);
Panel.DockTo(Panel2.TabContainer, dtTop, 0);
CreateFrame(TSampleDockingTreeViewFrame, Panel);
Panel1 := TdxDockPanel.Create(Self);
HookupEvents(Panel1);
Panel1.DockTo(Panel, dtClient, 0);
CreateFrame(TSampleDockingRichTextFrame, Panel1);
end;
procedure TSampleDockingMainForm.CreateScheme2;
var
Panel, Panel1, Panel2: TdxDockPanel;
begin
Panel1 := TdxDockPanel.Create(Self);
HookupEvents(Panel1);
Panel1.Height := 300;
Panel1.DockTo(DockSite1, dtRight, 0);
CreateFrame(TSampleDockingTreeViewFrame, Panel1);
Panel2 := TdxDockPanel.Create(Self);
HookupEvents(Panel2);
Panel2.DockTo(Panel1, dtClient, 1);
CreateFrame(TSampleDockingRichTextFrame, Panel2);
Panel := TdxDockPanel.Create(Self);
HookupEvents(Panel);
Panel.DockTo(Panel1, dtLeft, 0);
CreateFrame(TSampleDockingRadioGroupFrame, Panel);
end;
procedure TSampleDockingMainForm.CreateScheme3;
var
Panel1, Panel2, Panel3, Panel4: TdxDockPanel;
begin
Panel1 := TdxDockPanel.Create(Self);
HookupEvents(Panel1);
Panel1.DockTo(DockSite1, dtLeft, 0);
Panel1.AutoHide := True;
CreateFrame(TSampleDockingRichTextFrame, Panel1);
Panel2 := TdxDockPanel.Create(Self);
HookupEvents(Panel2);
Panel2.Height := 170;
Panel2.DockTo(DockSite1, dtTop, 0);
Panel2.AutoHide := True;
CreateFrame(TSampleDockingRadioGroupFrame, Panel2);
Panel3 := TdxDockPanel.Create(Self);
HookupEvents(Panel3);
Panel3.DockTo(DockSite1, dtRight, 0);
Panel3.AutoHide := True;
CreateFrame(TSampleDockingTreeViewFrame, Panel3);
Panel4 := TdxDockPanel.Create(Self);
HookupEvents(Panel4);
Panel4.Height := 190;
Panel4.DockTo(DockSite1, dtBottom, 0);
Panel4.AutoHide := True;
CreateFrame(TSampleDockingListBoxFrame, Panel4);
end;
procedure TSampleDockingMainForm.CreateScheme4;
var
Panel1, Panel2: TdxDockPanel;
begin
Panel1 := TdxDockPanel.Create(Self);
HookupEvents(Panel1);
Panel1.MakeFloating(Left + 50, Top + 100);
CreateFrame(TSampleDockingTreeViewFrame, Panel1);
Panel2 := TdxDockPanel.Create(Self);
HookupEvents(Panel2);
Panel2.DockTo(Panel1, dtClient, 0);
CreateFrame(TSampleDockingRichTextFrame, Panel2);
end;
procedure TSampleDockingMainForm.CreateScheme5;
var
Panel1, Panel2, Panel3: TdxDockPanel;
begin
Panel1 := TdxDockPanel.Create(Self);
HookupEvents(Panel1);
Panel1.Height := 350;
Panel1.DockTo(DockSite1, dtBottom, 0);
CreateFrame(TSampleDockingListBoxFrame, Panel1);
Panel2 := TdxDockPanel.Create(Self);
HookupEvents(Panel2);
Panel2.DockTo(Panel1, dtRight, 1);
CreateFrame(TSampleDockingTreeViewFrame, Panel2);
Panel3 := TdxDockPanel.Create(Self);
HookupEvents(Panel3);
Panel3.DockTo(Panel1, dtTop, 0);
CreateFrame(TSampleDockingRichTextFrame, Panel3);
end;
procedure TSampleDockingMainForm.SchemeClick(Sender: TObject);
begin
case TComponent(Sender).Tag of
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -