RxToolbar - add property CustomizeShortCut - allow change ShortCut in config dialog

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4421 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
alexs75
2016-01-14 10:13:52 +00:00
parent 91a51d1759
commit bda0aeb336
11 changed files with 381 additions and 120 deletions

View File

@ -2,7 +2,6 @@
<CONFIG>
<ProjectOptions>
<Version Value="9"/>
<PathDelim Value="\"/>
<General>
<Flags>
<LRSInOutputDirectory Value="False"/>
@ -34,10 +33,10 @@
<RunParams>
<local>
<FormatVersion Value="1"/>
<LaunchingApplication PathPlusParams="\usr\X11R6\bin\xterm -T 'Lazarus Run Output' -e $(LazarusDir)\tools\runwait.sh $(TargetCmdLine)"/>
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
</local>
</RunParams>
<RequiredPackages Count="3">
<RequiredPackages Count="2">
<Item1>
<PackageName Value="RxNew"/>
<MinVersion Major="1" Release="5" Build="11" Valid="True"/>
@ -45,10 +44,6 @@
<Item2>
<PackageName Value="LCL"/>
</Item2>
<Item3>
<PackageName Value="IDEIntf"/>
<MinVersion Major="1" Valid="True"/>
</Item3>
</RequiredPackages>
<Units Count="2">
<Unit0>
@ -75,11 +70,6 @@
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
<SrcPath Value="$(LazarusDir)\lcl;$(LazarusDir)\lcl\interfaces\$(LCLWidgetType)"/>
</SearchPaths>
<Parsing>
<SyntaxOptions>
<UseAnsiStrings Value="False"/>
</SyntaxOptions>
</Parsing>
<Linking>
<Options>
<Win32>

View File

@ -10,7 +10,7 @@ object MainForm: TMainForm
Position = poDesktopCenter
SessionProperties = 'Width;Height;Left;Top'
ShowHint = True
Visible = False
LCLVersion = '1.7'
object ToolPanel1: TToolPanel
Left = 0
Height = 32
@ -23,7 +23,7 @@ object MainForm: TMainForm
Left = 5
Height = 22
Top = 5
Width = 52
Width = 59
DropDownMenu = PopupMenu1
ShowCaption = True
ButtonStyle = tbrDropDown
@ -31,16 +31,16 @@ object MainForm: TMainForm
item
Action = actCustom
Visible = True
Left = 123
Left = 142
Height = 22
Top = 5
Width = 70
Width = 79
ShowCaption = True
end
item
Action = actNext
Visible = True
Left = 246
Left = 279
Height = 22
Top = 5
Width = 39
@ -51,29 +51,29 @@ object MainForm: TMainForm
item
Action = actPrior
Visible = True
Left = 193
Left = 221
Height = 22
Top = 5
Width = 53
Width = 58
DropDownMenu = PopupMenu2
ShowCaption = True
end
item
Action = actExit
Visible = True
Left = 285
Left = 318
Height = 22
Top = 5
Width = 46
Width = 53
ShowCaption = True
end
item
Action = actSysMenu
Visible = True
Left = 57
Left = 64
Height = 22
Top = 5
Width = 66
Width = 78
DropDownMenu = PopupMenu1
ShowCaption = True
ButtonStyle = tbrDropDown
@ -81,10 +81,10 @@ object MainForm: TMainForm
item
Action = sysAbout
Visible = True
Left = 331
Left = 371
Height = 22
Top = 5
Width = 61
Width = 67
ShowCaption = True
end>
ImageList = ImageList1
@ -94,6 +94,7 @@ object MainForm: TMainForm
ToolBarStyle = tbsWindowsXP
Options = [tpFlatBtns, tpCustomizable, tpGlyphPopup, tpCaptionPopup]
Version = 4
CustomizeShortCut = True
Align = alTop
BorderWidth = 4
ClientHeight = 32
@ -103,63 +104,18 @@ object MainForm: TMainForm
end
object SpeedButton1: TSpeedButton
Left = 440
Height = 24
Height = 26
Top = 88
Width = 50
Width = 77
Action = actCustom
AutoSize = True
Caption = 'Test'
Glyph.Data = {
46050000424D4605000000000000360000002800000012000000120000000100
2000000000001005000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F8F8
F8FFE8E8E8FFE7E7E7FFF6F6F6FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00F8F8F8FFC3ACACFFAF7F7AFFB19594FFDDDDDDFFF6F6F6FFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00F8F8F8FFC2AAAAFFC9A298FFFEF1E3FFD6B3A5FFAF9292FFDDDD
DDFFF6F6F6FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00F8F8F8FFC2A9A9FFCAA49BFFFEF2E6FFFFEBD5FFFFF5
EAFFD6B5A8FFAF9292FFDDDDDDFFF5F5F5FFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00F8F8F8FFC4ADABFFCDA99FFFFEF4E8FFFFEC
D7FFFFEBD7FFFFEBD7FFFFF5ECFFD8B8ABFFB19391FFDBDADAFFF5F5F5FFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F8F8F8FFC7AFACFFD1ADA2FFFEF5
EBFFFFEEDCFFFFEEDCFFFFEEDCFFFFEEDCFFFFEEDCFFFFF7EEFFDBBCAFFFB393
8FFFDBDADAFFF5F5F5FFFFFFFF00FFFFFF00FFFFFF00F8F8F8FFCAB2ADFFD4B2
A6FFFEF6EEFFFFF0E1FFFFF0E1FFFFEDD7FFFFBC58FFFFE4C2FFFFF0E0FFFFF0
E0FFFFF8F0FFDEC0B4FFB79691FFDCDBDBFFF6F6F6FFFFFFFF00FFFFFF00D1B9
B3FFD6B5A8FFFEF8F0FFFFF3E6FFFFF3E6FFFFF0DFFFFFC77AFFFFD298FFFFF2
E5FFFFF2E5FFFFF2E5FFFFF2E5FFFFF9F3FFE0C4B8FFBCA09AFFE5E5E5FFFFFF
FF00FFFFFF00C09282FFFAEDE2FFFFF5EAFFFFF5EAFFFFF3E5FFFFD39EFFFFDC
B4FFFFF5EAFFFFF2E1FFFFBE5BFFFFE9CAFFFFF5EAFFFFF4E9FFFFF9F4FFD0AA
9CFFD8D3D2FFFFFFFF00FFFFFF00E4D1CAFFCFA697FFFCF2EBFFFFF7EFFFFFE0
BFFFFFE1C1FFFFF7EFFFFFF4E8FFFFC87CFFFFD59CFFFFF7EFFFFFF7EFFFFFF7
EEFFFFF7EEFFDAB9ABFFD7CFCDFFFFFFFF00FFFFFF00FFFFFF00E6D4CCFFD7B4
A3FFFCF6F1FFFFF9F1FFFFFAF4FFFFF8EFFFFFD4A1FFFFDEB8FFFFF9F3FFFFF9
F3FFFFF9F3FFFFF9F3FFFFF9F3FFD6B3A2FFDAD6D4FFFFFFFF00FFFFFF00FFFF
FF00FFFFFF00E9D6CDFFDEBEAEFFFDF8F5FFFFFCF9FFFFE2C3FFFFE3C5FFFFFC
F8FFFFFCF8FFFFFCF8FFFAF5F1FFC9ADB1FFE3D3D3FFD8B1A0FFDBD7D5FFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EBD9CFFFE3C5B4FFFDFBF9FFFFFD
FAFFFFFEFDFFFFFEFDFFFFFEFDFFFAF7F5FFEFE7E5FFECE0DEFFA892B1FFDAB3
9CFFDFDEDEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EDDB
D1FFE6C8B5FFFDFCFAFFFFFFFFFFFFFFFFFFFFFFFFFFE7D0C5FFF3E8E2FFEFE6
E1FFE9E7EDFFDDB59CFFE2E2E2FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00F0DED2FFE9C8B1FFFDF9F8FFFFFFFFFFFFFFFFFFFAEF
E7FFCDCABAFFEEF2EEFFFBF6F2FFDDB79FFFEEEEEEFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F3E5D9FFE8C3A8FFEAC7
AEFFE8C2A7FFE6C2A7FFE5C2A6FFE4BEA3FFE4C5ADFFEDE1D9FFFBFBFBFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00
}
Margin = 3
end
object BitBtn1: TBitBtn
Left = 440
Height = 28
Height = 32
Top = 128
Width = 86
Width = 84
AutoSize = True
Caption = 'BitBtn1'
Glyph.Data = {
@ -207,6 +163,7 @@ object MainForm: TMainForm
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00
}
OnClick = BitBtn1Click
TabOrder = 1
end
object ImageList1: TImageList
@ -488,6 +445,7 @@ object MainForm: TMainForm
Caption = 'About'
ImageIndex = 6
OnExecute = sysAboutExecute
ShortCut = 16456
end
end
object PopupMenu1: TPopupMenu

View File

@ -46,6 +46,7 @@ type
procedure Action1Execute(Sender: TObject);
procedure actCustomExecute(Sender: TObject);
procedure actExitExecute(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure sysAboutExecute(Sender: TObject);
private
//
@ -59,6 +60,8 @@ var
implementation
uses rxShortCutUnit;
{$R *.lfm}
{ TMainForm }
@ -79,6 +82,15 @@ begin
Close;
end;
procedure TMainForm.BitBtn1Click(Sender: TObject);
var
A: TShortCut;
begin
A:=sysAbout.ShortCut;
if RxSelectShortCut(A) then
sysAbout.ShortCut:=A;
end;
procedure TMainForm.sysAboutExecute(Sender: TObject);
begin
RxAboutDialog1.Execute;

View File

@ -236,6 +236,7 @@ const
sIndex = '.Index';
sSortMarker = '.SortMarker';
sSortField = '.SortField';
sShortCut = '.ShortCut';
implementation

View File

@ -25,7 +25,7 @@ translate to Lazarus by alexs in 2005 - 2015
"/>
<License Value="LGPL"/>
<Version Major="2" Minor="8" Release="2" Build="181"/>
<Files Count="72">
<Files Count="74">
<Item1>
<Filename Value="autopanel.pas"/>
<UnitName Value="AutoPanel"/>
@ -317,6 +317,14 @@ translate to Lazarus by alexs in 2005 - 2015
<Filename Value="rxdbgridfootertools_setup.pas"/>
<UnitName Value="rxdbgridfootertools_setup"/>
</Item72>
<Item73>
<Filename Value="rxshortcutunit.lfm"/>
<Type Value="LFM"/>
</Item73>
<Item74>
<Filename Value="rxshortcutunit.pas"/>
<UnitName Value="rxshortcutunit"/>
</Item74>
</Files>
<LazDoc Paths="docs;\usr\local\share\lazarus\components\rxnew\docs"/>
<i18n>

View File

@ -19,7 +19,7 @@ uses
tooledit, vclutils, RxCloseFormValidator, RxHistoryNavigator,
ex_rx_bin_datapacket, ex_rx_datapacket, ex_rx_xml_datapacket, rxsortby,
RxMDI, RxIniPropStorage, rxDateRangeEditUnit, RxDBGridFooterTools,
rxdbgridfootertools_setup, LazarusPackageIntf;
rxdbgridfootertools_setup, rxShortCutUnit, LazarusPackageIntf;
implementation

View File

@ -0,0 +1,99 @@
object rxShortCutForm: TrxShortCutForm
Left = 505
Height = 104
Top = 526
Width = 463
Caption = 'ShortCut'
ClientHeight = 104
ClientWidth = 463
OnCreate = FormCreate
Position = poScreenCenter
LCLVersion = '1.7'
object ButtonPanel1: TButtonPanel
Left = 6
Height = 42
Top = 56
Width = 451
OKButton.Name = 'OKButton'
OKButton.DefaultCaption = True
HelpButton.Name = 'HelpButton'
HelpButton.DefaultCaption = True
CloseButton.Name = 'CloseButton'
CloseButton.DefaultCaption = True
CancelButton.Name = 'CancelButton'
CancelButton.DefaultCaption = True
TabOrder = 0
ShowButtons = [pbOK, pbCancel, pbHelp]
end
object CheckBox1: TCheckBox
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = ComboBox1
AnchorSideTop.Side = asrCenter
Left = 6
Height = 24
Top = 10
Width = 55
BorderSpacing.Left = 6
BorderSpacing.Right = 6
Caption = 'Shift'
TabOrder = 1
end
object CheckBox2: TCheckBox
AnchorSideLeft.Control = CheckBox1
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = ComboBox1
AnchorSideTop.Side = asrCenter
Left = 67
Height = 24
Top = 10
Width = 43
BorderSpacing.Left = 6
BorderSpacing.Right = 6
Caption = 'Alt'
TabOrder = 2
end
object CheckBox3: TCheckBox
AnchorSideLeft.Control = CheckBox2
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = ComboBox1
AnchorSideTop.Side = asrCenter
Left = 116
Height = 24
Top = 10
Width = 49
BorderSpacing.Left = 6
BorderSpacing.Right = 6
Caption = 'Ctrl'
TabOrder = 3
end
object ComboBox1: TComboBox
AnchorSideLeft.Control = CheckBox3
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Owner
AnchorSideRight.Control = Button1
Left = 171
Height = 32
Top = 6
Width = 211
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Around = 6
ItemHeight = 0
TabOrder = 4
Text = 'ComboBox1'
end
object Button1: TButton
AnchorSideTop.Control = Owner
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 388
Height = 32
Top = 6
Width = 69
Anchors = [akTop, akRight]
AutoSize = True
BorderSpacing.Around = 6
Caption = 'Grab key'
OnClick = Button1Click
TabOrder = 5
end
end

View File

@ -0,0 +1,156 @@
unit rxShortCutUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ButtonPanel,
StdCtrls;
type
{ TrxShortCutForm }
TrxShortCutForm = class(TForm)
Button1: TButton;
ButtonPanel1: TButtonPanel;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
ComboBox1: TComboBox;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
function GetShortCut: TShortCut;
procedure SetShortCut(AValue: TShortCut);
public
property ShortCut:TShortCut read GetShortCut write SetShortCut;
end;
function RxSelectShortCut(var AShortCut:TShortCut):boolean;
implementation
uses LCLProc, LCLType, LCLStrConsts;
{$R *.lfm}
function RxSelectShortCut(var AShortCut: TShortCut): boolean;
var
rxShortCutForm: TrxShortCutForm;
begin
rxShortCutForm:=TrxShortCutForm.Create(Application);
rxShortCutForm.ShortCut:=AShortCut;
if rxShortCutForm.ShowModal = mrOk then
AShortCut:=rxShortCutForm.ShortCut;
rxShortCutForm.Free;
end;
type
{ TGrabForm }
TGrabForm = class(TForm)
private
FShortCutEdt:TShortCut;
protected
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
public
constructor CreateNew(AOwner: TComponent; Num: Integer = 0); override;
end;
{ TGrabForm }
procedure TGrabForm.KeyDown(var Key: Word; Shift: TShiftState);
begin
inherited KeyDown(Key, Shift);
if (Key = VK_ESCAPE) and (Shift = []) then
ModalResult:=mrCancel
else
if (Key <> VK_CONTROL) and (Key <> VK_SHIFT) and (Key <> VK_MENU) then
begin
FShortCutEdt:=KeyToShortCut(Key, Shift);
ModalResult:=mrOK;
end;
end;
constructor TGrabForm.CreateNew(AOwner: TComponent; Num: Integer);
var
L: TLabel;
begin
inherited CreateNew(AOwner, Num);
Position:=poScreenCenter;
Width:=200;
Height:=80;
Caption:='Press the key';
BorderStyle:=bsDialog;
KeyPreview:=true;
L:=TLabel.Create(Self);
L.Parent:=Self;
L.Caption:=Caption;
L.AnchorSide[akTop].Control:=Self;
L.AnchorSide[akTop].Side:=asrCenter;
L.AnchorSide[akLeft].Control:=Self;
L.AnchorSide[akLeft].Side:=asrCenter;
end;
{ TrxShortCutForm }
procedure TrxShortCutForm.FormCreate(Sender: TObject);
var
S: String;
i:Word;
begin
for i:=0 to $FF do
begin
S:=ShortCutToText(i);
if S<>'' then
ComboBox1.Items.Add(S);
end;
end;
procedure TrxShortCutForm.Button1Click(Sender: TObject);
var
F:TGrabForm;
begin
F:=TGrabForm.CreateNew(Self);
if F.ShowModal = mrOk then
SetShortCut(F.FShortCutEdt);
F.Free;
end;
procedure TrxShortCutForm.SetShortCut(AValue: TShortCut);
begin
ComboBox1.Text:=ShortCutToText(AValue and $FF);
CheckBox1.Checked:=AValue and scShift <> 0;
CheckBox2.Checked:=AValue and scAlt <> 0;
CheckBox3.Checked:=AValue and scCtrl <> 0;
///if ShortCut and scMeta <> 0 then Result := Result + MenuKeyCaps[mkcMeta];
end;
function TrxShortCutForm.GetShortCut: TShortCut;
var
S: String;
begin
S:='';
if CheckBox1.Checked then
S:=SmkcShift + S;
if CheckBox2.Checked then
S:=SmkcAlt + S;
if CheckBox3.Checked then
S:=SmkcCtrl + S;
//SmkcMeta = 'Meta+';
S:=S + ComboBox1.Text;
Result:=TextToShortCut(S);
end;
end.

View File

@ -12,10 +12,10 @@ object ToolPanelSetupForm: TToolPanelSetupForm
OnDestroy = FormDestroy
OnResize = FormResize
Position = poScreenCenter
Visible = False
LCLVersion = '1.7'
object PageControl1: TPageControl
Left = 0
Height = 441
Height = 433
Top = 0
Width = 657
ActivePage = TabSheet1
@ -24,16 +24,16 @@ object ToolPanelSetupForm: TToolPanelSetupForm
TabOrder = 0
object TabSheet1: TTabSheet
Caption = 'Visible buttons'
ClientHeight = 413
ClientWidth = 649
ClientHeight = 395
ClientWidth = 651
object Label1: TLabel
AnchorSideLeft.Control = BitBtn3
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = TabSheet1
Left = 353
Height = 15
Left = 347
Height = 20
Top = 6
Width = 92
Width = 112
BorderSpacing.Around = 6
Caption = 'Avaliable buttons'
FocusControl = ListBtnAvaliable
@ -42,9 +42,9 @@ object ToolPanelSetupForm: TToolPanelSetupForm
object Label2: TLabel
AnchorSideTop.Control = TabSheet1
Left = 8
Height = 15
Height = 20
Top = 6
Width = 78
Width = 97
BorderSpacing.Around = 6
Caption = 'Visible buttons'
FocusControl = ListBtnVisible
@ -56,10 +56,10 @@ object ToolPanelSetupForm: TToolPanelSetupForm
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = BitBtn6
AnchorSideRight.Side = asrBottom
Left = 301
Left = 309
Height = 30
Top = 141
Width = 46
Top = 160
Width = 32
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 6
BorderSpacing.InnerBorder = 2
@ -73,10 +73,10 @@ object ToolPanelSetupForm: TToolPanelSetupForm
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = BitBtn6
AnchorSideRight.Side = asrBottom
Left = 301
Height = 29
Top = 106
Width = 46
Left = 309
Height = 36
Top = 118
Width = 32
Anchors = [akTop, akLeft, akRight]
AutoSize = True
BorderSpacing.Top = 6
@ -91,10 +91,10 @@ object ToolPanelSetupForm: TToolPanelSetupForm
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = BitBtn6
AnchorSideRight.Side = asrBottom
Left = 301
Left = 309
Height = 38
Top = 62
Width = 46
Top = 74
Width = 32
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 6
BorderSpacing.InnerBorder = 2
@ -106,10 +106,10 @@ object ToolPanelSetupForm: TToolPanelSetupForm
AnchorSideLeft.Control = TabSheet1
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = ListBtnAvaliable
Left = 301
Height = 29
Top = 27
Width = 46
Left = 309
Height = 36
Top = 32
Width = 32
AutoSize = True
BorderSpacing.InnerBorder = 2
Caption = '>>'
@ -124,10 +124,10 @@ object ToolPanelSetupForm: TToolPanelSetupForm
AnchorSideRight.Control = TabSheet1
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = cbShowCaption
Left = 353
Height = 287
Top = 27
Width = 290
Left = 347
Height = 259
Top = 32
Width = 298
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Around = 6
IntegralHeight = True
@ -142,8 +142,9 @@ object ToolPanelSetupForm: TToolPanelSetupForm
)
ItemHeight = 0
OnClick = ListBtnAvaliableClick
OnDblClick = ListBtnVisibleDblClick
OnDrawItem = ListBox1DrawItem
ScrollWidth = 294
ScrollWidth = 296
Style = lbOwnerDrawFixed
TabOrder = 4
end
@ -154,25 +155,27 @@ object ToolPanelSetupForm: TToolPanelSetupForm
AnchorSideRight.Control = BitBtn6
AnchorSideBottom.Control = cbShowCaption
Left = 14
Height = 287
Top = 27
Width = 281
Height = 259
Top = 32
Width = 289
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Around = 6
ItemHeight = 0
OnClick = ListBtnAvaliableClick
OnDblClick = ListBtnVisibleDblClick
OnDrawItem = ListBox1DrawItem
ScrollWidth = 285
ScrollWidth = 287
Style = lbOwnerDrawFixed
TabOrder = 5
TopIndex = -1
end
object Panel1: TPanel
AnchorSideBottom.Control = TabSheet1
AnchorSideBottom.Side = asrBottom
Left = 3
Height = 62
Top = 345
Width = 637
Top = 327
Width = 639
Alignment = taLeftJustify
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Around = 6
@ -184,9 +187,9 @@ object ToolPanelSetupForm: TToolPanelSetupForm
AnchorSideLeft.Control = TabSheet1
AnchorSideBottom.Control = Panel1
Left = 6
Height = 19
Top = 320
Width = 92
Height = 24
Top = 297
Width = 112
Anchors = [akLeft, akBottom]
BorderSpacing.Around = 6
Caption = 'Show caption'
@ -196,7 +199,7 @@ object ToolPanelSetupForm: TToolPanelSetupForm
end
object TabSheet2: TTabSheet
Caption = 'Options'
ClientHeight = 400
ClientHeight = 395
ClientWidth = 651
object cbShowHint: TCheckBox
AnchorSideLeft.Control = TabSheet2
@ -255,7 +258,7 @@ object ToolPanelSetupForm: TToolPanelSetupForm
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 75
ClientHeight = 73
ClientWidth = 308
Items.Strings = (
'None'
@ -286,7 +289,7 @@ object ToolPanelSetupForm: TToolPanelSetupForm
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 75
ClientHeight = 73
ClientWidth = 308
Items.Strings = (
'Standart'
@ -314,8 +317,8 @@ object ToolPanelSetupForm: TToolPanelSetupForm
end
object ButtonPanel1: TButtonPanel
Left = 6
Height = 34
Top = 447
Height = 42
Top = 439
Width = 645
OKButton.Name = 'OKButton'
OKButton.DefaultCaption = True

View File

@ -76,6 +76,7 @@ type
ARect: TRect; State: TOwnerDrawState);
procedure ListBtnAvaliableClick(Sender: TObject);
procedure cbShowCaptionChange(Sender: TObject);
procedure ListBtnVisibleDblClick(Sender: TObject);
private
procedure FillItems(List:TStrings; AVisible:boolean);
procedure UpdateStates;
@ -89,7 +90,7 @@ var
ToolPanelSetupForm: TToolPanelSetupForm;
implementation
uses vclutils, ActnList, boxprocs, rxconst, LCLProc;
uses vclutils, ActnList, boxprocs, rxconst, LCLProc, rxShortCutUnit;
{$R *.lfm}
@ -182,6 +183,29 @@ begin
TToolbarItem(ListBtnVisible.Items.Objects[ListBtnVisible.ItemIndex]).ShowCaption:=cbShowCaption.Checked;
end;
procedure TToolPanelSetupForm.ListBtnVisibleDblClick(Sender: TObject);
var
Act: TBasicAction;
A: TShortCut;
begin
if FToolPanel.CustomizeShortCut then
if (TListBox(Sender).ItemIndex>-1) and (TListBox(Sender).ItemIndex<TListBox(Sender).Items.Count) then
begin
Act:=TToolbarItem(TListBox(Sender).Items.Objects[TListBox(Sender).ItemIndex]).Action;
if Act is TCustomAction then
begin
A:=TCustomAction(Act).ShortCut;
Hide;
if RxSelectShortCut(A) then
begin
TCustomAction(Act).ShortCut:=A;
TListBox(Sender).Invalidate;
end;
Show;
end;
end;
end;
procedure TToolPanelSetupForm.FillItems(List: TStrings; AVisible: boolean);
var
i, p:integer;

View File

@ -184,6 +184,7 @@ type
TToolPanel = class(TCustomPanel)
private
FButtonAllign: TToolButtonAllign;
FCustomizeShortCut: boolean;
FImageList: TImageList;
FImageListSelected: TImageList;
FOptions: TToolPanelOptions;
@ -235,6 +236,7 @@ type
property Options:TToolPanelOptions read FOptions write SetOptions;
property Version: Integer read FVersion write FVersion default 0;
property ButtonAllign:TToolButtonAllign read FButtonAllign write SetButtonAllign default tbaLeft;
property CustomizeShortCut:boolean read FCustomizeShortCut write FCustomizeShortCut;
property Align;
property Alignment;
@ -987,6 +989,8 @@ begin
FPropertyStorageLink.Storage.WriteInteger(S1+sTop, FToolbarItems[i].Top);
FPropertyStorageLink.Storage.WriteInteger(S1+sLeft, FToolbarItems[i].Left);
FPropertyStorageLink.Storage.WriteInteger(S1+sWidth, FToolbarItems[i].Width);
if FCustomizeShortCut and Assigned(FToolbarItems[i].Action) then
FPropertyStorageLink.Storage.WriteString(S1+sShortCut, ShortCutToText(TCustomAction(FToolbarItems[i].Action).ShortCut));
end;
end;
end;
@ -1026,6 +1030,11 @@ begin
AItem.Width:=FPropertyStorageLink.Storage.ReadInteger(S1+sWidth, AItem.Width);
AItem.Visible:=FPropertyStorageLink.Storage.ReadInteger(S1+sVisible, ord(AItem.Visible)) <> 0;
AItem.ShowCaption:=FPropertyStorageLink.Storage.ReadInteger(S1+sShowCaption, ord(AItem.ShowCaption)) <> 0;
if FCustomizeShortCut and Assigned(AItem.Action) then
begin
S2:=FPropertyStorageLink.Storage.ReadString(S1+sShortCut, ShortCutToText(TCustomAction(AItem.Action).ShortCut));
TCustomAction(AItem.Action).ShortCut:=TextToShortCut(S2);
end;
end;
end;
end;
@ -1145,6 +1154,7 @@ constructor TToolPanel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FArrowBmp:=CreateArrowBitmap;
FCustomizeShortCut:=false;
AutoSize:=false;
FButtonAllign:=tbaLeft;
FToolbarItems:=TToolbarItems.Create(Self);