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