Einzelnen Beitrag anzeigen

Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
482 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Leere ListView Einträge löschen und Spalte nach oben rücken?

  Alt 9. Okt 2014, 18:49
Du kannst im TListview keine Nebenspalten "löschen", höchstens leeren.
Das liegt daran, dass nur der eintrag der jeweils ersten Spalte "real" ist. Die anderen sind nur items in der SubItems-Stringlist.

Das mit dem Nachrücken lässt sich aber recht einfach "simulieren", in dem du eine FOR-Schleife einfügst.
Ich würde das ganze so machen:

Das hier tut, was du willst.
Bitte nicht nur kopieren, auch verstehen...

Delphi-Quellcode:
procedure Einruecken;
var
  Index_Column: Integer;
  Index_Line: Integer;
begin
  for Index_Column := 0 to ListView.Columns.Count - 2 do
  begin
    Index_Line := 0;
    while Index_Line < ListView.Items.Count - 1 do
    begin
      if Length(ListView.Items.Item[Index_Line].SubItems.Strings[Index_Column]) = 0 then
      begin
        ListView.Items.Item[Index_Line].SubItems.Strings[Index_Column] := ListView.Items.Item[Index_Line + 1].SubItems.Strings[Index_Column];
        ListView.Items.Item[Index_Line + 1].SubItems.Strings[Index_Column] := '';
      end else
      begin
        Inc(Index_Line);
      end;
    end;
  end;
end;
Dennis

Geändert von Dennis07 ( 9. Okt 2014 um 18:52 Uhr)
  Mit Zitat antworten Zitat