Spalte in TDBGrid ermitteln per DragDrop

Rund um die LCL und andere Komponenten

Spalte in TDBGrid ermitteln per DragDrop

Beitragvon schorsch » 3. Okt 2017, 10:43 Spalte in TDBGrid ermitteln per DragDrop

Moin @ALL,
folgendes Problem: Ich habe eine TDBGrid und möchte eine beliebige Spalte an der Überschrift anfassen und zB auf ein Panel ziehen - aber alle Ereignisse liefern irgendwie erst den Spaltennamen, sobald ich die Maustaste loslasse. Vorher steht immer nur die Vorherige drin :-( Ich möchte im Prinzip ne Art Mülleimer realisieren, indem ich die unerwünschte Spalte darauf ziehe und die wird dann automatisch aus dem Grid entfernt.

Wäre super, wenn da einer was zu hätte - schönen Feiertag ;-)

Der Schorsch
ich komme ja schon..
schorsch
 
Beiträge: 30
Registriert: 20. Mär 2010, 23:00
OS, Lazarus, FPC: Win10x64, RaspberryPi, MAC | 
CPU-Target: so ziemlich alles
Nach oben

Beitragvon wp_xyz » 3. Okt 2017, 14:51 Re: Spalte in TDBGrid ermitteln per DragDrop

Nächste Runde im Rate-Spiel "Was könnte der Programmierer in dem Code, den er nicht zeigt, falsch gemacht haben?"
wp_xyz
 
Beiträge: 2184
Registriert: 8. Apr 2011, 08:01

Beitragvon Michl » 3. Okt 2017, 16:09 Re: Spalte in TDBGrid ermitteln per DragDrop

Ich habe es jetzt nicht getestet. Falls sämtliche Operationen tatsächlich erst nach DBGrid.OnMouseUp ausgeführt werden, würde ich den Ansatz in DBGrid.OnMouseDown mit entsprechender eigener Umwandlung Koordinaten zu DBGrid.Column bzw. noch zum Field suchen.
Code: Alles auswählen
type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 
Michl
 
Beiträge: 2168
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon schorsch » 4. Okt 2017, 18:37 Re: Spalte in TDBGrid ermitteln per DragDrop

Moin nochmal,
also, wenn ich jetzt mal testdisplays innern Memo stelle, dann kommt in angegebener Reihenfolge: (per "TDBGrid(Source/Sender)...")
panel-DragOver: FieldName = ID - index = 0 (accept = true)
panel-DragDrop: FieldName = ID - index = 0
dbgrid-TitleClick: FieldName = Anschrift_Bestellung - index = 0

"dbgrid-TitleClick" kommt halt erst, wenn ich die Maustaste loslasse :-(

wobei die Spalte "id" die erste ist und "Anschrift_Bestellung" die 4.

Wie könnte ich denn per "MousePos" die Spalte herausbekommen? (ähnlich "getItemAt" oder sowas)

Tks vorab..

Der Schorsch
ich komme ja schon..
schorsch
 
Beiträge: 30
Registriert: 20. Mär 2010, 23:00
OS, Lazarus, FPC: Win10x64, RaspberryPi, MAC | 
CPU-Target: so ziemlich alles
Nach oben

Beitragvon Michl » 4. Okt 2017, 19:45 Re: Spalte in TDBGrid ermitteln per DragDrop

Man könnte das so http://www.lazarusforum.de/viewtopic.php?p=98538#p98538 machen.

Habe darauf basierend nun doch ein Beispiel (DBGrid mit Bufdataset) zusammengestellt. Dabei habe ich darauf geachtet, daß die Columns nur gelöscht werden können, wenn der User auf den Columntitel klickt. Die Columns lösche ich nicht, stelle nur deren Width auf 0. Dies kannst du natürlich anders handhaben.

Weiter könnte man als Dragcursor den Columnnamen statt dem Standard DND-Symbol anzeigen, das habe ich hier aber jetzt nicht eingebaut.

Viel Erfolg!
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Code: Alles auswählen
type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 
Michl
 
Beiträge: 2168
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon schorsch » 5. Okt 2017, 08:18 Re: Spalte in TDBGrid ermitteln per DragDrop

wow, supi. Werde es mir heute Abend mal ansehen..
Tks!
Der Schorsch
ich komme ja schon..
schorsch
 
Beiträge: 30
Registriert: 20. Mär 2010, 23:00
OS, Lazarus, FPC: Win10x64, RaspberryPi, MAC | 
CPU-Target: so ziemlich alles
Nach oben

Beitragvon Michl » 5. Okt 2017, 20:22 Re: Spalte in TDBGrid ermitteln per DragDrop

Michl hat geschrieben:Weiter könnte man als Dragcursor den Columnnamen statt dem Standard DND-Symbol anzeigen
Das hatte ich mir spaßeshalber gestern noch eingebaut. Vielleicht findest du das auch interessant?!
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Code: Alles auswählen
type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 
Michl
 
Beiträge: 2168
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon schorsch » 10. Okt 2017, 19:41 Re: Spalte in TDBGrid ermitteln per DragDrop

Hey, g..!, habs grad mal ausprobiert und gleich in eapea eingebaut und funzt super!

Finde ich echt mega, dass du dir die mühe gemacht hast! Big Tks!

Der Schorsch
ich komme ja schon..
schorsch
 
Beiträge: 30
Registriert: 20. Mär 2010, 23:00
OS, Lazarus, FPC: Win10x64, RaspberryPi, MAC | 
CPU-Target: so ziemlich alles
Nach oben

Beitragvon Michl » 13. Okt 2017, 15:21 Re: Spalte in TDBGrid ermitteln per DragDrop

Hallo schorsch,

wir waren ein paar Tage auf dem Fjord angeln. Daher habe ich erst jetzt deine Rückmeldung gesehen.

Danke fürs Feedback! Freut mich wenn du damit was anfangen kannst!

Michl
Code: Alles auswählen
type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 
Michl
 
Beiträge: 2168
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

• Themenende •

Zurück zu Komponenten und Packages



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried