AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Leere ListView Einträge löschen und Spalte nach oben rücken?
Thema durchsuchen
Ansicht
Themen-Optionen

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

Offene Frage von "Dennis07"
Ein Thema von DevidEspenschied · begonnen am 9. Okt 2014 · letzter Beitrag vom 9. Okt 2014
Antwort Antwort
DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
439 Beiträge
 
Delphi 12 Athens
 
#1

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

  Alt 9. Okt 2014, 15:07
Delphi-Version: XE
Hallo,

ich habe eine Listview mit diversen Zeilen und 3 Spalten, wovon auch leere Einträge drin sind, die ich löschen möchte. Die leeren Einträge habe ich nachfoglend mal mit ( leer ) gekennzeichnet.

Delphi-Quellcode:
        Spalte 1 Spalte 2 Spalte 3
Zeile 1 Textfeld ( leer ) Textfeld
Zeile 2 ( leer ) Textfeld Textfeld
Zeile 3 Textfeld Textfeld ( leer )
Wie kann ich es bewerkstelligen, dass die leeren Einträge, hier mit ( leer ) gekennzeichnet, gelöscht werden und die entsprechende Spalte nach oben rückt?
Wünschenswert wäre eine zusammengerückte Listview in folgendem Format:

Delphi-Quellcode:
        Spalte 1 Spalte 2 Spalte 3
Zeile 1 Textfeld Textfeld Textfeld
Zeile 2 Textfeld Textfeld Textfeld
Zeile 3 ( leer ) ( leer ) ( leer )
Dann bräuchte ich noch eine Abfrage, wie ich komplett leere Zeilen, wie in diesem Fall die letzte, löschen kann.

Kann mir da jemand helfen? Danke im Voraus.
Devid
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  Mit Zitat antworten Zitat
Dennis07

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

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

  Alt 9. Okt 2014, 19: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 19:52 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz