![]() |
JvDBTreeView und DragnDrop
Hallo,
ich möchte folgende Funktion realisieren: In einer JvDBTreeView wird eine MySQL-Tabelle angezeigt. In einer JvDBUltimGrid wird eine weitere Tabelle angezeigt. Per DragnDrop soll nun ein Datensatz aus der Baumsicht in die Tabelle kopiert werden. Leider ist es mir nicht gelungen, den aktuellen Datensatz der Treeview zu ermitteln und in die Grid-Tabelle einzufügen. Schon beim Ereingnis onStartDrag erhalte ich immer den ersten Datensatz der Tabelle - abhängig von der eingestellten Sortierung bei TZTable. Nach dem Ziehen ist der erste Datensatz selektiert. JvTreeView hat DragMode:=dmAutomatic und ReadOnly:=true; Die Datenbank ist über die ZEOS-Komponenten angebunden Folgende Codeteile sind relevant:
Delphi-Quellcode:
In DMDokDB.DSTags.DataSet.FieldByName('ID').Value steht immer der erste Datensatz der Tabelle!
procedure TDokDBMainForm.JvDBUltimGrid1DragDrop(Sender, Source: TObject; X,
Y: Integer); begin with DSDocTags.DataSet do begin Append; FieldByName('DocID').Value:=DSDocs.DataSet.FieldByName('ID').Value; FieldByName('TagID').Value:=DMDokDB.DSTags.DataSet.FieldByName('ID').Value; end; end; Wie gesagt, auch wenn ich beim Ereignis onStartDrag den Wert ermittle, ist es immer der erste Wert der Tabelle! Ein DBEdit an der gleichen Datenquelle zeigt beim Ziehen den richtigen (selektierten) Datensatz an! Ich bin echt ratlos. Wer hat ne Idee? Gruß Andreas |
Re: JvDBTreeView und DragnDrop
Hallo Andreas,
wenn ich dein Problem richtig verstehe, dann geht es dir nur um die Ermittlung des korrekten Datensatzes zu einem bestimmten Knoten im JvDBTreeView und alles andere sind Hintergrundinfos?
Delphi-Quellcode:
So sollte es funktionieren.
procedure TDemoForm.DemoPanelDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean); begin Accept := (Source is TJvDBTreeView) and Assigned(TJvDBTreeView(Source).Selected); end; procedure TDemoForm.DemoPanelDragDrop(Sender, Source: TObject; X, Y: Integer); begin with Source as TJvDBTreeView do TPanel(Sender).Caption := DataLink.DataSet.Fields[0].AsString; end; Freundliche Grüße vom marabu |
Re: JvDBTreeView und DragnDrop
Hallo,
habe es gleich probiert und es geht! :thumb: Aber warum geht meine Variante nicht? Die Datenquelle hat doch den selektierten Knoten als aktuellen Datensatz, wie man aus den Kontroll-Edits ersehen kann. Wenn ich die Datenquelle im Programm abfrage, bekomme ich diesen nicht als Ergebnis. Warum? Wenn ich Dich richtig verstehe, muss ich auf die Eigenschaft Datalink zurückgreifen, die mir bis heute noch nie begegnet ist. In der Onlinehilfe finde ich dazu (TCustomDBGrid.DataLink Eigenschaft) Folgendes: Zitat:
By the way: wie schafft man im Schnitt ca. 10 Postings pro Tag? Gruß und Danke Andreas |
Re: JvDBTreeView und DragnDrop
Hallo,
Zitat:
Zitat:
Zitat:
Zitat:
Freundliche Grüße |
Re: JvDBTreeView und DragnDrop
Ja,
das mit dem Lookup kann stimmen. Das wäre meine nächste Tat gewesen. Spätestens, wenn ich die Anwendung von SDI auf MDI umstelle! Nochmals vielen Dank. Vielleicht sollte ich auch mehr im Forum fragen, dann gings mit dem Programmieren auch voran! :wink: Gruß und guten Rutsch und alles Gute im neuen Jahr, Andreas :cheers: :party: :hi: |
Re: JvDBTreeView und DragnDrop
Andreas, marabu,
ich versuche auch gerade Drag&Drop hinzukriegen, aber in die andere Richtung, von einem TJvDBGrid zu einem TJvDBTreeView. Leider gibt es einen wichtigen Unterschied: :cry: Mir den Code unten wird der aktuelle Datensatz = Knoten im Tree gefunden, aber nicht der Knoten, wo der Drag&Drop endet. Drop ändert nicht den gewählten Knoten. Has jemand sowas schon das mal ausprobiert? Ist eigentlich nicht exotisch, so funktioniert z.B. das verschieben einer E-Mail in Outlook - von einem Grid zu einem Tree.
Delphi-Quellcode:
with Source as TJvDBTreeView do
TPanel(Sender).Caption := DataLink.DataSet.Fields[0].AsString; P.S. Andreas, was ist der Vorteil von JvDBUltimGrid zu JvDBGrid? Ist nicht das TJvDBGrid das Jedi DB Grid das weiterentwickelt wird? Gruss Martinalex |
Re: JvDBTreeView und DragnDrop
Hi,
jetzt, wo Du es sagst, rieche ich es auch :oops: Die beiden Komponenten unterscheiden sich in zwei Properties. Beim JvDBGrid ist mir das EditContros gar nicht aufgefallen :oops: :oops: . Deshalb habe ich die Ultim-Variante eingesetzt. Wenn Du sagst, JvDBGrid wird weiterentwickelt, muss ich wohl umstellen! Den Knoten findest Du so:
Delphi-Quellcode:
Gruß Andreas
procedure TDokDBMainForm.TDBTreeViewDragDrop(Sender, Source: TObject; X,
Y: Integer); begin TDBTreeView.GetNodeAt(x,y); // weitere Funktionen... end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:01 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 by Thomas Breitkreuz