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
object fltItems: TTreeFilterEdit
Left = 2
Height = 20
Height = 24
Top = 2
Width = 420
OnFilterItem = fltItemsFilterItem
ButtonWidth = 28
NumGlyphs = 1
Align = alTop
BorderSpacing.Around = 2
AutoSize = False
MaxLength = 0
TabOrder = 0
FilteredTreeview = tree
end
object tree: TTreeView
Left = 2
Height = 407
Top = 26
Height = 403
Top = 30
Width = 420
Align = alClient
AutoExpand = True

View File

@ -6,9 +6,9 @@ interface
uses
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_dialogs;
ce_dialogs, EditBtn;
type
@ -59,6 +59,7 @@ type
tree: TTreeView;
procedure btnActivateClick(Sender: TObject);
procedure btnClearClick(Sender: TObject);
function fltItemsFilterItem(Item: TObject; out Done: Boolean): Boolean;
procedure LabeledEdit1KeyDown(Sender: TObject; var Key: Word;Shift: TShiftState);
procedure shortcutCatcherExit(Sender: TObject);
procedure shortcutCatcherMouseLeave(Sender: TObject);
@ -283,6 +284,28 @@ begin
updateEditCtrls;
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);
var
i: integer;