📄 aqdockingreg.pas.~1~
字号:
{ TaqDockingControlEditor }
function TaqDockingControlEditor.GetManager: TaqDockingManagerFriend;
begin
Result := TaqDockingManagerFriend(TaqDockingControl(Component).DockingManager);
end;
{ TaqDockingControlsEditor }
procedure TaqDockingControlsEditor.Edit;
var
Comp: TPersistent;
begin
Comp := GetComponent(0);
if Comp is TaqDockingManager then
TaqDockingManagerFriend(Comp).Customize(True);
end;
function TaqDockingControlsEditor.GetAttributes: TPropertyAttributes;
begin
Result := [paReadOnly, paDialog];
end;
function TaqDockingControlsEditor.GetValue: string;
begin
Result := Format('(%s)', [TaqDockingControls.ClassName]);
end;
{$IFDEF VCL}
{ TaqButtonCaptionEditor }
function TaqCaptionButtonProperty.GetAttributes: TPropertyAttributes;
begin
Result := [paReadOnly, paSubProperties];
end;
function TaqCaptionButtonProperty.GetValue: string;
begin
Result := Format('(%s)', [TaqCaptionButton.ClassName]);
end;
{ TaqTitleButtonWidgetEditor }
constructor TaqButtonWidgetProperty.Create(const ADesigner: IDesigner;
APropCount: Integer);
begin
inherited;
FWidgetSize := 16;
end;
function TaqButtonWidgetProperty.GetAttributes: TPropertyAttributes;
begin
Result := inherited GetAttributes - [paSortList];
end;
function TaqButtonWidgetProperty.GetStyle: TaqThemedUIStyleFriend;
begin
Result := TaqThemedUIStyleFriend(TaqCaptionButtonFriend(GetComponent(0)).Owner.Owner);
end;
procedure TaqButtonWidgetProperty.ListDrawValue(const Value: string;
ACanvas: TCanvas; const ARect: TRect; ASelected: Boolean);
var
AWidgetRect, ATextRect: TRect;
PrevBrushColor: TColor;
begin
ATextRect := ARect;
if Style.ThemeAvailable then
begin
Inc(ATextRect.Left, FWidgetSize + 2);
with ARect do
begin
PrevBrushColor := ACanvas.Brush.Color;
ACanvas.Brush.Color := clWindow;
ACanvas.FillRect(Rect(Left, Top, ATextRect.Left, Bottom));
ACanvas.Brush.Color := PrevBrushColor;
end;
AWidgetRect := ARect;
AWidgetRect.Right := FWidgetSize + 2;
InflateRect(AWidgetRect, -1, -1);
Style.DrawCaptionWidget(ACanvas, AWidgetRect, dbsNormal, dcsNormal, StrToWidget(Value));
end;
with ATextRect, ACanvas do
ACanvas.TextRect(ATextRect, Left + 1, (Top + Bottom - TextHeight(Value)) div 2, Value);
end;
procedure TaqButtonWidgetProperty.ListMeasureHeight(const Value: string;
ACanvas: TCanvas; var AHeight: Integer);
begin
if Style.ThemeAvailable and (AHeight < FWidgetSize + 2) then
AHeight := FWidgetSize + 2;
end;
procedure TaqButtonWidgetProperty.ListMeasureWidth(const Value: string;
ACanvas: TCanvas; var AWidth: Integer);
begin
if Style.ThemeAvailable then
Inc(AWidth, FWidgetSize + 2);
end;
function TaqButtonWidgetProperty.StrToWidget(
const AText: string): TaqCaptionButtonWidget;
var
i: TaqCaptionButtonWidget;
begin
Result := bwDropDown;
for i := Low(FWidgetNames) to High(FWidgetNames) do
if AText = FWidgetNames[i] then
begin
Result := i;
Break;
end;
end;
{$ENDIF}
{ TaqStyleNameEditor }
function TaqStyleProperty.GetManager: TaqDockingManager;
begin
Result := TaqDockingManager(GetComponent(0));
end;
function TaqStyleProperty.GetValue: string;
begin
Result := Manager.Style.Caption;
end;
procedure TaqStyleProperty.GetValues(Proc: TGetStrProc);
var
i: Integer;
begin
if Manager.StyleManager <> nil then
for i := 0 to Manager.StyleManager.Items.Count - 1 do
Proc(Manager.StyleManager.Items[i].Caption);
end;
procedure TaqStyleProperty.SetValue(const Value: string);
var
i: Integer;
Style: TaqDockingUIStyle;
begin
if Manager.StyleManager <> nil then
begin
Style := nil;
for i := 0 to Manager.StyleManager.Items.Count - 1 do
if Manager.StyleManager.Items[i].Caption = Value then
begin
Style := Manager.StyleManager.Items[i];
Break;
end;
Manager.Style := Style;
Modified;
end;
end;
{ TaqStyleManagerEditor }
procedure TaqStyleManagerEditor.Edit;
begin
ExecuteVerb(0);
end;
procedure TaqStyleManagerEditor.ExecuteVerb(Index: Integer);
begin
case Index of
0: ShowStyleEditor(GetManager, True);
{$IFDEF VCL}
3: ShellExecute(0, '', SAutomatedQAUrl, '', '', 0);
{$ENDIF}
end;
end;
function TaqStyleManagerEditor.GetManager: TaqStyleManager;
begin
Result := TaqStyleManager(Component);
end;
function TaqStyleManagerEditor.GetVerb(Index: Integer): string;
begin
case Index of
0: Result := SStylesEditItem;
1: Result := '-';
2: Result := Format('%s %s', [SProductName, SProductVersion]);
3: Result := SAutomatedQA;
end;
end;
function TaqStyleManagerEditor.GetVerbCount: Integer;
begin
Result := 4;
end;
{ TaqStylesEditor }
procedure TaqStylesEditor.Edit;
var
Comp: TPersistent;
begin
Comp := GetComponent(0);
if Comp is TaqStyleManager then
ShowStyleEditor(TaqStyleManagerFriend(Comp), True);
end;
function TaqStylesEditor.GetAttributes: TPropertyAttributes;
begin
Result := [paReadOnly, paDialog];
end;
function TaqStylesEditor.GetValue: string;
begin
Result := TaqStyles.ClassName;
end;
{ TActiveControlProperty }
procedure TActiveControlProperty.DoAddComponentName(const AName: string);
begin
FNames.Add(AName);
end;
function TActiveControlProperty.GetDockingControl: TaqDockingControl;
begin
Result := TaqDockingControl(GetComponent(0));
end;
procedure TActiveControlProperty.GetValues(Proc: TGetStrProc);
var
i: Integer;
Comp: TComponent;
begin
FNames := TStringList.Create;
try
Designer.GetComponentNames(GetTypeData(GetPropType), DoAddComponentName);
for i := FNames.Count - 1 downto 0 do
begin
Comp := Designer.GetComponent(FNames[i]);
if Comp <> nil then
begin
Assert(Comp is TaqControl, Format('TaqControl expected, %s found', [Comp.ClassName]));
if not IsChild(DockingControl.Handle, TaqControl(Comp).Handle) then
FNames.Delete(i);
end;
end;
TStringList(FNames).Sort;
for i := 0 to FNames.Count - 1 do
Proc(FNames[i]);
finally
FNames.Free;
end;
end;
{ TaqDockingStyleStyleProperty }
function TaqDockingStyleStyleProperty.GetAttributes: TPropertyAttributes;
begin
Result := inherited GetAttributes;
if not HasSubProperties then
Exclude(Result, paSubProperties);
Result := Result - [paReadOnly] +
[paValueList, paSortList, paRevertable, paVolatileSubProperties];
end;
function TaqDockingStyleStyleProperty.GetValue: string;
begin
if HasSubProperties then
Result := aqDockingStyles.Names[TPersistentClass(TaqDockingStyle(GetOrdValue).ClassType)]
else
Result := '';
end;
procedure TaqDockingStyleStyleProperty.GetValues(Proc: TGetStrProc);
var
I: Integer;
begin
for I := 0 to aqDockingStyles.Count - 1 do
Proc(aqDockingStyles.GetClassName(I));
end;
function TaqDockingStyleStyleProperty.HasSubProperties: Boolean;
var
I: Integer;
begin
for I := 0 to PropCount - 1 do
begin
Result := TaqDockingManager(GetComponent(I)).DockingStyle <> nil;
if not Result then Exit;
end;
Result := True;
end;
procedure TaqDockingStyleStyleProperty.SetValue(const Value: string);
var
DockingStyleClass: TaqDockingStyleClass;
I: Integer;
begin
DockingStyleClass := TaqDockingStyleClass(aqDockingStyles.FindClass(Value));
for I := 0 to PropCount - 1 do
TaqDockingManager(GetComponent(I)).DockingStyleClass := DockingStyleClass;
Modified;
end;
{ registration routine }
procedure Register;
begin
RegisterComponents(SPalletteName, [TaqDockingManager, TaqStyleManager, TaqDockingSite]);
RegisterNoIcon([TaqDockingControl]);
RegisterComponentEditor(TaqDockingManager, TaqDockingManagerEditor);
RegisterComponentEditor(TaqDockingSite, TaqDockingSiteEditor);
RegisterComponentEditor(TaqDockingControl, TaqDockingControlEditor);
RegisterComponentEditor(TaqStyleManager, TaqStyleManagerEditor);
RegisterPropertyEditor(TypeInfo(TaqStyles), TaqStyleManager, 'Items',
TaqStylesEditor);
RegisterPropertyEditor(TypeInfo(TaqDockingControls), TaqDockingManager, 'Items',
TaqDockingControlsEditor);
RegisterPropertyEditor(TypeInfo(TaqDockingUIStyle), TaqDockingManager, 'Style',
TaqStyleProperty);
RegisterPropertyEditor(TypeInfo(TaqControl), TaqDockingControl, 'ActiveControl',
TActiveControlProperty);
RegisterPropertyEditor(TypeInfo(string), TaqDockingSite, 'Hint', nil);
RegisterPropertyEditor(TypeInfo(string), TaqDockingControl, 'Hint', nil);
RegisterPropertyEditor(TypeInfo(string), TaqDockingManager, 'DockingStyleClassName', nil);
RegisterPropertyEditor(TypeInfo(TaqDockingStyle), TaqDockingManager, 'DockingStyle', TaqDockingStyleStyleProperty);
RegisterPropertiesInCategory('Auto Hide', TaqDockingManager,
['AutoHideCaptions', 'AutoHideContainers', 'AutoHideEnabled', 'AutoHideInterval',
'AutoHideSpeed', 'AutoHideStartAction', 'AutoHideTabs', 'AutoShowSpeed']);
RegisterPropertiesInCategory('Docking', TaqDockingManager, ['Enabled', 'AutoDockKey',
'AutoDragDocking', 'AutoDragKey', 'DockingStyle']);
RegisterPropertiesInCategory('Visual', TaqDockingManager, ['ShowDisabledButtons',
'ShowImages', 'ShowContainerCaption', 'CaptionButtons']);
RegisterPropertiesInCategory('Floating Forms', TaqDockingManager,
['FloatingFormConstraints', 'FloatingFormOnTop', 'FloatingFormType']);
RegisterPropertiesInCategory('Persistence', TaqDockingManager,
['StoreKind', 'StoreOptions', 'StorePath']);
{$IFDEF VCL}
RegisterPropertyEditor(TypeInfo(TaqCaptionButtonWidget), TaqCaptionButton,
'', TaqButtonWidgetProperty);
RegisterPropertyEditor(TypeInfo(TaqCaptionButtonWidgets), TaqThemedUIStyle,
'', TaqCaptionButtonProperty);
RegisterPropertyEditor(TypeInfo(Integer), TaqCaptionButtonWidgets, 'Tag', nil);
{$ENDIF}
{$IFDEF DELPHI10}
RegisterComponentGuidelines(TaqDockingControl, TComponentGuideLines);
{$ENDIF}
end;
initialization
aqIDEDesigner := TaqDelphiDesigner.Create;
finalization
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -