shortcut editor, the filter works with the key combinations

This commit is contained in:
Basile Burg 2016-07-15 04:26:42 +02:00
parent 200b43662c
commit 078f9e9d06
2 changed files with 30 additions and 5 deletions

View File

@ -20,21 +20,23 @@ object CEShortcutEditor: TCEShortcutEditor
TabOrder = 0 TabOrder = 0
object fltItems: TTreeFilterEdit object fltItems: TTreeFilterEdit
Left = 2 Left = 2
Height = 20 Height = 24
Top = 2 Top = 2
Width = 420 Width = 420
OnFilterItem = fltItemsFilterItem
ButtonWidth = 28 ButtonWidth = 28
NumGlyphs = 1 NumGlyphs = 1
Align = alTop Align = alTop
BorderSpacing.Around = 2 BorderSpacing.Around = 2
AutoSize = False
MaxLength = 0 MaxLength = 0
TabOrder = 0 TabOrder = 0
FilteredTreeview = tree FilteredTreeview = tree
end end
object tree: TTreeView object tree: TTreeView
Left = 2 Left = 2
Height = 407 Height = 403
Top = 26 Top = 30
Width = 420 Width = 420
Align = alClient Align = alClient
AutoExpand = True AutoExpand = True

View File

@ -6,9 +6,9 @@ interface
uses uses
Classes, SysUtils, FileUtil, TreeFilterEdit, Forms, Controls, Menus, Graphics, Classes, SysUtils, FileUtil, TreeFilterEdit, Forms, Controls, Menus, Graphics,
ExtCtrls, LCLProc, ComCtrls, StdCtrls, Buttons, LCLType, PropEdits, ExtCtrls, LCLProc, ComCtrls, StdCtrls, Buttons, LCLType, PropEdits, strutils,
ce_sharedres, ce_observer, ce_interfaces, ce_common, ce_writableComponent, ce_sharedres, ce_observer, ce_interfaces, ce_common, ce_writableComponent,
ce_dialogs; ce_dialogs, EditBtn;
type type
@ -59,6 +59,7 @@ type
tree: TTreeView; tree: TTreeView;
procedure btnActivateClick(Sender: TObject); procedure btnActivateClick(Sender: TObject);
procedure btnClearClick(Sender: TObject); procedure btnClearClick(Sender: TObject);
function fltItemsFilterItem(Item: TObject; out Done: Boolean): Boolean;
procedure LabeledEdit1KeyDown(Sender: TObject; var Key: Word;Shift: TShiftState); procedure LabeledEdit1KeyDown(Sender: TObject; var Key: Word;Shift: TShiftState);
procedure shortcutCatcherExit(Sender: TObject); procedure shortcutCatcherExit(Sender: TObject);
procedure shortcutCatcherMouseLeave(Sender: TObject); procedure shortcutCatcherMouseLeave(Sender: TObject);
@ -283,6 +284,28 @@ begin
updateEditCtrls; updateEditCtrls;
end; end;
function TCEShortcutEditor.fltItemsFilterItem(Item: TObject; out Done: Boolean): Boolean;
var
shc: TShortcutItem;
begin
if fltItems.Filter.isBlank then
begin
result := true;
done := true;
end
else
begin
result := false;
done := false;
// see TTreeFilterEdit: they pass TObject(TTreeNode.Data) and not a TTreeNode
if Pointer(item).isNil then
exit;
shc := TShortcutItem(item);
result := AnsiContainsText(shc.combination, fltItems.Filter);
done := true;
end;
end;
procedure TCEShortcutEditor.LabeledEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure TCEShortcutEditor.LabeledEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var var
i: integer; i: integer;