Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#12

Re: Strings in ListView vergleichen

  Alt 17. Aug 2006, 06:39
Hallo Onkelrossie,

für mich hast du immer noch ein Gruppenwechselproblem. Ich habe meinen Code aus Beitrag #2 etwas verallgemeinert, so dass er auch mehrstufige Gruppenwechsel erkennen kann:

Delphi-Quellcode:
function GroupStr(li: TListItem; wda: array of Word): String;
var
  i: Integer;
begin
  with TStringList.Create do
  try
    for i := Low(wda) to High(wda) do
      if wda[i] = 0
        then Add(li.Caption)
        else Add(li.SubItems[Pred(wda[i])]);
    Result := CommaText;
  finally
    Free;
  end;
end;

procedure ExtractGroups(li: TListItems; wda: array of Word; s: TStrings);
var
  i: Integer;
  sGroup, sTest: String;
begin
  s.Clear;
  sGroup := '';
  for i := 0 to Pred(li.Count) do
  begin
    sTest := GroupStr(li[i], wda);
    if (i = 0) or (sTest <> sGroup) then
    begin
      sGroup := sTest;
      s.Values[sGroup] := IntToStr(i);
    end;
  end;
end;

procedure TDemoForm.ButtonClick(Sender: TObject);
begin
  ExtractGroups(ListView.Items, [2, 1], ValueListEditor.Strings);
end;
Grüße vom marabu
  Mit Zitat antworten Zitat