AGB  ·  Datenschutz  ·  Impressum  







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

2 Listviews per Drag ´n Drop füllen

Ein Thema von needatip · begonnen am 27. Dez 2006 · letzter Beitrag vom 28. Dez 2006
Antwort Antwort
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#1

2 Listviews per Drag ´n Drop füllen

  Alt 27. Dez 2006, 15:05
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:
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;
Wer kann mir bei dieser Aufgabenstellung behilflich sein?
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: 2 Listviews per Drag ´n Drop füllen

  Alt 28. Dez 2006, 08:29
Bin jetzt schon ein Stück weiter.
Das mit der Zuordnung der einzelnen Felder habe ich so gelöst.

Delphi-Quellcode:
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;
Jetzt muss ich nur noch die SQL-Anweisung zusammenbasteln.
Dazu brauch ich die Einträge von der ListView2, bei denen alle zwei Spalten belegt sind.
Die SQL Anweisung sollte so aussehen:
SQL-Code:
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
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.
Wie kann ich die ListView2-Einträge auslesen, bei denen auch ein SubItem-Eintrag vorhanden ist?
  Mit Zitat antworten Zitat
marabu

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

Re: 2 Listviews per Drag ´n Drop füllen

  Alt 28. Dez 2006, 11:04
Hi,

ob in der zweiten Spalte deines Items ein Wert eingetragen ist, kannst du so feststellen:

Delphi-Quellcode:
var
  li: TListItem;
begin
  // ...
  if (li.SubItems.Count > 1) and (SubItems[1] <> '') then
  begin
    // ... Wert vorhanden
  end;
end;
Freundliche Grüße
  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 10:29 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