![]() |
Aus DbGrid Datensatz per Drag&Drop verschieben
Hallo
ich habe ein DbGrid und möchte aus dem einen Datensatz (Zeile) per Drag&Drop auf eine andere Komponente verschieben. Das Problem: Wenn ich DragMode auf dmAutomatic setze, lässt sich kein Datensatz per anklicken anwählen. Ausser mit der rechten Maustatse aber wer macht das schon? Mein Versuch DragMode auf dmManual und dann
Delphi-Quellcode:
schlägt fehl, weil das MousDown nur ausgelöst wird, wenn ich nicht auf einen Datensatz klicke. Also unter die letzte Zeile oder in den Header. Jetzt kann ich zwar zuerst den Datensatz auswählen und dann unter die letzte Zeile gehen und von dort verschieben, aber das ist auch alles andere als normal.
procedure TForm.DbGridMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft then { Drag-Operation nur starten, wenn linke Maustaste gedrückt wird } BeginDrag(False, 10); { Falls ja, Drag-Operation starten sobald um mehr als 10 Pixel verschoben } end; Wie kann ich das MousDown auch bekommen, wenn ich auf einen Datensatz klicke? Danke für eure Hilfe Gerd |
AW: Aus DbGrid Datensatz per Drag&Drop verschieben
Hallo,
also ich mach das hier in einem Projekt genauso. Aber Du musst das "BeginDrag" des Grids nicht des Forms verwenden! Also hier: dbgrdXXX.BeginDrag(false, 0); Zumindest hier (TSMDBGrid) geht das problemlos! |
AW: Aus DbGrid Datensatz per Drag&Drop verschieben
Ja natürlich. Das habe ich auch so in meinem Source.
Problem ist aber, dass OnMouseDown nicht aufgerufen wird, wenn ich auf einen Datensatz klicke. Da wird dieses Ereignis abgfangen um den Satzzeiger im Grid zu setzen und dann nicht weitergereicht. |
AW: Aus DbGrid Datensatz per Drag&Drop verschieben
Zitat:
Zitat:
Delphi-Quellcode:
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin if (GetAsyncKeyState(VK_LBUTTON) and $8000)<>0 then if not Mouse.IsDragging then DBGrid1.BeginDrag(false, 0); end; |
AW: Aus DbGrid Datensatz per Drag&Drop verschieben
Ich meinte in meinem Originalcode. Da hatte ich dbgrAt.BeginDrag drin.
Mit OnMouseMove geht es. Hatte ich auch schon probiert, aber ohne die
Delphi-Quellcode:
Damit funktioniert es einwandfrei.
if (GetAsyncKeyState(VK_LBUTTON) and $8000)<>0 then
if not Mouse.IsDragging then Noch eine Idee wie man dafür sorgen kann, dass OnMouseDown durchgereicht werden kann? Danke Gerd |
AW: Aus DbGrid Datensatz per Drag&Drop verschieben
Im Moment hab ich da auch keine einfache Idee.
In dem von mir verwendeten TSMDBGrid ist das MouseDown Event überschrieben. Frag mal Google danach - die Sourcen sind ja verfügbar. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 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