Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Listview: Spalten verschieben per drag and drop (https://www.delphipraxis.net/65251-listview-spalten-verschieben-per-drag-drop.html)

marlem 14. Mär 2006 10:19


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!

fylo 15. Mär 2006 07:39

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?

marlem 16. Mär 2006 12:41

Re: Listview: Spalten verschieben per drag and drop
 
öhm... habe ich nicht o ganz geblickt!
momentan probiere ich foplgendes:
Delphi-Quellcode:
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;
funzt aber nicht immer!

fylo 16. Mär 2006 16:11

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:
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;
:idea: Und siehe da selbst wenn ich die Spalten verschiebe landen die Daten in der richtigen Spalte!

Vielleicht hast du einen Fehler in deiner "Einfügen"-Procedure? :gruebel:

MCXSC 23. Apr 2006 18:31

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?

MCXSC 25. Apr 2006 14:07

Re: Listview: Spalten verschieben per drag and drop
 
*hoch-schieb*


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:40 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