AGB  ·  Datenschutz  ·  Impressum  







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

Aus DbGrid Datensatz per Drag&Drop verschieben

Ein Thema von norwegen60 · begonnen am 18. Jun 2018 · letzter Beitrag vom 19. Jun 2018
Antwort Antwort
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#1

Aus DbGrid Datensatz per Drag&Drop verschieben

  Alt 18. Jun 2018, 18:08
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:
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;
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.
Wie kann ich das MousDown auch bekommen, wenn ich auf einen Datensatz klicke?

Danke für eure Hilfe
Gerd
  Mit Zitat antworten Zitat
Benutzerbild von mischerr
mischerr

Registriert seit: 6. Feb 2004
Ort: Konz
238 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Aus DbGrid Datensatz per Drag&Drop verschieben

  Alt 19. Jun 2018, 06:33
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!
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#3

AW: Aus DbGrid Datensatz per Drag&Drop verschieben

  Alt 19. Jun 2018, 07:27
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.
  Mit Zitat antworten Zitat
Benutzerbild von mischerr
mischerr

Registriert seit: 6. Feb 2004
Ort: Konz
238 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Aus DbGrid Datensatz per Drag&Drop verschieben

  Alt 19. Jun 2018, 08:33
Zitat:
Ja natürlich. Das habe ich auch so in meinem Source.
Nein, im Code fehlt das "DBGrid." vor dem "BeginDrag()"

Zitat:
Problem ist aber, dass OnMouseDown nicht aufgerufen wird
Alternativ über das MouseMove-Event versuchen:
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;
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#5

AW: Aus DbGrid Datensatz per Drag&Drop verschieben

  Alt 19. Jun 2018, 09:07
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:
if (GetAsyncKeyState(VK_LBUTTON) and $8000)<>0 then
    if not Mouse.IsDragging then
Damit funktioniert es einwandfrei.

Noch eine Idee wie man dafür sorgen kann, dass OnMouseDown durchgereicht werden kann?

Danke
Gerd
  Mit Zitat antworten Zitat
Benutzerbild von mischerr
mischerr

Registriert seit: 6. Feb 2004
Ort: Konz
238 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Aus DbGrid Datensatz per Drag&Drop verschieben

  Alt 19. Jun 2018, 14:26
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.
  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 16:21 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