mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-16 01:39:18 +02:00
lazcontrols: filteredit: fixed default filter functions for non-lowercase strings.
git-svn-id: trunk@50331 -
This commit is contained in:
parent
ba864434f1
commit
89d2d8a738
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user