mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-21 09:58:13 +00:00
UPD: Creating menu toolbar buttons.
This commit is contained in:
parent
66e7033548
commit
9ebbfccf78
4 changed files with 451 additions and 183 deletions
|
|
@ -33,7 +33,7 @@ interface
|
|||
uses
|
||||
Classes, SysUtils, LResources, Forms, Controls, ComCtrls,
|
||||
Graphics, Dialogs, ExtCtrls, Buttons, FileUtil, Menus,
|
||||
DCXmlConfig, KASToolItems, DCBasicTypes;
|
||||
DCXmlConfig, KASToolItems;
|
||||
|
||||
type
|
||||
TOnToolButtonClick = procedure (Sender: TObject) of object;
|
||||
|
|
@ -48,17 +48,21 @@ type
|
|||
TOnConfigLoadItem = function (Config: TXmlConfig; Node: TXmlNode): TKASToolItem of object;
|
||||
TOnToolItemShortcutsHint = function (ToolItem: TKASNormalItem): String of object;
|
||||
|
||||
TKASToolBar = class;
|
||||
|
||||
{ TKASToolButton }
|
||||
|
||||
TKASToolButton = class(TSpeedButton)
|
||||
strict private
|
||||
FToolItem: TKASToolItem;
|
||||
function GetToolBar: TKASToolBar;
|
||||
protected
|
||||
procedure CalculatePreferredSize(var PreferredWidth,
|
||||
PreferredHeight: integer; WithThemeSpace: Boolean); override;
|
||||
public
|
||||
constructor Create(AOwner: TComponent; Item: TKASToolItem); reintroduce;
|
||||
destructor Destroy; override;
|
||||
property ToolBar: TKASToolBar read GetToolBar;
|
||||
property ToolItem: TKASToolItem read FToolItem;
|
||||
end;
|
||||
|
||||
|
|
@ -77,14 +81,16 @@ type
|
|||
private
|
||||
FButtonHeight: Integer;
|
||||
FButtonWidth: Integer;
|
||||
FRowHeight: Integer;
|
||||
FUpdateCount: Integer;
|
||||
FFlat: Boolean;
|
||||
FGlyphSize: Integer;
|
||||
FRadioToolBar: Boolean;
|
||||
FRowHeight: Integer;
|
||||
FShowDividerAsButton: Boolean;
|
||||
FFlat: Boolean;
|
||||
FToolPopupMenu: TPopupMenu;
|
||||
FToolItemExecutors: TFPList;
|
||||
FToolItems: TKASToolBarItems;
|
||||
FToolPopupMenu: TPopupMenu;
|
||||
FOwnsToolItems: Boolean;
|
||||
FUpdateCount: Integer;
|
||||
FOnToolButtonClick: TOnToolButtonClick;
|
||||
FOnToolButtonMouseDown: TOnToolButtonMouseUpDown;
|
||||
FOnToolButtonMouseUp: TOnToolButtonMouseUpDown;
|
||||
|
|
@ -99,6 +105,7 @@ type
|
|||
FResizeButtonsNeeded: Boolean;
|
||||
procedure AssignToolButtonProperties(ToolButton: TKASToolButton);
|
||||
procedure ClearExecutors;
|
||||
function CreateButton(Item: TKASToolItem): TKASToolButton;
|
||||
function DoExecuteToolItem(Item: TKASToolItem): Boolean;
|
||||
function GetChangePath: String;
|
||||
function GetEnvVar: String;
|
||||
|
|
@ -143,12 +150,13 @@ type
|
|||
procedure ClickItem(ToolItemID: String); overload;
|
||||
function InsertButton(InsertAt: Integer; Item: TKASToolItem): TKASToolButton;
|
||||
function InsertButton(InsertAt: TKASToolButton; Item: TKASToolItem): TKASToolButton;
|
||||
procedure MoveButton(ButtonIndex, MovePosition: integer);
|
||||
procedure MoveButton(ButtonIndex, MovePosition: Integer);
|
||||
procedure RemoveButton(Index: Integer);
|
||||
procedure RemoveButton(Button: TKASToolButton);
|
||||
procedure RemoveToolItemExecutor(ExecuteFunction: TOnToolItemExecute);
|
||||
procedure UncheckAllButtons;
|
||||
procedure UpdateIcon(ToolButton: TKASToolButton);
|
||||
procedure UseItems(AItems: TKASToolBarItems);
|
||||
|
||||
procedure LoadConfiguration(Config: TXmlConfig; RootNode: TXmlNode;
|
||||
Loader: TKASToolBarLoader);
|
||||
|
|
@ -217,8 +225,8 @@ begin
|
|||
if InsertAt > ButtonList.Count then
|
||||
InsertAt:= ButtonList.Count;
|
||||
|
||||
ToolButton.Parent:= Self;
|
||||
ButtonList.Insert(InsertAt, ToolButton);
|
||||
FToolItems.Insert(InsertAt, ToolButton.ToolItem);
|
||||
|
||||
UpdateButtonsTags;
|
||||
ResizeButtons;
|
||||
|
|
@ -614,14 +622,14 @@ begin
|
|||
if FRadioToolBar and not Button.Down then
|
||||
Button.Down := True;
|
||||
|
||||
if Button.ToolItem is TKASMenuItem then
|
||||
if not DoExecuteToolItem(Button.ToolItem) then
|
||||
begin
|
||||
ShowMenu(Button);
|
||||
end
|
||||
else if not DoExecuteToolItem(Button.ToolItem) and
|
||||
Assigned(FOnToolButtonClick) then
|
||||
begin
|
||||
FOnToolButtonClick(Button);
|
||||
if Assigned(FOnToolButtonClick) then
|
||||
FOnToolButtonClick(Button)
|
||||
else if Button.ToolItem is TKASMenuItem then
|
||||
begin
|
||||
ShowMenu(Button);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
|
@ -671,9 +679,10 @@ begin
|
|||
FOnToolButtonEndDrag(Sender, Target, X, Y);
|
||||
end;
|
||||
|
||||
procedure TKASToolBar.MoveButton(ButtonIndex, MovePosition: integer);
|
||||
procedure TKASToolBar.MoveButton(ButtonIndex, MovePosition: Integer);
|
||||
begin
|
||||
ButtonList.Move(ButtonIndex, MovePosition);
|
||||
FToolItems.Move(ButtonIndex, MovePosition);
|
||||
UpdateButtonsTags;
|
||||
ResizeButtons;
|
||||
end;
|
||||
|
|
@ -706,6 +715,35 @@ begin
|
|||
end;
|
||||
end;
|
||||
|
||||
procedure TKASToolBar.UseItems(AItems: TKASToolBarItems);
|
||||
var
|
||||
i: Integer;
|
||||
Button: TKASToolButton;
|
||||
begin
|
||||
if Assigned(AItems) then
|
||||
begin
|
||||
BeginUpdate;
|
||||
|
||||
Clear;
|
||||
if FOwnsToolItems then
|
||||
FToolItems.Free;
|
||||
FToolItems := AItems;
|
||||
FOwnsToolItems := False;
|
||||
|
||||
// Insert the existing items as buttons.
|
||||
for i := 0 to FToolItems.Count - 1 do
|
||||
begin
|
||||
Button := CreateButton(FToolItems.Items[i]);
|
||||
if Assigned(Button) then
|
||||
ButtonList.Insert(ButtonCount, Button);
|
||||
end;
|
||||
UpdateButtonsTags;
|
||||
ResizeButtons;
|
||||
|
||||
EndUpdate;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TKASToolBar.Clear;
|
||||
var
|
||||
I: Integer;
|
||||
|
|
@ -715,6 +753,8 @@ begin
|
|||
for I := 0 to ButtonList.Count - 1 do
|
||||
TKASToolButton(ButtonList.Items[I]).Free;
|
||||
ButtonList.Clear;
|
||||
if Assigned(FToolItems) then
|
||||
FToolItems.Clear;
|
||||
|
||||
EndUpdate;
|
||||
end;
|
||||
|
|
@ -769,14 +809,56 @@ begin
|
|||
FButtonHeight := 22;
|
||||
FKASToolBarFlags := [];
|
||||
FToolItemExecutors := TFPList.Create;
|
||||
FToolItems := TKASToolBarItems.Create;
|
||||
FOwnsToolItems := True;
|
||||
end;
|
||||
|
||||
function TKASToolBar.CreateButton(Item: TKASToolItem): TKASToolButton;
|
||||
begin
|
||||
if Assigned(Item) then
|
||||
begin
|
||||
if FOwnsToolItems then
|
||||
Item.SetToolOwner(Self);
|
||||
|
||||
if Item is TKASSeparatorItem then
|
||||
begin
|
||||
Result := TKASToolDivider.Create(Self, Item);
|
||||
end
|
||||
else
|
||||
begin
|
||||
Result := TKASToolButton.Create(Self, Item);
|
||||
Result.ShowHint := True;
|
||||
Result.Caption := Item.GetEffectiveText;
|
||||
Result.Hint := Item.GetEffectiveHint;
|
||||
end;
|
||||
|
||||
Result.Flat := FFlat;
|
||||
if FRadioToolBar then
|
||||
begin
|
||||
Result.GroupIndex := 1;
|
||||
Result.AllowAllUp := True;
|
||||
end;
|
||||
|
||||
Result.ShowCaption := ShowCaptions;
|
||||
UpdateIcon(Result);
|
||||
AssignToolButtonProperties(Result);
|
||||
|
||||
Result.Parent := Self;
|
||||
end
|
||||
else
|
||||
Result := nil;
|
||||
end;
|
||||
|
||||
destructor TKASToolBar.Destroy;
|
||||
begin
|
||||
if not FOwnsToolItems then
|
||||
FToolItems := nil; // Unassign before Clear so that items are not cleared.
|
||||
Clear;
|
||||
inherited Destroy;
|
||||
ClearExecutors;
|
||||
FToolItemExecutors.Free;
|
||||
if FOwnsToolItems then
|
||||
FToolItems.Free;
|
||||
end;
|
||||
|
||||
function TKASToolBar.DoExecuteToolItem(Item: TKASToolItem): Boolean;
|
||||
|
|
@ -841,35 +923,9 @@ end;
|
|||
|
||||
function TKASToolBar.InsertButton(InsertAt: Integer; Item: TKASToolItem): TKASToolButton;
|
||||
begin
|
||||
if Assigned(Item) then
|
||||
begin
|
||||
Item.SetToolOwner(Self);
|
||||
if Item is TKASSeparatorItem then
|
||||
begin
|
||||
Result := TKASToolDivider.Create(Self, Item);
|
||||
end
|
||||
else
|
||||
begin
|
||||
Result := TKASToolButton.Create(Self, Item);
|
||||
Result.ShowHint := True;
|
||||
Result.Caption := Item.GetEffectiveText;
|
||||
Result.Hint := Item.GetEffectiveHint;
|
||||
end;
|
||||
|
||||
Result.Flat := FFlat;
|
||||
if FRadioToolBar then
|
||||
begin
|
||||
Result.GroupIndex := 1;
|
||||
Result.AllowAllUp := True;
|
||||
end;
|
||||
Result.ShowCaption := ShowCaptions;
|
||||
|
||||
UpdateIcon(Result);
|
||||
AssignToolButtonProperties(Result);
|
||||
Result := CreateButton(Item);
|
||||
if Assigned(Result) then
|
||||
InsertButton(InsertAt, Result);
|
||||
end
|
||||
else
|
||||
Result := nil;
|
||||
end;
|
||||
|
||||
procedure TKASToolBar.RemoveButton(Index: Integer);
|
||||
|
|
@ -879,6 +935,7 @@ begin
|
|||
Button := TKASToolButton(ButtonList.Items[Index]);
|
||||
ButtonList.Delete(Index);
|
||||
Button.Free;
|
||||
FToolItems.Remove(Index);
|
||||
UpdateButtonsTags;
|
||||
Resize;
|
||||
end;
|
||||
|
|
@ -926,11 +983,9 @@ procedure TKASToolButton.CalculatePreferredSize(var PreferredWidth,
|
|||
PreferredHeight: integer; WithThemeSpace: Boolean);
|
||||
var
|
||||
TextSize: TSize;
|
||||
ToolBar: TKASToolBar;
|
||||
begin
|
||||
if Assigned(Parent) and (Parent is TKASToolBar) then
|
||||
if Assigned(Parent) then
|
||||
begin
|
||||
ToolBar := TKASToolBar(Parent);
|
||||
if ShowCaption and (Caption <> EmptyStr) then
|
||||
begin
|
||||
// Size to extent of the icon + caption.
|
||||
|
|
@ -958,7 +1013,11 @@ end;
|
|||
destructor TKASToolButton.Destroy;
|
||||
begin
|
||||
inherited Destroy;
|
||||
FToolItem.Free;
|
||||
end;
|
||||
|
||||
function TKASToolButton.GetToolBar: TKASToolBar;
|
||||
begin
|
||||
Result := Parent as TKASToolBar;
|
||||
end;
|
||||
|
||||
{ TKASToolDivider }
|
||||
|
|
|
|||
|
|
@ -138,6 +138,7 @@ type
|
|||
function Add(Item: TKASToolItem): Integer;
|
||||
procedure Clear;
|
||||
function Insert(InsertAt: Integer; Item: TKASToolItem): Integer;
|
||||
procedure Move(FromIndex, ToIndex: Integer);
|
||||
procedure Remove(Index: Integer);
|
||||
property Count: Integer read GetButtonCount;
|
||||
property Items[Index: Integer]: TKASToolItem read GetButton write SetButton; default;
|
||||
|
|
@ -490,6 +491,11 @@ begin
|
|||
Result := InsertAt;
|
||||
end;
|
||||
|
||||
procedure TKASToolBarItems.Move(FromIndex, ToIndex: Integer);
|
||||
begin
|
||||
FButtons.Move(FromIndex, ToIndex);
|
||||
end;
|
||||
|
||||
function TKASToolBarItems.Add(Item: TKASToolItem): Integer;
|
||||
begin
|
||||
Result := FButtons.Add(Item);
|
||||
|
|
|
|||
|
|
@ -142,33 +142,7 @@ inherited frmOptionsToolbar: TfrmOptionsToolbar
|
|||
VertScrollBar.Page = 82
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Around = 6
|
||||
ClientHeight = 82
|
||||
ClientWidth = 834
|
||||
TabOrder = 1
|
||||
OnClick = sboxToolbarsClick
|
||||
object ktbBar: TKASToolBar
|
||||
Left = 1
|
||||
Height = 24
|
||||
Top = 0
|
||||
Width = 832
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 1
|
||||
BorderSpacing.Right = 1
|
||||
Constraints.MinHeight = 24
|
||||
TabOrder = 0
|
||||
OnClick = ktbBarClick
|
||||
OnToolItemShortcutsHint = ktbBarToolItemShortcutsHint
|
||||
OnLoadButtonGlyph = ktbBarLoadButtonGlyph
|
||||
OnToolButtonClick = ktbBarToolButtonClick
|
||||
OnToolButtonMouseDown = ktbBarToolButtonMouseDown
|
||||
OnToolButtonMouseUp = ktbBarToolButtonMouseUp
|
||||
OnToolButtonMouseMove = ktbBarToolButtonMouseMove
|
||||
OnToolButtonDragDrop = ktbBarToolButtonDragDrop
|
||||
OnToolButtonDragOver = ktbBarToolButtonDragOver
|
||||
RadioToolBar = True
|
||||
GlyphSize = 16
|
||||
ShowDividerAsButton = True
|
||||
end
|
||||
end
|
||||
object pnlFullToolbarButtons: TPanel[2]
|
||||
AnchorSideLeft.Control = Owner
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ uses
|
|||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
|
||||
ComCtrls, ExtCtrls, Buttons, fOptionsFrame, KASToolBar, KASToolItems,
|
||||
uFormCommands, uHotkeyManager, DCBasicTypes,
|
||||
fOptionsHotkeysEditHotkey;
|
||||
fOptionsHotkeysEditHotkey, DCXmlConfig;
|
||||
|
||||
type
|
||||
|
||||
|
|
@ -53,7 +53,6 @@ type
|
|||
edtToolTip: TEdit;
|
||||
gbGroupBox: TGroupBox;
|
||||
edtIconFileName: TEdit;
|
||||
ktbBar: TKASToolBar;
|
||||
lblInternalParameters: TLabel;
|
||||
lblBarSize: TLabel;
|
||||
lblBarSizeValue: TLabel;
|
||||
|
|
@ -86,24 +85,21 @@ type
|
|||
procedure cbInternalCommandSelect(Sender: TObject);
|
||||
procedure cbFlatButtonsChange(Sender: TObject);
|
||||
procedure edtIconFileNameChange(Sender: TObject);
|
||||
procedure ktbBarClick(Sender: TObject);
|
||||
function ktbBarLoadButtonGlyph(ToolItem: TKASToolItem; iIconSize: Integer;
|
||||
function ToolbarLoadButtonGlyph(ToolItem: TKASToolItem; iIconSize: Integer;
|
||||
clBackColor: TColor): TBitmap;
|
||||
procedure ktbBarToolButtonClick(Sender: TObject);
|
||||
procedure ktbBarToolButtonDragDrop(Sender, Source: TObject; X, Y: Integer;
|
||||
NumberOfButton: Integer);
|
||||
procedure ktbBarToolButtonDragOver(Sender, Source: TObject; X, Y: Integer;
|
||||
procedure ToolbarToolButtonClick(Sender: TObject);
|
||||
procedure ToolbarToolButtonDragDrop(Sender, Source: TObject; X, Y: Integer);
|
||||
procedure ToolbarToolButtonDragOver(Sender, Source: TObject; X, Y: Integer;
|
||||
State: TDragState; var Accept: Boolean; NumberOfButton: Integer);
|
||||
procedure ktbBarToolButtonMouseDown(Sender: TObject; Button: TMouseButton;
|
||||
Shift: TShiftState; X, Y: Integer; NumberOfButton: Integer);
|
||||
procedure ktbBarToolButtonMouseMove(Sender: TObject; Shift: TShiftState; X,
|
||||
procedure ToolbarToolButtonMouseDown(Sender: TObject; Button: TMouseButton;
|
||||
Shift: TShiftState; X, Y: Integer);
|
||||
procedure ToolbarToolButtonMouseMove(Sender: TObject; Shift: TShiftState; X,
|
||||
Y: Integer; NumberOfButton: Integer);
|
||||
procedure ktbBarToolButtonMouseUp(Sender: TObject; Button: TMouseButton;
|
||||
Shift: TShiftState; X, Y: Integer; NumberOfButton: Integer);
|
||||
procedure ToolbarToolButtonMouseUp(Sender: TObject; Button: TMouseButton;
|
||||
Shift: TShiftState; X, Y: Integer);
|
||||
procedure btnOpenIconClick(Sender: TObject);
|
||||
function ktbBarToolItemShortcutsHint(ToolItem: TKASNormalItem): String;
|
||||
function ToolbarToolItemShortcutsHint(ToolItem: TKASNormalItem): String;
|
||||
procedure rgToolItemTypeSelectionChanged(Sender: TObject);
|
||||
procedure sboxToolbarsClick(Sender: TObject);
|
||||
procedure trbBarSizeChange(Sender: TObject);
|
||||
procedure trbIconSizeChange(Sender: TObject);
|
||||
private
|
||||
|
|
@ -111,12 +107,20 @@ type
|
|||
FEditForm: TfrmEditHotkey;
|
||||
FFormCommands: IFormCommands;
|
||||
FToolButtonMouseX, FToolButtonMouseY, FToolDragButtonNumber: Integer; // For dragging
|
||||
FUpdatingIconText: Boolean;
|
||||
FUpdatingButtonType: Boolean;
|
||||
FUpdatingIconText: Boolean;
|
||||
function AddNewSubToolbar(ToolItem: TKASMenuItem): TKASToolBar;
|
||||
procedure ApplyEditControls;
|
||||
procedure CloseToolbarsBelowCurrentButton;
|
||||
procedure CloseToolbar(Index: Integer);
|
||||
function CreateToolbar(Items: TKASToolBarItems): TKASToolBar;
|
||||
class function FindHotkey(NormalItem: TKASNormalItem; Hotkeys: THotkeys): THotkey;
|
||||
class function FindHotkey(NormalItem: TKASNormalItem): THotkey;
|
||||
function GetTopToolbar: TKASToolBar;
|
||||
procedure LoadCurrentButton;
|
||||
procedure LoadToolbar(ToolBar: TKASToolBar; Config: TXmlConfig; RootNode: TXmlNode);
|
||||
procedure MarkCurrentToolbar;
|
||||
procedure PressButtonDown(Button: TKASToolButton);
|
||||
procedure UpdateIcon(Icon: String);
|
||||
protected
|
||||
procedure Init; override;
|
||||
|
|
@ -134,8 +138,8 @@ implementation
|
|||
{$R *.lfm}
|
||||
|
||||
uses
|
||||
LCLVersion,
|
||||
DCStrUtils, uGlobs, uLng, DCXmlConfig, uOSForms, uDCUtils, uPixMapManager,
|
||||
LCLVersion, Toolwin,
|
||||
DCStrUtils, uGlobs, uLng, uOSForms, uDCUtils, uPixMapManager,
|
||||
uKASToolItemsExtended,
|
||||
fMain;
|
||||
|
||||
|
|
@ -165,7 +169,17 @@ begin
|
|||
Result := rsOptionsEditorToolbar;
|
||||
end;
|
||||
|
||||
function TfrmOptionsToolbar.GetTopToolbar: TKASToolBar;
|
||||
begin
|
||||
if sboxToolbars.ControlCount > 0 then
|
||||
Result := sboxToolbars.Controls[0] as TKASToolBar
|
||||
else
|
||||
Result := nil;
|
||||
end;
|
||||
|
||||
procedure TfrmOptionsToolbar.Init;
|
||||
var
|
||||
ToolBar: TKASToolBar;
|
||||
begin
|
||||
FFormCommands := frmMain as IFormCommands;
|
||||
FFormCommands.GetCommandsList(cbInternalCommand.Items);
|
||||
|
|
@ -179,12 +193,17 @@ begin
|
|||
{$ELSE}
|
||||
rgToolItemType.OnClick := @rgToolItemTypeSelectionChanged;
|
||||
{$ENDIF}
|
||||
ToolBar := CreateToolbar(nil);
|
||||
if Assigned(ToolBar) then
|
||||
// Put first one on top so that any other toolbars
|
||||
// created before Show are put below it.
|
||||
ToolBar.Top := 0;
|
||||
end;
|
||||
|
||||
procedure TfrmOptionsToolbar.Load;
|
||||
var
|
||||
ToolBarLoader: TKASToolBarExtendedLoader;
|
||||
ToolBarNode: TXmlNode;
|
||||
ToolBar: TKASToolBar;
|
||||
begin
|
||||
trbBarSize.Position := gToolBarButtonSize div 2;
|
||||
trbIconSize.Position := gToolBarIconSize div 2;
|
||||
|
|
@ -193,21 +212,14 @@ begin
|
|||
lblBarSizeValue.Caption := IntToStr(trbBarSize.Position*2);
|
||||
lblIconSizeValue.Caption := IntToStr(trbIconSize.Position*2);
|
||||
|
||||
ktbBar.GlyphSize := gToolBarIconSize;
|
||||
ktbBar.SetButtonSize(gToolBarButtonSize, gToolBarButtonSize);
|
||||
ktbBar.Clear;
|
||||
ToolBarLoader := TKASToolBarExtendedLoader.Create;
|
||||
try
|
||||
ToolBarNode := gConfig.FindNode(gConfig.RootNode, 'Toolbars/MainToolbar', False);
|
||||
if Assigned(ToolBarNode) then
|
||||
begin
|
||||
ktbBar.LoadConfiguration(gConfig, ToolBarNode, ToolBarLoader);
|
||||
if ktbBar.ButtonCount > 0 then
|
||||
ktbBar.Buttons[0].Click;
|
||||
end;
|
||||
finally
|
||||
ToolBarLoader.Free;
|
||||
end;
|
||||
FCurrentButton := nil;
|
||||
CloseToolbarsBelowCurrentButton;
|
||||
|
||||
ToolBar := GetTopToolbar;
|
||||
ToolBarNode := gConfig.FindNode(gConfig.RootNode, 'Toolbars/MainToolbar', False);
|
||||
LoadToolbar(ToolBar, gConfig, ToolBarNode);
|
||||
if ToolBar.ButtonCount > 0 then
|
||||
PressButtonDown(ToolBar.Buttons[0]);
|
||||
end;
|
||||
|
||||
procedure TfrmOptionsToolbar.LoadCurrentButton;
|
||||
|
|
@ -226,6 +238,8 @@ begin
|
|||
|
||||
DisableAutoSizing;
|
||||
try
|
||||
CloseToolbarsBelowCurrentButton;
|
||||
|
||||
if Assigned(FCurrentButton) then
|
||||
begin
|
||||
ToolItem := FCurrentButton.ToolItem;
|
||||
|
|
@ -264,7 +278,10 @@ begin
|
|||
edtStartPath.Text := ProgramItem.StartPath;
|
||||
end;
|
||||
if ToolItem is TKASMenuItem then
|
||||
begin
|
||||
ButtonTypeIndex := 3;
|
||||
AddNewSubToolbar(TKASMenuItem(ToolItem));
|
||||
end;
|
||||
end;
|
||||
|
||||
FUpdatingButtonType := True;
|
||||
|
|
@ -294,13 +311,88 @@ begin
|
|||
btnCloneButton.Visible := Assigned(FCurrentButton);
|
||||
btnDeleteButton.Visible := Assigned(FCurrentButton);
|
||||
rgToolItemType.Visible := Assigned(FCurrentButton);
|
||||
|
||||
MarkCurrentToolbar;
|
||||
finally
|
||||
EnableAutoSizing;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmOptionsToolbar.LoadToolbar(ToolBar: TKASToolBar; Config: TXmlConfig; RootNode: TXmlNode);
|
||||
var
|
||||
ToolBarLoader: TKASToolBarExtendedLoader;
|
||||
begin
|
||||
ToolBarLoader := TKASToolBarExtendedLoader.Create;
|
||||
try
|
||||
if Assigned(RootNode) then
|
||||
ToolBar.LoadConfiguration(Config, RootNode, ToolBarLoader);
|
||||
finally
|
||||
ToolBarLoader.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmOptionsToolbar.MarkCurrentToolbar;
|
||||
var
|
||||
MarkToolBar, ToolBar, PrevToolBar: TKASToolBar;
|
||||
i: Integer;
|
||||
begin
|
||||
if Assigned(FCurrentButton) then
|
||||
MarkToolBar := FCurrentButton.ToolBar
|
||||
else
|
||||
MarkToolBar := GetTopToolbar;
|
||||
|
||||
if Assigned(MarkToolBar) then
|
||||
begin
|
||||
DisableAutoSizing;
|
||||
try
|
||||
PrevToolBar := nil;
|
||||
for i := 0 to sboxToolbars.ControlCount - 1 do
|
||||
begin
|
||||
ToolBar := sboxToolbars.Controls[i] as TKASToolBar;
|
||||
if ToolBar = MarkToolBar then
|
||||
begin
|
||||
if Assigned(PrevToolBar) then
|
||||
begin
|
||||
PrevToolBar.EdgeBorders := [ebBottom];
|
||||
PrevToolBar.EdgeInner := esLowered;
|
||||
PrevToolBar.EdgeOuter := esLowered;
|
||||
end;
|
||||
ToolBar.EdgeInner := esRaised;
|
||||
ToolBar.EdgeOuter := esRaised;
|
||||
ToolBar.EdgeBorders := [ebTop, ebBottom];
|
||||
end
|
||||
else if PrevToolBar = MarkToolBar then
|
||||
begin
|
||||
ToolBar.EdgeInner := esLowered;
|
||||
ToolBar.EdgeOuter := esLowered;
|
||||
ToolBar.EdgeBorders := [ebTop];
|
||||
end
|
||||
else
|
||||
begin
|
||||
ToolBar.EdgeInner := esNone;
|
||||
ToolBar.EdgeOuter := esNone;
|
||||
ToolBar.EdgeBorders := [];
|
||||
end;
|
||||
PrevToolBar := ToolBar;
|
||||
end;
|
||||
PrevToolBar.EdgeOuter := esRaised;
|
||||
PrevToolBar.EdgeBorders := [ebBottom];
|
||||
finally
|
||||
EnableAutoSizing;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmOptionsToolbar.PressButtonDown(Button: TKASToolButton);
|
||||
begin
|
||||
FUpdatingButtonType := True;
|
||||
Button.Click;
|
||||
FUpdatingButtonType := False;
|
||||
end;
|
||||
|
||||
procedure TfrmOptionsToolbar.rgToolItemTypeSelectionChanged(Sender: TObject);
|
||||
var
|
||||
ToolBar: TKASToolBar;
|
||||
ToolItem: TKASToolItem = nil;
|
||||
NewButton: TKASToolButton;
|
||||
begin
|
||||
|
|
@ -314,12 +406,13 @@ begin
|
|||
end;
|
||||
if Assigned(ToolItem) then
|
||||
begin
|
||||
ToolBar := FCurrentButton.ToolBar;
|
||||
// Copy what you can from previous button type.
|
||||
ToolItem.Assign(FCurrentButton.ToolItem);
|
||||
NewButton := ktbBar.InsertButton(FCurrentButton, ToolItem);
|
||||
ktbBar.RemoveButton(FCurrentButton);
|
||||
NewButton := ToolBar.InsertButton(FCurrentButton, ToolItem);
|
||||
ToolBar.RemoveButton(FCurrentButton);
|
||||
FCurrentButton := NewButton;
|
||||
NewButton.Click;
|
||||
PressButtonDown(NewButton);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
|
@ -327,6 +420,7 @@ end;
|
|||
function TfrmOptionsToolbar.Save: TOptionsEditorSaveFlags;
|
||||
var
|
||||
ToolBarNode: TXmlNode;
|
||||
ToolBar: TKASToolBar;
|
||||
begin
|
||||
ApplyEditControls;
|
||||
|
||||
|
|
@ -334,9 +428,13 @@ begin
|
|||
gToolBarButtonSize := trbBarSize.Position * 2;
|
||||
gToolBarIconSize := trbIconSize.Position * 2;
|
||||
|
||||
ToolBarNode := gConfig.FindNode(gConfig.RootNode, 'Toolbars/MainToolbar', True);
|
||||
gConfig.ClearNode(ToolBarNode);
|
||||
ktbBar.SaveConfiguration(gConfig, ToolBarNode);
|
||||
ToolBar := GetTopToolbar;
|
||||
if Assigned(ToolBar) then
|
||||
begin
|
||||
ToolBarNode := gConfig.FindNode(gConfig.RootNode, 'Toolbars/MainToolbar', True);
|
||||
gConfig.ClearNode(ToolBarNode);
|
||||
Toolbar.SaveConfiguration(gConfig, ToolBarNode);
|
||||
end;
|
||||
|
||||
Result := [];
|
||||
end;
|
||||
|
|
@ -350,6 +448,41 @@ begin
|
|||
edtIconFileName.Text := sFileName;
|
||||
end;
|
||||
|
||||
function TfrmOptionsToolbar.CreateToolbar(Items: TKASToolBarItems): TKASToolBar;
|
||||
begin
|
||||
Result := TKASToolBar.Create(sboxToolbars);
|
||||
Result.AutoSize := True;
|
||||
Result.Constraints.MinHeight := 24;
|
||||
Result.Flat := cbFlatButtons.Checked;
|
||||
Result.GlyphSize := trbIconSize.Position * 2;
|
||||
Result.RadioToolBar := True;
|
||||
Result.SetButtonSize(trbBarSize.Position * 2, trbBarSize.Position * 2);
|
||||
Result.ShowDividerAsButton := True;
|
||||
Result.OnLoadButtonGlyph := @ToolbarLoadButtonGlyph;
|
||||
Result.OnToolButtonClick := @ToolbarToolButtonClick;
|
||||
Result.OnToolButtonMouseDown := @ToolbarToolButtonMouseDown;
|
||||
Result.OnToolButtonMouseUp := @ToolbarToolButtonMouseUp;
|
||||
Result.OnToolButtonMouseMove := @ToolbarToolButtonMouseMove;
|
||||
Result.OnToolButtonDragDrop := @ToolbarToolButtonDragDrop;
|
||||
Result.OnToolButtonDragOver := @ToolbarToolButtonDragOver;
|
||||
Result.OnToolItemShortcutsHint := @ToolbarToolItemShortcutsHint;
|
||||
Result.BorderSpacing.Bottom := 2;
|
||||
Result.EdgeInner := esNone;
|
||||
Result.EdgeOuter := esNone;
|
||||
Result.EdgeBorders := [];
|
||||
Result.Top := MaxInt; // So that it is put under all existing toolbars (because of Align=alTop).
|
||||
|
||||
Result.UseItems(Items);
|
||||
Result.Parent := sboxToolbars;
|
||||
end;
|
||||
|
||||
function TfrmOptionsToolbar.AddNewSubToolbar(ToolItem: TKASMenuItem): TKASToolBar;
|
||||
begin
|
||||
Result := CreateToolbar(ToolItem.SubItems);
|
||||
if Result.ButtonCount = 0 then
|
||||
Result.AddButton(TKASCommandItem.Create);
|
||||
end;
|
||||
|
||||
procedure TfrmOptionsToolbar.ApplyEditControls;
|
||||
var
|
||||
ToolItem: TKASToolItem;
|
||||
|
|
@ -384,10 +517,22 @@ end;
|
|||
|
||||
(*Add new button on tool bar*)
|
||||
procedure TfrmOptionsToolbar.btnInsertButtonClick(Sender: TObject);
|
||||
var
|
||||
ToolBar: TKASToolBar;
|
||||
begin
|
||||
ApplyEditControls;
|
||||
FCurrentButton := ktbBar.InsertButton(FCurrentButton, TKASCommandItem.Create);
|
||||
FCurrentButton.Click;
|
||||
if Assigned(FCurrentButton) then
|
||||
begin
|
||||
ApplyEditControls;
|
||||
ToolBar := FCurrentButton.ToolBar;
|
||||
end
|
||||
else
|
||||
ToolBar := GetTopToolbar;
|
||||
|
||||
if Assigned(ToolBar) then
|
||||
begin
|
||||
FCurrentButton := ToolBar.InsertButton(FCurrentButton, TKASCommandItem.Create);
|
||||
PressButtonDown(FCurrentButton);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmOptionsToolbar.btnRemoveHotKeyClick(Sender: TObject);
|
||||
|
|
@ -425,29 +570,37 @@ var
|
|||
SourceItem: TKASToolItem;
|
||||
Button: TKASToolButton;
|
||||
begin
|
||||
ApplyEditControls;
|
||||
SourceItem := FCurrentButton.ToolItem;
|
||||
Button := ktbBar.InsertButton(FCurrentButton, SourceItem.Clone);
|
||||
Button.Click;
|
||||
if Assigned(FCurrentButton) then
|
||||
begin
|
||||
ApplyEditControls;
|
||||
SourceItem := FCurrentButton.ToolItem;
|
||||
Button := FCurrentButton.ToolBar.InsertButton(FCurrentButton, SourceItem.Clone);
|
||||
PressButtonDown(Button);
|
||||
end;
|
||||
end;
|
||||
|
||||
(*Remove current button*)
|
||||
procedure TfrmOptionsToolbar.btnDeleteButtonClick(Sender: TObject);
|
||||
var
|
||||
NextButton: Integer;
|
||||
ToolBar: TKASToolBar;
|
||||
begin
|
||||
if Assigned(FCurrentButton) then
|
||||
begin
|
||||
ToolBar := FCurrentButton.ToolBar;
|
||||
NextButton := FCurrentButton.Tag;
|
||||
ktbBar.RemoveButton(FCurrentButton);
|
||||
Toolbar.RemoveButton(FCurrentButton);
|
||||
FCurrentButton := nil;
|
||||
LoadCurrentButton;
|
||||
if ktbBar.ButtonCount > 0 then
|
||||
if Toolbar.ButtonCount > 0 then
|
||||
begin
|
||||
// Select next button or the last one.
|
||||
if NextButton >= ktbBar.ButtonCount then
|
||||
NextButton := ktbBar.ButtonCount - 1;
|
||||
ktbBar.Buttons[NextButton].Click;
|
||||
if NextButton >= Toolbar.ButtonCount then
|
||||
NextButton := Toolbar.ButtonCount - 1;
|
||||
PressButtonDown(Toolbar.Buttons[NextButton]);
|
||||
end
|
||||
else
|
||||
begin
|
||||
LoadCurrentButton;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
|
@ -522,9 +675,46 @@ begin
|
|||
edtInternalParameters.HelpKeyword := '/cmds.html#' + Command;
|
||||
end;
|
||||
|
||||
procedure TfrmOptionsToolbar.cbFlatButtonsChange(Sender: TObject);
|
||||
procedure TfrmOptionsToolbar.CloseToolbarsBelowCurrentButton;
|
||||
var
|
||||
CloseFrom: Integer = 1;
|
||||
i: Integer;
|
||||
begin
|
||||
ktbBar.Flat := cbFlatButtons.Checked;
|
||||
if Assigned(FCurrentButton) then
|
||||
begin
|
||||
for i := 0 to sboxToolbars.ControlCount - 1 do
|
||||
if sboxToolbars.Controls[i] = FCurrentButton.ToolBar then
|
||||
begin
|
||||
CloseFrom := i + 1;
|
||||
Break;
|
||||
end;
|
||||
end;
|
||||
for i := sboxToolbars.ControlCount - 1 downto CloseFrom do
|
||||
CloseToolbar(i);
|
||||
end;
|
||||
|
||||
procedure TfrmOptionsToolbar.CloseToolbar(Index: Integer);
|
||||
var
|
||||
ToolBar: TControl;
|
||||
begin
|
||||
if Index > 0 then
|
||||
begin
|
||||
ToolBar := sboxToolbars.Controls[Index];
|
||||
sboxToolbars.RemoveControl(ToolBar);
|
||||
RemoveComponent(ToolBar);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmOptionsToolbar.cbFlatButtonsChange(Sender: TObject);
|
||||
var
|
||||
i: Integer;
|
||||
ToolBar: TKASToolBar;
|
||||
begin
|
||||
for i := 0 to sboxToolbars.ControlCount - 1 do
|
||||
begin
|
||||
ToolBar := sboxToolbars.Controls[i] as TKASToolBar;
|
||||
ToolBar.Flat := cbFlatButtons.Checked;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmOptionsToolbar.edtIconFileNameChange(Sender: TObject);
|
||||
|
|
@ -573,16 +763,40 @@ begin
|
|||
end;
|
||||
|
||||
procedure TfrmOptionsToolbar.trbBarSizeChange(Sender: TObject);
|
||||
var
|
||||
ToolBar: TKASToolBar;
|
||||
i: Integer;
|
||||
begin
|
||||
lblBarSizeValue.Caption:=IntToStr(trbBarSize.Position*2);
|
||||
trbIconSize.Position:= trbBarSize.Position - (trbBarSize.Position div 5);
|
||||
ktbBar.SetButtonSize(trbBarSize.Position*2,trbBarSize.Position*2);
|
||||
DisableAutoSizing;
|
||||
try
|
||||
lblBarSizeValue.Caption := IntToStr(trbBarSize.Position*2);
|
||||
trbIconSize.Position := trbBarSize.Position - (trbBarSize.Position div 5);
|
||||
for i := 0 to sboxToolbars.ControlCount - 1 do
|
||||
begin
|
||||
ToolBar := sboxToolbars.Controls[i] as TKASToolBar;
|
||||
ToolBar.SetButtonSize(trbBarSize.Position * 2, trbBarSize.Position * 2);
|
||||
end;
|
||||
finally
|
||||
EnableAutoSizing;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmOptionsToolbar.trbIconSizeChange(Sender: TObject);
|
||||
var
|
||||
ToolBar: TKASToolBar;
|
||||
i: Integer;
|
||||
begin
|
||||
lblIconSizeValue.Caption := IntToStr(trbIconSize.Position*2);
|
||||
ktbBar.GlyphSize := trbIconSize.Position*2;
|
||||
DisableAutoSizing;
|
||||
try
|
||||
lblIconSizeValue.Caption := IntToStr(trbIconSize.Position * 2);
|
||||
for i := 0 to sboxToolbars.ControlCount - 1 do
|
||||
begin
|
||||
ToolBar := sboxToolbars.Controls[i] as TKASToolBar;
|
||||
ToolBar.GlyphSize := trbIconSize.Position * 2;
|
||||
end;
|
||||
finally
|
||||
EnableAutoSizing;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmOptionsToolbar.UpdateIcon(Icon: String);
|
||||
|
|
@ -596,16 +810,11 @@ begin
|
|||
begin
|
||||
NormalItem := TKASNormalItem(ToolItem);
|
||||
NormalItem.Icon := Icon;
|
||||
ktbBar.UpdateIcon(FCurrentButton);
|
||||
FCurrentButton.ToolBar.UpdateIcon(FCurrentButton);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmOptionsToolbar.ktbBarClick(Sender: TObject);
|
||||
begin
|
||||
sboxToolbarsClick(Sender);
|
||||
end;
|
||||
|
||||
function TfrmOptionsToolbar.ktbBarLoadButtonGlyph(ToolItem: TKASToolItem;
|
||||
function TfrmOptionsToolbar.ToolbarLoadButtonGlyph(ToolItem: TKASToolItem;
|
||||
iIconSize: Integer; clBackColor: TColor): TBitmap;
|
||||
begin
|
||||
if ToolItem is TKASSeparatorItem then // Paint 'separator' icon
|
||||
|
|
@ -626,86 +835,106 @@ begin
|
|||
end;
|
||||
|
||||
(*Select button on panel*)
|
||||
procedure TfrmOptionsToolbar.ktbBarToolButtonClick(Sender: TObject);
|
||||
procedure TfrmOptionsToolbar.ToolbarToolButtonClick(Sender: TObject);
|
||||
var
|
||||
ClickedButton: TKASToolButton;
|
||||
begin
|
||||
FCurrentButton := Sender as TKASToolButton;
|
||||
ClickedButton := Sender as TKASToolButton;
|
||||
|
||||
if not FUpdatingButtonType then
|
||||
ApplyEditControls;
|
||||
|
||||
if Assigned(FCurrentButton) then
|
||||
begin
|
||||
// If current toolbar has changed depress the previous button.
|
||||
if FCurrentButton.ToolBar <> ClickedButton.ToolBar then
|
||||
FCurrentButton.Down := False;
|
||||
end;
|
||||
|
||||
FCurrentButton := ClickedButton;
|
||||
LoadCurrentButton;
|
||||
end;
|
||||
|
||||
(* Select button after it is dragged*)
|
||||
procedure TfrmOptionsToolbar.ktbBarToolButtonDragDrop(Sender, Source: TObject;
|
||||
X, Y: Integer; NumberOfButton: Integer);
|
||||
procedure TfrmOptionsToolbar.ToolbarToolButtonDragDrop(Sender, Source: TObject;
|
||||
X, Y: Integer);
|
||||
begin
|
||||
ktbBarToolButtonClick(Sender);
|
||||
ToolbarToolButtonClick(Sender);
|
||||
end;
|
||||
|
||||
(* Move button if it is dragged*)
|
||||
procedure TfrmOptionsToolbar.ktbBarToolButtonDragOver(Sender, Source: TObject;
|
||||
procedure TfrmOptionsToolbar.ToolbarToolButtonDragOver(Sender, Source: TObject;
|
||||
X, Y: Integer; State: TDragState; var Accept: Boolean; NumberOfButton: Integer);
|
||||
var
|
||||
SourceButton, TargetButton: TKASToolButton;
|
||||
begin
|
||||
if not (Source is TKASToolButton) then exit;
|
||||
if (FToolDragButtonNumber <> (Sender as TKASToolButton).Tag) then
|
||||
if Source is TKASToolButton then
|
||||
begin
|
||||
SourceButton := Source as TKASToolButton;
|
||||
TargetButton := Sender as TKASToolButton;
|
||||
// If moving on the same toolbar.
|
||||
if SourceButton.ToolBar = TargetButton.ToolBar then
|
||||
begin
|
||||
ktbBar.MoveButton((Source as TKASToolButton).Tag, (Sender as TKASToolButton).Tag);
|
||||
FToolDragButtonNumber := (Sender as TKASToolButton).Tag;
|
||||
Accept:=True;
|
||||
if FToolDragButtonNumber <> TargetButton.Tag then
|
||||
begin
|
||||
SourceButton.ToolBar.MoveButton(SourceButton.Tag, TargetButton.Tag);
|
||||
FToolDragButtonNumber := TargetButton.Tag;
|
||||
Accept := True;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
(* Do not start drag in here, because oterwise button wouldn't be pushed down*)
|
||||
procedure TfrmOptionsToolbar.ktbBarToolButtonMouseDown(Sender: TObject;
|
||||
Button: TMouseButton; Shift: TShiftState; X, Y: Integer;
|
||||
NumberOfButton: Integer);
|
||||
procedure TfrmOptionsToolbar.ToolbarToolButtonMouseDown(Sender: TObject;
|
||||
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||||
begin
|
||||
ApplyEditControls;
|
||||
FToolButtonMouseX:=X;
|
||||
FToolButtonMouseY:=Y;
|
||||
FToolButtonMouseX := X;
|
||||
FToolButtonMouseY := Y;
|
||||
end;
|
||||
|
||||
(* Start dragging only if mbLeft if pressed and mouse moved.*)
|
||||
procedure TfrmOptionsToolbar.ktbBarToolButtonMouseMove(Sender: TObject;
|
||||
procedure TfrmOptionsToolbar.ToolbarToolButtonMouseMove(Sender: TObject;
|
||||
Shift: TShiftState; X, Y: Integer; NumberOfButton: Integer);
|
||||
var
|
||||
Button: TKASToolButton;
|
||||
begin
|
||||
if (ssLeft in Shift) and (FToolDragButtonNumber = -1) then
|
||||
if (abs(FToolButtonMouseX-X)>10) or (abs(FToolButtonMouseY-Y)>10) then
|
||||
begin
|
||||
FToolDragButtonNumber:=NumberOfButton;
|
||||
ktbBar.Buttons[NumberOfButton].BeginDrag(false,5);
|
||||
end;
|
||||
if Sender is TKASToolButton then
|
||||
begin
|
||||
if (ssLeft in Shift) and (FToolDragButtonNumber = -1) then
|
||||
if (abs(FToolButtonMouseX-X)>10) or (abs(FToolButtonMouseY-Y)>10) then
|
||||
begin
|
||||
Button := TKASToolButton(Sender);
|
||||
FToolDragButtonNumber := NumberOfButton;
|
||||
Button.Toolbar.Buttons[NumberOfButton].BeginDrag(False, 5);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
(* End button drag*)
|
||||
procedure TfrmOptionsToolbar.ktbBarToolButtonMouseUp(Sender: TObject;
|
||||
Button: TMouseButton; Shift: TShiftState; X, Y: Integer;
|
||||
NumberOfButton: Integer);
|
||||
procedure TfrmOptionsToolbar.ToolbarToolButtonMouseUp(Sender: TObject;
|
||||
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||||
begin
|
||||
FToolDragButtonNumber := -1;
|
||||
end;
|
||||
|
||||
function TfrmOptionsToolbar.ktbBarToolItemShortcutsHint(ToolItem: TKASNormalItem): String;
|
||||
function TfrmOptionsToolbar.ToolbarToolItemShortcutsHint(ToolItem: TKASNormalItem): String;
|
||||
begin
|
||||
Result := ShortcutsToText(GetShortcuts(ToolItem));
|
||||
end;
|
||||
|
||||
// Deselect any selected button
|
||||
procedure TfrmOptionsToolbar.sboxToolbarsClick(Sender: TObject);
|
||||
begin
|
||||
if Assigned(FCurrentButton) then
|
||||
begin
|
||||
ApplyEditControls;
|
||||
if Assigned(FCurrentButton) then
|
||||
FCurrentButton.Down := False;
|
||||
FCurrentButton := nil;
|
||||
LoadCurrentButton;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmOptionsToolbar.SelectButton(ButtonNumber: Integer);
|
||||
var
|
||||
ToolBar: TKASToolBar;
|
||||
begin
|
||||
if (ButtonNumber >= 0) and (ButtonNumber < ktbBar.ButtonCount) then
|
||||
if sboxToolbars.ControlCount > 0 then
|
||||
begin
|
||||
FCurrentButton := ktbBar.Buttons[ButtonNumber];
|
||||
FCurrentButton.Click;
|
||||
ToolBar := sboxToolbars.Controls[0] as TKASToolBar;
|
||||
if (ButtonNumber >= 0) and (ButtonNumber < Toolbar.ButtonCount) then
|
||||
begin
|
||||
FCurrentButton := Toolbar.Buttons[ButtonNumber];
|
||||
PressButtonDown(FCurrentButton);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue