Drag & drop über DBGrid

Ich habe ein Formular mit 2 DBGrids: DBGrid1 ist eine Master-DB, DBGrid2 die dazu gehörende Detail-DB. Nun möchte ich durch drag&drop die Zuordnung in der Detail-DB ändern, indem ich den markierten Datensatz aus DBGrid2 über DBGrid1 ziehe.
Die Zeile in DBGrid1, über der sich die Maus befindet, erhalte ich über Mouscoord, nicht aber den dazu gehörenden Datensatz. Wie kann ich diesen ermitteln?

Du könntest eine Spalte mit Visible=false in DBGrid1 anhängen, die den primary Key der Tabelle enthält.

Bye
Nic

Das DBGrid müsste die Property DataSource haben, welche wiederrum die Property DataSet hat. Über DBGrid.DataSource.DataSet.FieldByName(‚id‘).AsInteger könntest Du so an die Datensatz-ID des angeklickten Datensatzes kommen. Ist vielleich ein wenig umständlicher als es sein müsste, habe aber gerade Delphi nicht griffbereit.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Danke, damit komme ich aber immer nur an den aktuelen Datensatz, nicht den, über dem gerade die Maus „schwebt“.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Du könntest eine Spalte mit Visible=false in DBGrid1 anhängen,
die den primary Key der Tabelle enthält.

Bye
Nic

Wie komme ich an den primary key? Bei Zugriffen auf die Tabelle (DBGrid1.Datasource.Dataset) erhalte ich immer den vor der drag&drop-Aktion markierten Datensatz geliefert.
Mein Problem ist: wenn ich ein DBGrid mit 10 Zeilen habe und die angezeigte Tabelle hat 100 Datensätze, dann kann Zeile 10 des DBGrid Datensatz 10 … 100 anzeigen.

Nun - jetzt verstehe ich Dein Problem, das wirst Du aber so einfach nicht realisieren können. Du müsstest mit dem Mouse-Object rumhantieren und dann die Koordinaten umrechnen. Um eine Umrechnung durchführen zu können bräuchtest Du aber bestimmte geschütze Eigenschaften und Methoden es DBGrid-Objektes an die Du nicht ran kommst. Du wirst nicht umher kommen Dir Dein eigens DBGrid dafür zu schreiben.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]