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
var
Origi, i: Integer;
s: string;
s, FilterLC: string;
Pass, Done: Boolean;
begin
Done:=False;
fSortedData.Clear;
FilterLC := UTF8LowerCase(Filter);
for Origi:=0 to fOriginalData.Count-1 do begin
s:=fOriginalData[Origi];
// Filter with event handler if there is one.
@ -180,7 +181,7 @@ begin
Pass:=False;
// Filter by item's title text if needed.
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
i:=fSortedData.Count-1; // Always sort the data.
while i>=0 do begin

View File

@ -144,15 +144,17 @@ end;
function TListViewFilterEdit.MatchesFilter(aData: TStringArray): Boolean;
var
i, EndInd: Integer;
FilterLC: string;
begin
if Filter='' then
Exit(True);
FilterLC := UTF8LowerCase(Filter);
if fByAllFields then
EndInd := Pred(Length(aData))
else
EndInd := 0;
for i := 0 to EndInd do begin
Result := Pos(Filter,UTF8LowerCase(aData[i]))>0;
Result := Pos(FilterLC,UTF8LowerCase(aData[i]))>0;
if Result then
Exit;
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.
var
Pass, Done: Boolean;
FilterLC: string;
begin
Result:=False;
Done:=False;
FilterLC := UTF8LowerCase(Filter);
while Node<>nil do
begin
// Call OnFilterItem handler.
@ -477,7 +479,7 @@ begin
Pass:=False;
// Filter by item's title text if needed.
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.
Node.Visible:=FilterTree(Node.GetFirstChild) or Pass;
if Node.Visible then