git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.DevExpressVCL@7 05c56307-c608-d34a-929d-697000501d7a
596 lines
18 KiB
ObjectPascal
596 lines
18 KiB
ObjectPascal
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, dtBottom, 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
|
|
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.
|
|
|