lazcontrols: filteredit: fixed default filter functions for non-lowercase strings.

git-svn-id: trunk@50331 -
This commit is contained in:
ondrej 2015-11-14 09:22:00 +00:00
parent ba864434f1
commit 89d2d8a738
3 changed files with 9 additions and 4 deletions

View File

@ -166,11 +166,12 @@ procedure TListFilterEdit.SortAndFilter;
// Copy data from fOriginalData to fSortedData in sorted order // Copy data from fOriginalData to fSortedData in sorted order
var var
Origi, i: Integer; Origi, i: Integer;
s: string; s, FilterLC: string;
Pass, Done: Boolean; Pass, Done: Boolean;
begin begin
Done:=False; Done:=False;
fSortedData.Clear; fSortedData.Clear;
FilterLC := UTF8LowerCase(Filter);
for Origi:=0 to fOriginalData.Count-1 do begin for Origi:=0 to fOriginalData.Count-1 do begin
s:=fOriginalData[Origi]; s:=fOriginalData[Origi];
// Filter with event handler if there is one. // Filter with event handler if there is one.
@ -180,7 +181,7 @@ begin
Pass:=False; Pass:=False;
// Filter by item's title text if needed. // Filter by item's title text if needed.
if not (Pass or Done) then if not (Pass or Done) then
Pass:=(Filter='') or (Pos(Filter,UTF8LowerCase(s))>0); Pass:=(FilterLC='') or (Pos(FilterLC,UTF8LowerCase(s))>0);
if Pass then begin if Pass then begin
i:=fSortedData.Count-1; // Always sort the data. i:=fSortedData.Count-1; // Always sort the data.
while i>=0 do begin while i>=0 do begin

View File

@ -144,15 +144,17 @@ end;
function TListViewFilterEdit.MatchesFilter(aData: TStringArray): Boolean; function TListViewFilterEdit.MatchesFilter(aData: TStringArray): Boolean;
var var
i, EndInd: Integer; i, EndInd: Integer;
FilterLC: string;
begin begin
if Filter='' then if Filter='' then
Exit(True); Exit(True);
FilterLC := UTF8LowerCase(Filter);
if fByAllFields then if fByAllFields then
EndInd := Pred(Length(aData)) EndInd := Pred(Length(aData))
else else
EndInd := 0; EndInd := 0;
for i := 0 to EndInd do begin for i := 0 to EndInd do begin
Result := Pos(Filter,UTF8LowerCase(aData[i]))>0; Result := Pos(FilterLC,UTF8LowerCase(aData[i]))>0;
if Result then if Result then
Exit; Exit;
end; end;

View File

@ -465,9 +465,11 @@ function TTreeFilterEdit.FilterTree(Node: TTreeNode): Boolean;
// Returns True if Node or its siblings or child nodes have visible items. // Returns True if Node or its siblings or child nodes have visible items.
var var
Pass, Done: Boolean; Pass, Done: Boolean;
FilterLC: string;
begin begin
Result:=False; Result:=False;
Done:=False; Done:=False;
FilterLC := UTF8LowerCase(Filter);
while Node<>nil do while Node<>nil do
begin begin
// Call OnFilterItem handler. // Call OnFilterItem handler.
@ -477,7 +479,7 @@ begin
Pass:=False; Pass:=False;
// Filter by item's title text if needed. // Filter by item's title text if needed.
if not (Pass or Done) then if not (Pass or Done) then
Pass:=(Filter='') or (Pos(Filter,UTF8LowerCase(Node.Text))>0); Pass:=(FilterLC='') or (Pos(FilterLC,UTF8LowerCase(Node.Text))>0);
// Recursive call for child nodes. // Recursive call for child nodes.
Node.Visible:=FilterTree(Node.GetFirstChild) or Pass; Node.Visible:=FilterTree(Node.GetFirstChild) or Pass;
if Node.Visible then if Node.Visible then