![]() |
2 Listviews per Drag ´n Drop füllen
Hallo,
ich habe 2 Listviews, die ich mit dem Inhalt von Datenbankfeldern fülle. Anschließend möchte ich mittels Drag `n Drop die Felder aus der ListView1 in die SubItems der ListView2 ziehen. Ich brauche das für einen Dateiimport und der manuellen Zuordnung von Feldern (Fieldmapping). ListView1 hat eine Spalte mit den Feldern der Tabelle Import. ListView2 hat zwei Spalten mit den bereits vorhandenen Feldern und eines für die Zuordnung. Jetzt möchte ich die Feldnamen aus der ListView1 in die ListView2 ziehen. Diese sollen dann als Subitems hinter die selektierten Werte in ListView2 als Subitems erscheinen. Zuletzt möchte ich dann die ListView2 (Spalte 1 und Spalte2) auslesen und daraus eine SQL Funktion basteln. so in etwa soll das Ergebnis aussehen! LISTVIEW1 FELDER ------ NAME STRASSE PLZ ORT LISTVIEW2 FELDER......ZUORDNUNG --------------------- NR FIRMA NAME1.......NAME NAME2 STRASSE.....STRASSE LAND PLZ.........PLZ ORT.........ORT Ebenso soll es die Möglichkeit geben, die Zuordnung der Felder zu löschen. das habe ich mir so gedacht:
Delphi-Quellcode:
Wer kann mir bei dieser Aufgabenstellung behilflich sein?
procedure TForm1.Button1Click(Sender: TObject);
var i : integer; begin for i := 0 to ListView2.Items.Count -1 do ListView2.Items.Item[i].SubItems.Clear; ListView2.Refresh; end; |
Re: 2 Listviews per Drag ´n Drop füllen
Bin jetzt schon ein Stück weiter.
Das mit der Zuordnung der einzelnen Felder habe ich so gelöst.
Delphi-Quellcode:
Jetzt muss ich nur noch die SQL-Anweisung zusammenbasteln.
procedure TForm1.FormCreate(Sender: TObject);
begin ListView1.DragMode := dmAutomatic; end; procedure TForm1.ListView2DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin Accept := Source is TListView; end; procedure TForm1.ListView2DragDrop(Sender, Source: TObject; X, Y: Integer); begin with ListView2 do begin begin if DropTarget = nil then Exit; Selected := DropTarget; Items.Item[Selected.Index].SubItems.Clear; Items.Item[Selected.Index].SubItems.Add(ListView1.Selected.Caption); end; end; end; procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin for i := 0 to ListView2.Items.Count - 1 do ListView2.Items.Item[i].SubItems.Clear; ListView2.Refresh; end; Dazu brauch ich die Einträge von der ListView2, bei denen alle zwei Spalten belegt sind. Die SQL Anweisung sollte so aussehen:
SQL-Code:
wobei Bez,Typ,Data die Werte aus der 1. Spalte der Listview2 und I.Bez,I.Typ,I.Data die Werte aus der 2. Spalte der ListView2 darstellen.
UPDATE MyTable
SET Bez = I.Bez, Typ = I.Typ, Data = I.Data FROM MyTable AS L RIGHT OUTER JOIN Import AS I ON L.Nr = I.Nr Wie kann ich die ListView2-Einträge auslesen, bei denen auch ein SubItem-Eintrag vorhanden ist? |
Re: 2 Listviews per Drag ´n Drop füllen
Hi,
ob in der zweiten Spalte deines Items ein Wert eingetragen ist, kannst du so feststellen:
Delphi-Quellcode:
Freundliche Grüße
var
li: TListItem; begin // ... if (li.SubItems.Count > 1) and (SubItems[1] <> '') then begin // ... Wert vorhanden end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:19 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