AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ListView Items verschieben und sortieren !?

Ein Thema von Äfan · begonnen am 19. Jun 2005 · letzter Beitrag vom 19. Jun 2005
Antwort Antwort
Äfan
(Gast)

n/a Beiträge
 
#1

ListView Items verschieben und sortieren !?

  Alt 19. Jun 2005, 04:54
Hi,

1. Ich will ein Item aus einer ListView per klick, eine zeile nach oben verschieben.

Nachdem ich die forensuche hier benutzt habe, habe ich es schon so weit bekommen:

Delphi-Quellcode:
  Listview1.Items.Insert(1);
  Listview1.Items[1].Assign(Listview1.Items.Item[2]);
  Listview1.Items[2].Delete;
Leider funktioniert das nicht, also es wird nichts verschoben...



2. Gib es eine möglichkeit die Items in meiner Listview zu sortieren, allerdings nicht dauerhaft. Also sobald ich wieder neue items hinzufüge, soll er sie einfach wieder an das ende der liste anhängen.

Und geht es, dass ich z.b. auf denn button klicke und er sortiert sie alphabetisch (das mache ich mit listview := stText) und bei nochmals klicken, werden sie wieder wie vorher sortiert bzw. angeordnet.

mfg
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: ListView Items verschieben und sortieren !?

  Alt 19. Jun 2005, 07:30
Zitat von Äfan:
Hi,

1. Ich will ein Item aus einer ListView per klick, eine zeile nach oben verschieben.
ich hab nicht nachgeschaut move gibt es nicht bei den items?

Zitat:
2. Gib es eine möglichkeit die Items in meiner Listview zu sortieren, allerdings nicht dauerhaft. Also sobald ich wieder neue items hinzufüge, soll er sie einfach wieder an das ende der liste anhängen.
Alphasort aufrufen und bei oncustomsort das LV wie gewünscht sortieren. Du kannst immer wieder items an Ende dranhängen, neu sortiert wird es nur bei alphasort. Für customsort etc. gibt genug hier im Forum

Zitat:
Und geht es, dass ich z.b. auf denn button klicke und er sortiert sie alphabetisch (das mache ich mit listview := stText) und bei nochmals klicken, werden sie wieder wie vorher sortiert bzw. angeordnet.
Erstell dir eine zusätzliche unsichtbare Spalte oder geh über die Data-eigenschaft, hinterlege dort deinen Index, z.B. fortlaufende Nummerierung und sortier dann danach um die ursprüngliche Reihenfolge wiederherzustellen.

Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
marabu

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

Re: ListView Items verschieben und sortieren !?

  Alt 19. Jun 2005, 08:42
Hallo Äfan,

was du da vor hast macht nur Sinn mit ListViews, die gleichzeitig Daten-Container sind, die also keine virtuellen ListViews sind.

Zu deinem Code: Move() und Exchange() gibt es hier nicht. Insert() gibt dir einen Zeiger auf das neue ListItem zurück. Den solltest du dir merken um seine Assign() Methode verwenden zu können. Statt Delete() solltest du besser Free() verwenden, um keine Speicher-Lecks zu produzieren.

Damit deine neuen Items immer hinten angefügt werden können musst du mit SortType = stNone und der Methode CustomSort() arbeiten.

Ein Gedächtnis für die vorherige Sortierung hat die ListView nicht. Aber da du keine virtuelle ListView verwendest, kannst du den Data-Pointer verwenden um dort einen TimeStamp (GetTickCount eignet sich da ganz gut) zu hinterlegen. Anhand dieses Wertes kannst du zumindest die Erstellungsreihenfolge während einer Windows-Session wieder herstellen.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#4

Re: ListView Items verschieben und sortieren !?

  Alt 19. Jun 2005, 09:05
Hallo Aefan,

zum Listview-Sortieren gibts in der Code-Library etwas: http://www.delphipraxis.net/internal...ct.php?t=23835

Zum Vertauschen von Elementen: Du koenntest wie gesagt mit Insert() und Delete() arbeiten.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Äfan
(Gast)

n/a Beiträge
 
#5

Re: ListView Items verschieben und sortieren !?

  Alt 19. Jun 2005, 18:08
Thx @ all

Zitat:
Zum Vertauschen von Elementen: Du koenntest wie gesagt mit Insert() und Delete() arbeiten.
Das habe ich doch auch gemacht. Leider hats ja nicht funktioniert, jetzt gehts aber, hab nur nen kleinen fehler gehabt.

Für die, die den code wollen:

Zitat:
Delphi-Quellcode:
procedure TMainForm.Button3Click(Sender: TObject);
begin
  Listview1.Items.Insert(X);
  Listview1.Items[X].Assign(Listview1.Items.Item[Y]);
  Listview1.Items[Y].Free;
end;
X = Stelle an die das Item soll
Y = Item das verschoben werden soll
Wegen Listview-Sortieren: Geht das nicht schneller, einfacher und kürzer ?

mfg
  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 18:09 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