Entwickler-Ecke

Datenbanken - Drag und Drop auf DBGrids


nigel - Sa 25.01.03 18:46
Titel: Drag und Drop auf DBGrids
Hallo,

ich habe folgendes Problem: Ich nutze in einer Anwendung zwei DBGrids und möchte dem Benutzer ermöglichen Daten von dem einen Grid ins andere per Drag'n'Drop zu verschieben. Um die Daten im Zielgrid korrekt einzufügen müsste ich aber wissen, auf welchen Datensatz der Benutzer gedropped hat. Mein erster Gedanke war den Datensatz mit
ADODataset.RecNo:=DBGrid.Mousecoord(x,y).y
anzuspringen. Mousecoord(x,y).y liefert mir aber nur die Bildschirmposition der Zeile zurück, wenn das DBGrid während des Drag'n'Drop-Vorgangs also etwas nach unten gescrollt ist so stimmt dieser Wert nicht mehr mit der Position des Datensatzes im ADODataset (-> recno) überein.

Kann mir jemand einen Tipp geben, wie ich das Ganze lösen könnte. Vielen Dank im Vorraus!

nigel


löschi - Di 28.01.03 13:32

hi ,
soweit ich weiß brauchst du nur den datensatz der tabelle übernehmen
z.b im drag un drop ereignis:

Quelltext
1:
2:
3:
adoquery1. edit;
adoquery1.fieldbyname('****').asstring := adoquery2Fieldbynamme ('****').asstring;
adoquery1.post;

dann müsstest du in eigentlich in der anderen tab haben,

gruß löschi

Moderiert von user profile iconTino: Code-Tags hinzugefügt.


nigel - Mi 29.01.03 11:53

löschi hat folgendes geschrieben:
hi ,
soweit ich weiß brauchst du nur den datensatz der tabelle übernehmen


Danke löschi, aber ich möchte die Datensätze nicht eins zu eins übernehmen, sondern nur teilweise, zusätzlich kommen noch Daten aus anderen DB-Tabellen. Außederm gibt es in der Zieltabelle ein Feld namens Position nachdem das Grid sortiert ist. Fügt nun der Benutzer mitten in der Tabelle etwas ein, so möchte ich wissen, bei welchem Datensatz dies geschehen ist, so dass ich bei allen nachfolgenden dieses Positionsfeld ändern kann. Hier bei hatte ich obiges Problem, dass mousecoord.y und recno bei einem gescrollten DB-Grid nicht deckungsgleich sind.