Ich hätte es etwas allgemeiner geschrieben. (Vielleicht willst du ja auch in einem anderen LV suchen
)
Als Ergenis gibt's ein array of TListItem :
Delphi-Quellcode:
type UglyHelperType = array of TListItem;
...
function FindItems(aLV: TListView; const aSuchText: string;
aCaseSensitive: boolean): UglyHelperType;
var
bMatch: Boolean;
NewItem: TListItem;
i, j, FoundItems: Integer;
(* nested functions *)
// getting an Item to the resultset
procedure Add2Result(aLVI: TListItem);
begin
if FoundItems >= High(result) then
setLength(result, FoundItems + 50);
result[FoundKeys] := aLVI;
inc(FoundLKeys);
end;
function Equals(const aString, aSearchWord): boolean;
begin
if aCaseSensitive then
result := (Pos(LowerCase(aSearchWord), LowerCase(aString)) > 0)
else
result := (Pos(aSearchWord, aString) > 0);
end;
end;
begin
FoundKeys := 0;
setLength(result, 50);
for i := 0 to pred(aLV.Items.Count) do
with aLV.Items[i] do
begin
bMatch := Equals(aSuchText, Caption);
if not bMatch then
for j := 0 to pred(SubItems.Count) do
begin
bMatch := Equals(aSuchText, SubItems[j]);
if bMatch then
Break();
end;
if bMatch then
Add2Result(aLV.Items[i]);
end;
if FoundKeys > 0 then
setLength(result, FoundKeys);
end;
Zitat von
DJ-SPM:
Habe ich da was falsch gemacht?
Scheint so...
Denn woher willst du wissen, dass es ein selektiertes Item im 2. LV gibt?
Zitat von
DJ-SPM:
Delphi-Quellcode:
if bMatch then
begin
Form2.ListView1.ItemFocused.Caption:=SuchText;
Außerdem macht das so keinen Sinn. Du würdest doch bei 5 gefundenen Items immer wieder das _GLEICHE_ im 2. LV ändern.