mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-06 10:00:34 +02:00
ListFilterEdit: Up and Down keys move selection in the filtered control. Patch from Anton Panferov
git-svn-id: trunk@31691 -
This commit is contained in:
parent
221d890035
commit
ee4a3f95f1
@ -31,6 +31,8 @@ type
|
|||||||
procedure ApplyFilter; virtual; abstract;
|
procedure ApplyFilter; virtual; abstract;
|
||||||
procedure StoreSelection; virtual; abstract;
|
procedure StoreSelection; virtual; abstract;
|
||||||
procedure RestoreSelection; virtual; abstract;
|
procedure RestoreSelection; virtual; abstract;
|
||||||
|
procedure MoveNext; virtual; abstract;
|
||||||
|
procedure MovePrev; virtual; abstract;
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TListFilterEdit);
|
constructor Create(AOwner: TListFilterEdit);
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
@ -45,6 +47,8 @@ type
|
|||||||
procedure ApplyFilter; override;
|
procedure ApplyFilter; override;
|
||||||
procedure StoreSelection; override;
|
procedure StoreSelection; override;
|
||||||
procedure RestoreSelection; override;
|
procedure RestoreSelection; override;
|
||||||
|
procedure MoveNext; override;
|
||||||
|
procedure MovePrev; override;
|
||||||
procedure FreeTVNodeData(Node: TTreeNode);
|
procedure FreeTVNodeData(Node: TTreeNode);
|
||||||
procedure TVDeleteUnneededNodes(p: integer);
|
procedure TVDeleteUnneededNodes(p: integer);
|
||||||
procedure TVClearUnneededAndCreateHierachy(Filename: string);
|
procedure TVClearUnneededAndCreateHierachy(Filename: string);
|
||||||
@ -61,6 +65,8 @@ type
|
|||||||
procedure ApplyFilter; override;
|
procedure ApplyFilter; override;
|
||||||
procedure StoreSelection; override;
|
procedure StoreSelection; override;
|
||||||
procedure RestoreSelection; override;
|
procedure RestoreSelection; override;
|
||||||
|
procedure MoveNext; override;
|
||||||
|
procedure MovePrev; override;
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TListFilterEdit; aListbox: TListbox);
|
constructor Create(AOwner: TListFilterEdit; aListbox: TListbox);
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
@ -102,6 +108,7 @@ type
|
|||||||
procedure SetShowDirHierarchy(const AValue: Boolean);
|
procedure SetShowDirHierarchy(const AValue: Boolean);
|
||||||
procedure SetIdleConnected(const AValue: Boolean);
|
procedure SetIdleConnected(const AValue: Boolean);
|
||||||
protected
|
protected
|
||||||
|
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
|
||||||
function GetDefaultGlyph: TBitmap; override;
|
function GetDefaultGlyph: TBitmap; override;
|
||||||
function GetDefaultGlyphName: String; override;
|
function GetDefaultGlyphName: String; override;
|
||||||
procedure Change; override;
|
procedure Change; override;
|
||||||
@ -354,6 +361,29 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TViewControlTreeview.MoveNext;
|
||||||
|
var tn: TTreeNode;
|
||||||
|
begin
|
||||||
|
tn := fTreeview.Selected;
|
||||||
|
if not Assigned(tn) then
|
||||||
|
begin
|
||||||
|
tn := fTreeview.TopItem;
|
||||||
|
if Assigned(tn) then fTreeview.Selected := tn;
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
tn := tn.GetNext;
|
||||||
|
if Assigned(tn) then fTreeview.Selected := tn;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TViewControlTreeview.MovePrev;
|
||||||
|
var tn: TTreeNode;
|
||||||
|
begin
|
||||||
|
tn := fTreeview.Selected;
|
||||||
|
if not Assigned(tn) then Exit;
|
||||||
|
tn := tn.GetPrev;
|
||||||
|
if Assigned(tn) then fTreeview.Selected := tn;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TViewControlTreeview.FreeTVNodeData(Node: TTreeNode);
|
procedure TViewControlTreeview.FreeTVNodeData(Node: TTreeNode);
|
||||||
var
|
var
|
||||||
Child: TTreeNode;
|
Child: TTreeNode;
|
||||||
@ -496,6 +526,20 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TViewControlListbox.MoveNext;
|
||||||
|
var i: Integer;
|
||||||
|
begin
|
||||||
|
i := fListbox.ItemIndex + 1;
|
||||||
|
if i < fListbox.Count then fListbox.ItemIndex := i;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TViewControlListbox.MovePrev;
|
||||||
|
var i: Integer;
|
||||||
|
begin
|
||||||
|
i := fListbox.ItemIndex - 1;
|
||||||
|
if i >= 0 then fListbox.ItemIndex := i;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
{ TListBoxFilterEdit }
|
{ TListBoxFilterEdit }
|
||||||
|
|
||||||
@ -606,6 +650,15 @@ begin
|
|||||||
Application.RemoveOnIdleHandler(@OnIdle);
|
Application.RemoveOnIdleHandler(@OnIdle);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TListFilterEdit.KeyDown(var Key: Word; Shift: TShiftState);
|
||||||
|
begin
|
||||||
|
case Key of
|
||||||
|
VK_UP: fViewControlWrapper.MovePrev;
|
||||||
|
VK_DOWN: fViewControlWrapper.MoveNext;
|
||||||
|
else inherited KeyDown(Key, Shift);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
function TListFilterEdit.GetDefaultGlyph: TBitmap;
|
function TListFilterEdit.GetDefaultGlyph: TBitmap;
|
||||||
begin
|
begin
|
||||||
Result := ListFilterGlyph;
|
Result := ListFilterGlyph;
|
||||||
|
Loading…
Reference in New Issue
Block a user