Spalte in TDBGrid ermitteln per DragDrop
-
- Beiträge: 46
- Registriert: Sa 20. Mär 2010, 23:00
- OS, Lazarus, FPC: Win10x64, RaspberryPi, MAC
- CPU-Target: so ziemlich alles
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
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
der feind der erde ist der mensch
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?"
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;
-
- Beiträge: 46
- Registriert: Sa 20. Mär 2010, 23:00
- OS, Lazarus, FPC: Win10x64, RaspberryPi, MAC
- CPU-Target: so ziemlich alles
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
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
der feind der erde ist der mensch
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!
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!
- Dateianhänge
-
- Test DND DBGrid Bufdataset.zip
- (3.17 KiB) 60-mal heruntergeladen
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 46
- Registriert: Sa 20. Mär 2010, 23:00
- OS, Lazarus, FPC: Win10x64, RaspberryPi, MAC
- CPU-Target: so ziemlich alles
Re: Spalte in TDBGrid ermitteln per DragDrop
wow, supi. Werde es mir heute Abend mal ansehen..
Tks!
Der Schorsch
Tks!
Der Schorsch
der feind der erde ist der mensch
Re: Spalte in TDBGrid ermitteln per DragDrop
Das hatte ich mir spaßeshalber gestern noch eingebaut. Vielleicht findest du das auch interessant?!Michl hat geschrieben:Weiter könnte man als Dragcursor den Columnnamen statt dem Standard DND-Symbol anzeigen
- Dateianhänge
-
- Test DND DBGrid Bufdataset mit Title.zip
- (3.72 KiB) 82-mal heruntergeladen
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 46
- Registriert: Sa 20. Mär 2010, 23:00
- OS, Lazarus, FPC: Win10x64, RaspberryPi, MAC
- CPU-Target: so ziemlich alles
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
Finde ich echt mega, dass du dir die mühe gemacht hast! Big Tks!
Der Schorsch
der feind der erde ist der mensch
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
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;