AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi ListView Eintrage verschieben (alternativ: kopieren)
Thema durchsuchen
Ansicht
Themen-Optionen

ListView Eintrage verschieben (alternativ: kopieren)

Ein Thema von Mat · begonnen am 27. Mai 2003 · letzter Beitrag vom 28. Mai 2003
Antwort Antwort
Mat

Registriert seit: 27. Mai 2003
Ort: Hönow
104 Beiträge
 
Delphi 7 Professional
 
#1

ListView Eintrage verschieben (alternativ: kopieren)

  Alt 27. Mai 2003, 02:24
Hi,


ich habe ein Problem mit der ListView-Komponente:

der ViewStyle ist 'vsRecord'. Nun moechte ich die Eintraege manuell sortieren, also 'einen hoch' oder 'einen runter'.

Da ich dazu garnichts gefunden habe, hab ich probiert, den gerade ausgewaehlten Eintrag einfach mit AddItem zu kopieren, um dann anschliessend das Original zu loeschen..

In der Theorie klingt das ganz gut, aber leider klappt's nicht so richtig..

Delphi-Quellcode:
  selected_item := ListView_Address.Selected;
  pos := ListView_Address.Items.IndexOf(selected_item);

  ListView_Address.Items.AddItem(selected_item, pos);

  ListView_Address.Items.Delete(pos + 1);
wenn ich dann den entsprechenden Button druecke, erhalte ich
'Access Violation at address 00000000. Read of address 00000000'


Das wirft mich als Einsteiger doch so ziemlich aus der Bahn..

hat jemand eine Idee?


Danke
Mat

[edit=Daniel B]Delphi-Tags eingefügt. MfG Daniel B.[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2
  Alt 27. Mai 2003, 02:34
Hilfe -> TCustomListview -> OnCompare.
Ist sogar mit Code-Beispiel.

Zitat:
Da ich dazu garnichts gefunden habe, [..]
Dazu fällt mir jetzt eigentlich gar nichts mehr ein. Du hast weder in der Delphi-Hilfe gekuckt, noch die Foren-Suche benutz, noch in der Code-Library gekuckt, noch kannst du Google bemüht haben. Bei Google mit "delphi listview sortieren" gesucht und kuck mal, was der erste Link liefert...
http://www.google.de/search?q=delphi...a=lr%3Dlang_de
Genau, einen Beitrag aus der Delphipraxis in der Code-Library.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#3
  Alt 27. Mai 2003, 02:49
Moin Mat,

erst einmal herzlich willkommen in der Delphi-PRAXiS.

Hier mal ein Beispiel, wie Du eine Zeile mit Hilfe eines Buttons nach oben verschieben kannst.

Delphi-Quellcode:
procedure TfrmMAIN.Button1Click(Sender: TObject);

var
  liTo : TListItem;

begin
  // Ist keiner oder der oberste Eintrag ausgewählt gibt's nichts zu tun
  if ListView1.Selected = nil then exit;
  if ListView1.Selected.Index = 0 then exit;
  // Eine neue Zeile über der markierten einfügen
  liTo := ListView1.Items.Insert(ListView1.Selected.Index-1);
  // die gewählte Zeile dort hinkopieren
  liTo.Assign(ListView1.Selected);
  // und dann löschen
  ListView1.Items.Delete(ListView1.Selected.Index);
end;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Mat

Registriert seit: 27. Mai 2003
Ort: Hönow
104 Beiträge
 
Delphi 7 Professional
 
#4
  Alt 27. Mai 2003, 03:41
Danke Chris, So funktionierts!!

@Luckie
ich wusste garnicht, das mein Rechner so offen ist, dass du mir bei der arbeit zuschauen kannst.
ich habe sehrwohl bei google, in der hilfe und hier im forum gesucht..
allerdings nicht nach 'listview sortieren', da ich ja nicht sortieren, sondern verschieben sollte.
Das Beispiel bei TCustomListView habe ich nicht gefunden, aber das zeigt ja auch das Veraendern von Spalten.

Wo wir also schon bei kindischen Anschuldigungen sind, du hast meinen Post nicht richtig gelesen!


Mat
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5
  Alt 27. Mai 2003, 12:22
Ok, dann haben wir uns mißverstandenund ich muß mich entschuldiegen.

Aber das habe ich unter "manuellen sortieren" verstanden, da man ja auch im Objekt-Inspektort die Sortierung voreinstellen kann. Hättest du geschrieben: "Wie kann ich einen Listviewitem per Button-Klick nach oben oder unten verschieben?" Dann wäre deutlicher geworde, was du meinst bzw. willst.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Mat

Registriert seit: 27. Mai 2003
Ort: Hönow
104 Beiträge
 
Delphi 7 Professional
 
#6
  Alt 28. Mai 2003, 15:56
aber chris hat mich verstanden! ok, ok war nur spass


is ja quatsch zu streiten, danke trotzdem fuer die hilfe

vielleicht schieb ich nochmal ne frage zur automatischen sortierung ein:

neben meinem listview gibt's drei knoepfe. einen zum hochschieben, einem zum runterschieben und einen zum komplett automatischen sortieren (steht sinnvollerweise 'abc' drauf )

zum sortieren benutze ich einfach

Listview1.SortStyle := (wie auch immer da automatisch heisst )
womit ja auch bestehende Eintrage sortiert werden

und danach setz ich den SortStyle einfach wieder auf manuell, wobei ja die bestehenden Eintraege nicht mehr veraendert werden, aber alle neuen Eintraege wieder hintenrangehangen werden.


Mir funktioniert das, aber irgendwie scheint das zu einfach... kann man das so lassen, oder gibt's elegantere Moeglichkeiten


Danke

Mat
  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 02:58 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