📄 aqdockcustform.pas
字号:
Result := lvPanels.Items.Add;
with Result do
begin
ImageIndex := AControl.ImageIndex;
Caption := AControl.Caption;
Data := AControl;
SubItems.Add('[' + DockControlStateToStr(AControl.DockState) + ']');
end;
end;
procedure TfrmDockingSetup.btnRenameClick(Sender: TObject);
begin
RenamePanel;
end;
procedure TfrmDockingSetup.lvPanelsEditing(Sender: TObject;
Item: TListItem; var AllowEdit: Boolean);
begin
btnClose.Default := False;
end;
procedure TfrmDockingSetup.UpdateStyleList;
var
i: Integer;
Item: TListItem;
begin
FUpdateStyles := True;
try
lvStyles.Items.Clear;
if FManager.StyleManager <> nil then
begin
pnlStyleWarn.Visible := False;
for i := 0 to FManager.StyleManager.Items.Count - 1 do
AddStyle(FManager.StyleManager.Items[i], FManager.StyleManager.Items.Names[i]);
if lvStyles.Items.Count > 0 then
begin
Item := GetItemByStyle(FManager.Style);
Item.Selected := True;
Item.Focused := True;
aqMakeVisible(Item);
end;
end
else
pnlStyleWarn.Visible := True;
finally
FUpdateStyles := False;
UpdatePage(tsStyles);
end;
end;
function TfrmDockingSetup.AddStyle(AStyle: TaqDockingUIStyle;
const AStyleName: string): TListItem;
begin
Result := lvStyles.Items.Add;
with Result do
begin
Caption := AStyleName;
Data := AStyle;
end;
end;
procedure TfrmDockingSetup.RenamePanel;
begin
if SelectedPanel <> nil then
aqEditCaption(lvPanels.Selected);
end;
procedure TfrmDockingSetup.btnDeleteClick(Sender: TObject);
begin
DeletePanel;
end;
procedure TfrmDockingSetup.DeletePanel;
var
Control: TaqCustomDockingControl;
NewSelection: TListItem;
begin
Control := SelectedPanel;
if Control <> nil then
begin
FUpdatePanels := True;
NewSelection := nil;
try
Control.RemoveFromDocking(True);
Control.Free;
if lvPanels.Items.Count > 1 then
begin
if lvPanels.Selected.Index = lvPanels.Items.Count - 1 then
NewSelection := lvPanels.Items[lvPanels.Selected.Index - 1]
else
NewSelection := lvPanels.Items[lvPanels.Selected.Index + 1];
end;
lvPanels.Selected.Free;
finally
FUpdatePanels := False;
if NewSelection <> nil then
begin
NewSelection.Selected := True;
NewSelection.Focused := True;
aqMakeVisible(NewSelection);
end;
UpdatePage(tsPanels);
if FManager.Designing then
aqIDEDesigner.Modified(FManager);
end;
end;
end;
procedure TfrmDockingSetup.Notification(AComponent: TComponent;
Operation: TOperation);
begin
inherited;
if Operation = opRemove then
if AComponent = FManager.OwnerForm then
Free
else if AComponent = FManager then
begin
FManager := nil;
Free;
end;
end;
procedure TfrmDockingSetup.UpdatePanel(AControl: TaqCustomDockingControl);
var
Item: TListItem;
begin
Item := GetItemByControl(AControl);
if Item <> nil then
begin
with Item do
begin
ImageIndex := AControl.ImageIndex;
Caption := AControl.Caption;
Data := AControl;
SubItems[0] := '[' + DockControlStateToStr(AControl.DockState) + ']';
end;
if SelectedPanel = AControl then
UpdatePage(tsPanels);
end;
end;
function TfrmDockingSetup.GetItemByControl(
AControl: TaqCustomDockingControl): TListItem;
var
i: Integer;
begin
for i := 0 to lvPanels.Items.Count - 1 do
if lvPanels.Items[i].Data = AControl then
begin
Result := lvPanels.Items[i];
Exit;
end;
Result := nil;
end;
function TfrmDockingSetup.GetItemByStyle(
AStyle: TaqDockingUIStyle): TListItem;
var
i: Integer;
begin
for i := 0 to lvStyles.Items.Count - 1 do
if lvStyles.Items[i].Data = AStyle then
begin
Result := lvStyles.Items[i];
Exit;
end;
Result := nil;
end;
procedure TfrmDockingSetup.lvPanelsSelectItem(Sender: TObject;
Item: TListItem; Selected: Boolean);
begin
if FUpdatePanels then Exit;
if (lvPanels.Tag = 1) or Selected then
UpdatePage(tsPanels);
lvPanels.Tag := 0;
end;
procedure TfrmDockingSetup.lvPanelsChanging(Sender: TObject;
Item: TListItem; Change: TItemChange; var AllowChange: Boolean);
begin
if FUpdatePanels then Exit;
lvPanels.Tag := lvPanels.Tag + 1;
end;
procedure TfrmDockingSetup.lvStylesSelectItem(Sender: TObject;
Item: TListItem; Selected: Boolean);
begin
if FUpdateStyles then Exit;
if (lvStyles.Tag = 1) or Selected then
UpdatePage(tsStyles);
lvStyles.Tag := 0;
end;
procedure TfrmDockingSetup.lvStylesChanging(Sender: TObject;
Item: TListItem; Change: TItemChange; var AllowChange: Boolean);
begin
if FUpdateStyles then Exit;
lvStyles.Tag := lvStyles.Tag + 1;
end;
//procedure TfrmDockingSetup.UndockPanel;
//var
// Control: TaqCustomDockingControl;
//begin
// Control := SelectedPanel;
// if (Control <> nil) and (Control.DockState = dcsDocked) then
// Control.MakeFloating(Control.ScreenRect);
//end;
function TfrmDockingSetup.GetSelectedPanel: TaqCustomDockingControl;
begin
if (tsPanels.PageControl <> nil) and (lvPanels.SelCount > 0) then
Result := TaqCustomDockingControl(lvPanels.Selected.Data)
else
Result := nil;
end;
function TfrmDockingSetup.GetSelectedStyle: TaqDockingUIStyle;
begin
if lvStyles.SelCount > 0 then
Result := TaqDockingUIStyle(lvStyles.Selected.Data)
else
Result := nil;
end;
procedure TfrmDockingSetup.btnApplyClick(Sender: TObject);
var
Style: TaqDockingUIStyle;
begin
Style := SelectedStyle;
if Style <> nil then
begin
FManager.Style := Style;
aqIDEDesigner.Modified(FManager);
UpdatePage(tsStyles);
ActiveControl := lvStyles;
end;
end;
procedure TfrmDockingSetup.btnShowClick(Sender: TObject);
begin
ShowPanel;
end;
procedure TfrmDockingSetup.btnHideClick(Sender: TObject);
begin
HidePanel;
end;
procedure TfrmDockingSetup.ShowPanel;
var
Control: TaqCustomDockingControl;
begin
{ if FManager.MainDockSite = nil then
raise Exception.Create(SENoDockSite);}
Control := SelectedPanel;
if Control <> nil then
begin
Control.ForceVisible;
UpdatePanel(Control);
end;
end;
procedure TfrmDockingSetup.HidePanel;
var
Control: TaqCustomDockingControl;
begin
if FManager.NullDockingSite = nil then
raise Exception.Create(SENoDockSite);
Control := SelectedPanel;
if Control <> nil then
begin
Control.Actions[idactHide].Execute(Self);
// Control.RemoveFromDocking;
UpdatePanel(Control);
end;
end;
procedure TfrmDockingSetup.SelectPanel(AControl: TaqCustomDockingControl;
AEdit: Boolean);
var
Item: TListItem;
begin
pgcDockSetup.ActivePageIndex := 0;
Item := GetItemByControl(AControl);
if Item <> nil then
begin
Item.Focused := True;
Item.Selected := True;
aqMakeVisible(Item);
UpdatePage(tspanels);
if AEdit then
aqEditCaption(Item);
end;
end;
procedure TfrmDockingSetup.SelectPage(const APageName: string);
var
i: Integer;
begin
if APageName <> '' then
for i := 0 to pgcDockSetup.PageCount - 1 do
if pgcDockSetup.Pages[i].Caption = APageName then
begin
pgcDockSetup.ActivePage := pgcDockSetup.Pages[i];
TaqControlFriend(pgcDockSetup.ActivePage).SelectFirst;
Exit;
end;
end;
procedure TfrmDockingSetup.ApplicationEventsActivate(Sender: TObject);
begin
BringToFront;
end;
procedure TfrmDockingSetup.ApplicationEventsRestore(Sender: TObject);
begin
BringToFront;
end;
procedure TfrmDockingSetup.pgcDockSetupChange(Sender: TObject);
begin
UpdatePage(pgcDockSetup.ActivePage);
end;
procedure TfrmDockingSetup.UpdatePage(APage: TTabSheet);
var
Control: TaqCustomDockingControl;
Style: TaqDockingUIStyle;
begin
if csDestroying in ComponentState then Exit;
case APage.Tag of
0:
begin
if FUpdatePanels then Exit;
Control := SelectedPanel;
btnRename.Enabled := Control <> nil;
btnDelete.Enabled := Control <> nil;
btnShow.Enabled := Control <> nil;
btnHide.Enabled := Control <> nil;
if APage = pgcDockSetup.ActivePage then
SelectComponent(Control);
end;
1:
begin
Style := SelectedStyle;
btnApply.Enabled := (Style <> nil) and (Style <> FManager.Style);
if APage = pgcDockSetup.ActivePage then
SelectComponent(Style);
end;
end;
end;
procedure TfrmDockingSetup.SelectComponent(AComponent: TPersistent);
begin
if AComponent <> nil then
aqIDEDesigner.SelectComponent(FManager, AComponent)
else
aqIDEDesigner.SelectComponent(FManager, FManager);
end;
procedure TfrmDockingSetup.chkAutoDragClick(Sender: TObject);
begin
if not FUpdateSettings then
FManager.AutoDragDocking := TCheckBox(Sender).Checked;
end;
procedure TfrmDockingSetup.chkShowInsideClick(Sender: TObject);
begin
if not FUpdateSettings then
if TCheckBox(Sender).Checked then
FManager.ShowContainerCaption := FManager.ShowContainerCaption + [cntInside]
else
FManager.ShowContainerCaption := FManager.ShowContainerCaption - [cntInside];
end;
procedure TfrmDockingSetup.chkButtonClick(Sender: TObject);
var
Buttons: TaqDockButtonItems;
begin
if not FUpdateSettings then
begin
Buttons := FManager.CaptionButtons;
if chkHide.Checked then
Include(Buttons, dbiHide)
else
Exclude(Buttons, dbiHide);
if chkUndock.Checked then
Include(Buttons, dbiUndock)
else
Exclude(Buttons, dbiUndock);
if chkHelp.Checked then
Include(Buttons, dbiHelp)
else
Exclude(Buttons, dbiHelp);
if chkMax.Checked then
Include(Buttons, dbiMaximizeRestore)
else
Exclude(Buttons, dbiMaximizeRestore);
if chkMenu.Checked then
Include(Buttons, dbiMenu)
else
Exclude(Buttons, dbiMenu);
if chkCustom.Checked then
Include(Buttons, dbiCustom)
else
Exclude(Buttons, dbiCustom);
FManager.CaptionButtons := Buttons;
aqIDEDesigner.Modified(FManager);
end;
end;
procedure TfrmDockingSetup.chkShowHintClick(Sender: TObject);
begin
if not FUpdateSettings then
begin
FManager.ShowDockButtonHint := TCheckBox(Sender).Checked;
aqIDEDesigner.Modified(FManager);
end;
end;
procedure TfrmDockingSetup.UpdateSettings;
begin
FUpdateSettings := True;
try
chkAutoDrag.Checked := FManager.AutoDragDocking;
chkShowInside.Checked := cntInside in FManager.ShowContainerCaption;
chkShowVert.Checked := cntVertical in FManager.ShowContainerCaption;
chkShowHor.Checked := cntHorizontal in FManager.ShowContainerCaption;
chkHide.Checked := dbiHide in FManager.CaptionButtons;
chkUndock.Checked := dbiUndock in FManager.CaptionButtons;
chkMax.Checked := dbiMaximizeRestore in FManager.CaptionButtons;
chkMenu.Checked := dbiMenu in FManager.CaptionButtons;
chkHelp.Checked := dbiHelp in FManager.CaptionButtons;
chkCustom.Checked := dbiCustom in FManager.CaptionButtons;
chkShowHint.Checked := FManager.ShowDockButtonHint;
chkAutoHideButtons.Checked := FManager.ShowDisabledButtons;
chkFloatOnTop.Checked := FStayOnTop;
finally
FUpdateSettings := False;
end;
end;
procedure TfrmDockingSetup.chkAutoHideButtonsClick(Sender: TObject);
begin
if not FUpdateSettings then
begin
FManager.ShowDisabledButtons := TCheckBox(Sender).Checked;
aqIDEDesigner.Modified(FManager);
end;
end;
procedure TfrmDockingSetup.chkFloatOnTopClick(Sender: TObject);
begin
if not FUpdateSettings then
begin
FStayOnTop := TCheckBox(Sender).Checked;
aqIDEDesigner.Modified(FManager);
end;
end;
procedure TfrmDockingSetup.chkShowVertClick(Sender: TObject);
begin
if not FUpdateSettings then
begin
if TCheckBox(Sender).Checked then
FManager.ShowContainerCaption := FManager.ShowContainerCaption + [cntVertical]
else
FManager.ShowContainerCaption := FManager.ShowContainerCaption - [cntVertical];
aqIDEDesigner.Modified(FManager);
end;
end;
procedure TfrmDockingSetup.chkShowHorClick(Sender: TObject);
begin
if not FUpdateSettings then
begin
if TCheckBox(Sender).Checked then
FManager.ShowContainerCaption := FManager.ShowContainerCaption + [cntHorizontal]
else
FManager.ShowContainerCaption := FManager.ShowContainerCaption - [cntHorizontal];
aqIDEDesigner.Modified(FManager);
end;
end;
procedure TfrmDockingSetup.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #27 then
Close;
end;
initialization
RegisterCustomizer(TaqDockingManagerCustomizer.Create as IaqDockingManagerCustomizer);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -