Einzelnen Beitrag anzeigen

Robert_G
(Gast)

n/a Beiträge
 
#7

Re: Suchen in TListView!

  Alt 3. Okt 2004, 20:11
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.
  Mit Zitat antworten Zitat