![]() |
Listview: Spalten verschieben per drag and drop
Hallo,
habe zwar einige threads hier entdeckt, mit drag and drop im listview, aber mein problem nicht! ich möchte spalten in einem listview per drag & drop verschieben. Hierfür habe ich die listview eigenschaft fulldrag auf true gesetzt und schon geht es! nun habe ich habe zwei probleme: 1. mein listview ist ein warenkorb in welchem per programmcode artikel eingetragen werden. verschiebe ich nun spalten per drag & drop und lege danach einen artikel in den warenkorb (zu einem artikel gehören artikelnummer, beschreibung, einheit, preis usw.), stimmt die zuordnung nicht mehr! Sprich in den verschobenen spalten, landemn die verkehrten daten. damit die zuordnung wieder richtig funktioniert, muss ich das fenster schließen und wieder öffnen. wie verhindere ich das? 2. wenn im warenkorb(=listview) schon artikel drin sind, soll das verschieben vo spalten per drag and drop nicht möglich sein! wie bekommt man das "zuverlässig" (so das es immer tut und nicht nur manchmal) hin? wäre sehr froh, wenn jemand rat wüßte! |
Re: Listview: Spalten verschieben per drag and drop
Hi,
kannst du nicht während des Drag&Drop'ens bzw. danach herausfinden wo sich welche Spalte befindet und dann beim einfügen eines Artikels die Reihenfolge der Daten dementsprechend anpassen? |
Re: Listview: Spalten verschieben per drag and drop
öhm... habe ich nicht o ganz geblickt!
momentan probiere ich foplgendes:
Delphi-Quellcode:
funzt aber nicht immer!
procedure TFormKatHaendler.LvwWarenkorbFumoColumnDragged(Sender: TObject);
var i : integer; begin //Wenn im Warenkorb was drin ist if LvwWarenkorbFumo.Items.Count > 0 then begin for i := 0 to LvwWarenkorbFumo.Columns.Count-1 do begin LvwWarenkorbFumo.Column[i].Index := LvwWarenkorbFumo.Column[i].Tag; end; Meldung('Im Warenkorb sind Artikel, deswegen können die Spalten nicht verschoben werden'); exit; end else for i := 0 to LvwWarenkorbFumo.Columns.Count-1 do LvwWarenkorbFumo.Column[i].Tag := i; end; |
Re: Listview: Spalten verschieben per drag and drop
Also ich hab ebend mal schnell ein Listview auf eine Form gezogen, FullDrag auf True, ViewStyle auf vsReport, ein paar Spalten (Anzahl, Einheit, Beschreibung, Einzelpreis und Gesamtpreis) hinzugefüht und einen Button mit dem ich folgendes mache:
Delphi-Quellcode:
:idea: Und siehe da selbst wenn ich die Spalten verschiebe landen die Daten in der richtigen Spalte!
procedure TForm1.Button1Click(Sender: TObject);
var Item:TListItem; anzahl,preis:integer; begin item := listview1.Items.add; anzahl:=strtoint(InputBox('Eingabe','Anzahl','')); Item.Caption:=inttostr(anzahl);; Item.Subitems.Add(InputBox('Eingabe','Einheit','')); Item.Subitems.Add(InputBox('Eingabe','Beschreibung','')); preis:=strtoint(InputBox('Eingabe','Preis','')); Item.Subitems.Add(inttostr(preis)); Item.Subitems.Add(inttostr(anzahl*preis)); end; Vielleicht hast du einen Fehler in deiner "Einfügen"-Procedure? :gruebel: |
Re: Listview: Spalten verschieben per drag and drop
Habe des gleiche Problem, bzw. ein kleines anderes:
Wie kann ich denn die Reihenfolge der Spalten spechern und wieder auslesen? |
Re: Listview: Spalten verschieben per drag and drop
*hoch-schieb*
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz