📄 sampledockingmain.pas
字号:
0: CreateScheme1;
1: CreateScheme2;
2: CreateScheme3;
3: CreateScheme4;
4: CreateScheme5;
end;
end;
procedure TSampleDockingMainForm.ClearContent;
var
Count: Integer;
begin
Count := dxDockingController.DockControlCount - 1;
while Count >= 0 do
begin
if dxDockingController.DockControls[Count] is TdxDockPanel then
dxDockingController.DockControls[Count].Free;
if (dxDockingController.DockControlCount - 1) < (Count - 1) then
Count := dxDockingController.DockControlCount - 1 else
Dec(Count);
end;
FTreeViewFrameCount := 0;
FDockingRichTextFrameCount := 0;
FRadioGroupFrameCount := 0;
FListBoxFrameCount := 0;
end;
procedure TSampleDockingMainForm.FormDestroy(Sender: TObject);
begin
ClearContent;
end;
procedure TSampleDockingMainForm.dxBarButton12Click(Sender: TObject);
begin
ClearContent;
end;
procedure TSampleDockingMainForm.dxBarButtonExitClick(Sender: TObject);
begin
Close;
end;
procedure TSampleDockingMainForm.actRateDemoExecute(Sender: TObject);
begin
with TEBarsDemoRatingForm.Create(Self) do
try
ShowModal;
finally
Free;
end;
end;
procedure TSampleDockingMainForm.dxBarButton13Click(Sender: TObject);
begin
BarManager.Style := bmsStandard;
dxDockingManager.ViewStyle := vsStandard;
dxStatusBar.PaintStyle := stpsStandard;
end;
procedure TSampleDockingMainForm.dxBarButton17Click(Sender: TObject);
begin
BarManager.Style := bmsFlat;
dxDockingManager.ViewStyle := vsNET;
dxStatusBar.PaintStyle := stpsFlat;
end;
procedure TSampleDockingMainForm.dxBarButton16Click(Sender: TObject);
begin
BarManager.Style := bmsOffice11;
dxDockingManager.ViewStyle := vsOffice11;
dxStatusBar.PaintStyle := stpsOffice11;
end;
procedure TSampleDockingMainForm.dxBarButton14Click(Sender: TObject);
begin
BarManager.Style := bmsXP;
dxDockingManager.ViewStyle := vsXP;
dxStatusBar.PaintStyle := stpsXP;
end;
procedure TSampleDockingMainForm.dxBarButton15Click(Sender: TObject);
begin
BarManager.Style := bmsEnhanced;
dxDockingManager.ViewStyle := vsStandard;
dxStatusBar.PaintStyle := stpsStandard;
end;
procedure TSampleDockingMainForm.SetPanelsVisibility(AVisible: Boolean);
var
i: Integer;
begin
for i:=0 to dxDockingController.DockControlCount - 1 do
if (dxDockingController.DockControls[i] is TdxCustomDockControl) and (dxDockingController.DockControls[i] <> DockSite1) then
begin
if (not AVisible) and dxDockingController.DockControls[i].AutoHide then
dxDockingController.DockControls[i].Visible := True;
dxDockingController.DockControls[i].Visible := AVisible;
end;
end;
procedure TSampleDockingMainForm.dxBarButton18Click(Sender: TObject);
begin
SetPanelsVisibility(True);
end;
procedure TSampleDockingMainForm.dxBarButton19Click(Sender: TObject);
begin
SetPanelsVisibility(False);
end;
{$IFDEF DELPHI5}
procedure TSampleDockingMainForm.dpContextPopup(Sender: TObject;
MousePos: TPoint; var Handled: Boolean);
var
pt: TPoint;
AControl: TdxCustomDockControl;
begin
GetCursorPos(pt);
AControl := dxDockingController.GetDockControlAtPos(pt);
if AControl <> nil then
begin
FPopupMenuDockControl := AControl;
dxBarButtonDockable.Down := AControl.Dockable;
dxBarButtonFloating.Down := AControl.FloatDockSite <> nil;
dxBarButtonAutoHide.Enabled := AControl.CanAutoHide;
dxBarButtonAutoHide.Down := AControl.AutoHide;
dxBarPopupMenu.PopupFromCursorPos;
Handled := True;
end;
end;
{$ENDIF}
procedure TSampleDockingMainForm.dxBarButtonDockableClick(Sender: TObject);
begin
if FPopupMenuDockControl <> nil then
begin
FPopupMenuDockControl.Dockable := (Sender as TdxBarButton).Down;
FPopupMenuDockControl := nil;
end;
end;
procedure TSampleDockingMainForm.dxBarButton22Click(Sender: TObject);
begin
if FPopupMenuDockControl <> nil then
begin
FPopupMenuDockControl.Visible := False;
FPopupMenuDockControl := nil;
end;
end;
procedure TSampleDockingMainForm.dxBarButtonFloatingClick(Sender: TObject);
var
pt: TPoint;
begin
if (FPopupMenuDockControl <> nil) and (FPopupMenuDockControl.DockState <> dsFloating) then
begin
GetCursorPos(pt);
FPopupMenuDockControl.MakeFloating(pt.X, pt.Y);
FPopupMenuDockControl := nil;
end;
end;
procedure TSampleDockingMainForm.dxBarButtonAutoHideClick(Sender: TObject);
begin
if FPopupMenuDockControl <> nil then
begin
FPopupMenuDockControl.AutoHide := (Sender as TdxBarButton).Down;
FPopupMenuDockControl := nil;
end;
end;
procedure TSampleDockingMainForm.CreateFrame(AFrameClass: TFormClass; AOwner: TdxDockPanel);
var
AFrame: TCustomForm;
ACaption: String;
AImageIndex: Integer;
begin
AFrame := AFrameClass.Create(AOwner);
AFrame.Parent := AOwner;
AFrame.Align := alClient;
AImageIndex := -1;
if AFrame is TSampleDockingTreeViewFrame then
begin
Inc(FTreeViewFrameCount);
ACaption := 'TreeView Panel ' + IntToStr(FTreeViewFrameCount);
AImageIndex := 0;
end else
if AFrame is TSampleDockingRichTextFrame then
begin
Inc(FDockingRichTextFrameCount);
ACaption := 'RichText Panel ' + IntToStr(FDockingRichTextFrameCount);
AImageIndex := 1;
end else
if AFrame is TSampleDockingRadioGroupFrame then
begin
Inc(FRadioGroupFrameCount);
ACaption := 'RadioGroup Panel ' + IntToStr(FRadioGroupFrameCount);
AImageIndex := 2;
end else
if AFrame is TSampleDockingListBoxFrame then
begin
Inc(FListBoxFrameCount);
ACaption := 'ListBox Panel ' + IntToStr(FListBoxFrameCount);
AImageIndex := 3;
end;
AOwner.Caption := ACaption;
AOwner.ImageIndex := AImageIndex;
AFrame.Visible := True;
end;
procedure StorePersistentInfo(Sender: TdxCustomDockControl);
var
AWinControl: TWinControl;
p: PPersistInfo;
PSelInfo: PRichEditSelInfo;
begin
if Sender.Visible and (Sender.Tag = 0) then
begin
AWinControl := GetFocusedControl(Sender);
if AWinControl <> nil then
begin
New(p);
p^.WinControl := AWinControl;
if AWinControl is TCustomEdit then
begin
New(PSelInfo);
PSelInfo^.SelStart := TCustomEdit(AWinControl).SelStart;
PSelInfo^.SelLength := TCustomEdit(AWinControl).SelLength;
p^.SpecInfo := Integer(PSelInfo);
Sender.Tag := Integer(p);
end;
Sender.Tag := Integer(p);
end;
end;
end;
procedure RestorePersistentInfo(Sender: TdxCustomDockControl);
begin
if Sender.Visible and (Sender.Tag <> 0) then
begin
if PPersistInfo(Sender.Tag)^.WinControl.CanFocus then
PPersistInfo(Sender.Tag)^.WinControl.SetFocus;
if PPersistInfo(Sender.Tag)^.WinControl is TCustomEdit then
begin
TCustomEdit(PPersistInfo(Sender.Tag)^.WinControl).SelStart := PRichEditSelInfo(PPersistInfo(Sender.Tag)^.SpecInfo)^.SelStart;
TCustomEdit(PPersistInfo(Sender.Tag)^.WinControl).SelLength := PRichEditSelInfo(PPersistInfo(Sender.Tag)^.SpecInfo)^.SelLength;
Dispose(PRichEditSelInfo(PPersistInfo(Sender.Tag)^.SpecInfo));
end;
Dispose(PPersistInfo(Sender.Tag));
Sender.Tag := 0;
end;
end;
procedure TSampleDockingMainForm.StartDock(Sender: TdxCustomDockControl; X,
Y: Integer);
begin
StorePersistentInfo(Sender);
end;
procedure TSampleDockingMainForm.EndDock(Sender: TdxCustomDockControl;
Zone: TdxZone; X, Y: Integer);
begin
RestorePersistentInfo(Sender);
end;
procedure TSampleDockingMainForm.HideDockControl(Sender: TdxDockSite;
AControl: TdxCustomDockControl);
begin
StorePersistentInfo(AControl);
end;
procedure TSampleDockingMainForm.ShowDockControl(Sender: TdxDockSite;
AControl: TdxCustomDockControl);
begin
RestorePersistentInfo(AControl);
end;
procedure TSampleDockingMainForm.AutoHideChanged(
Sender: TdxCustomDockControl);
begin
RestorePersistentInfo(Sender);
end;
procedure TSampleDockingMainForm.AutoHideChanging(
Sender: TdxCustomDockControl);
begin
StorePersistentInfo(Sender);
end;
procedure TSampleDockingMainForm.FormCreate(Sender: TObject);
begin
dmCommonData.AboutFormClass := TSampleDockingAboutForm;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -