| |
Fragen & Antworten rund um sev-KomponentenRe: sevDataGrid: Drag&Drop von Datenzeilen möglich ? | | | Autor: UE_ACC | Datum: 14.06.09 10:59 |
| Hallo Dieter,
wie kann ich die Funktion den prüfen, wenn im Grid2 sich keine Veränderung darstellt sobald ich die rechte Maustaste wieder loslasse. Es passiert derzeit nichts, wenn ich den Datensatz im Grid1 picke und zum Grid2 herüberschieben möchte.
Viele Grüße
Ulrich | |
sevDataGrid: Drag&Drop von Datenzeilen möglich ? | | | Autor: Wolfgang Schwarz | Datum: 27.09.08 08:30 |
| Hallo,
ist mit sevDataGrid Drag&Drop von "Daten" möglich ?
In der Hilfe lese ich immer nur von Drag&Drag von "Spalten"
Ich möchte z.B. eine Datenzeile in einem sevDataGrid von einem in ein anderes sevDataGrid verschieben (um z.B. Lieferscheine für eine LKW-Tourenplanung zuzuordnen)
Wie mache ich sowas mit sevDataGrid (ich meine die Drag&Drap-Funktionalität)
Wolfgang Schwarz | |
Re: sevDataGrid: Drag&Drop von Datenzeilen möglich ? | | | Autor: caramba | Datum: 27.09.08 09:02 |
| Hallo Wolfgang,
das ist eine interessante Frage. Ich versuche schon seit einiger
Zeit vergebens, einzelne Felder einer Row in ein anderes Grid mit
Drag&Drop zu verschieben. Bisher bin ich nicht weitergekommen.
Vielleicht hat einer unserer Kollegen einen guten Rat?!
Gruss
Rainer | |
Re: sevDataGrid: Drag&Drop von Datenzeilen möglich ? | | | Autor: Dieter (Moderator) | Datum: 27.09.08 09:41 |
| Das Ganze lässt sich via OLEDrag & Drop realisieren.
Beispiel:
Form mit 2 DataGrid's und folgender Code:
Option Explicit
Private Sub Form_Load()
Dim I As Long
With Grid1
.DataMode = Mode_List
.ColumnAdd , "Spalte 1"
.ColumnAdd , "Spalte 2"
For I = 1 To 100
.AddItem "Eintrag " & CStr(I) & vbTab & "Row" & CStr(I) & ",Col2"
Next I
.WheelMouse = False
.OLEDropMode = Manuell
.AllowMultiSelect = True
End With
With Grid2
.DataMode = Mode_List
.ColumnAdd , "Spalte 1"
.ColumnAdd , "Spalte 2"
.WheelMouse = False
.OLEDropMode = Manuell
End With
End Sub Private Sub Grid1_CellClick(ByVal nRow As Long, ByVal nCol As Long, ByVal _
Button As Integer, ByVal Shift As Integer)
If Button = vbRightButton Then
' bei Rechtsklick - Drag-Vorgang starten
Grid1.OLEDrag
End If
End Sub Private Sub Grid1_OLEStartDrag(Data As DataObject, AllowedEffects As Long)
Dim I As Integer
' Erlaubte Aktionen festlegen
AllowedEffects = vbDropEffectCopy Or vbDropEffectMove
' Daten-Format festlegen
Data.SetData , vbCFFiles
' Einträge hinzufügen
For I = 0 To Grid1.SelCount - 1
Data.Files.Add Grid1.List(Grid1.SelRow(I))
Next I
End Sub Private Sub Grid2_OLEDragDrop(Data As DataObject, Effect As Long, Button As _
Integer, Shift As Integer, X As Single, Y As Single)
Dim I As Integer
Dim nRow As Long
nRow = Grid2.GetRowFromCursor
' Prüfen, ob es sich um korrekte Daten handelt
If Data.GetFormat(vbCFFiles) Then
' alle Einträge (1 bis Files.Count)
For I = 1 To Data.Files.Count
' Dateiname der Listbox hinzufügen
Grid2.AddItem Data.Files(I), nRow
Next I
End If
End Sub _________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de | |
Re: sevDataGrid: Drag&Drop von Datenzeilen möglich ? | | | Autor: Buggy | Datum: 29.09.08 18:45 |
| Hallo Dieter,
sehr interresant, und wie läßt sich sowas im Mode_Recordset realisieren
Gruß Buggy | |
Re: sevDataGrid: Drag&Drop von Datenzeilen möglich ? | | | Autor: Buggy | Datum: 30.09.08 08:52 |
| Hallo Dieter.
danke für die Info
mfg. Buggy | |
Re: sevDataGrid: Drag&Drop von Datenzeilen möglich ? | | | Autor: UE_ACC | Datum: 13.06.09 16:55 |
| Hallo Dieter,
ich möchte gern auch das sevDataGrid und OLEDRAG unter MS ACCESS VBA einsetzten! Leider funktioniert mir Dein beschriebenes Beispiel unter VBA bei nicht.
Beim Debuggen erscheint schon eine Fehlermeldung, weil das System den Datentyp "DataObject" nicht kennt. Ich habe Ihn gewandelt in "Object", die Fehlermeldung erscheint nicht mehr, aber auch keine Drag&Drop-Funktion!
Fehler -> Grid2_OLEDragDrop(Data As DataObject, Effect As Long, Button As _
Integer, Shift As Integer, X As Single, Y As Single)
Gibt es eine Möglichkeit?
Viele Grüße
Ulrich | |
Re: sevDataGrid: Drag&Drop von Datenzeilen möglich ? | | | Autor: UE_ACC | Datum: 14.06.09 10:00 |
| Hallo Dieter,
vielen Dank für die schnelle Rückmeldung. Ich habe den Code in das bestehende Beispiel eingebaut, leider erfolgt keine Änderung des vorherigen Zustandes. Wie muss den die Reaktion sein, wenn die rechte Maustaste mit der Spitze auf eine Zeile im Grid1 gedückt wird und zum Grid2 herübergezogen wird? Hängt sich der Datensatz (evtl. auch nur ansatzweise) beim Verschieben an die Mausspitze? Wie beschrieben, erfolgt zur Zeit keine Reaktion/Funktion.
Viele Grüße
Ulrich | |
Re: sevDataGrid: Drag&Drop von Datenzeilen möglich ? | | | Autor: UE_ACC | Datum: 14.06.09 11:30 |
| Hallo Dieter,
wäre es möglich, das ich das Access-Beispiel oder den kompletten Code bekommen könnte? Würde mir sehr helfen! Meine E-Mail-Adresse lautet ulrich.eul@online.de.
Viele Grüße
Ulrich | |
Re: sevDataGrid: Drag&Drop von Datenzeilen möglich ? | | | Autor: Dieter (Moderator) | Datum: 14.06.09 11:39 |
| Hier der Code:
Option Compare Database
Option Explicit
Private nTimerAction As Long Private Sub Form_Load()
...
Grid1.OLEDropMode = 1
Grid1.AllowMultiSelect = True
Grid2.OLEDropMode = 1
End Sub Private Sub Grid1_CellClick(ByVal nRow As Long, ByVal nCol As Long, _
ByVal Button As Integer, ByVal Shift As Integer)
If Button = 2 Then
' bei Rechtsklick - Drag-Vorgang starten
nTimerAction = 2
Me.TimerInterval = 100
End If
End Sub Private Sub Grid1_OLEStartDrag(Data As Object, AllowedEffects As Long)
Dim I As Integer
' Erlaubte Aktionen festlegen
AllowedEffects = 1 Or 2
' Daten-Format festlegen
Data.SetData , 15
' Einträge hinzufügen
For I = 0 To Grid1.SelCount - 1
Data.Files.Add 'Grid1.List(Grid1.SelRow(I))
Next I
End Sub Private Sub Grid2_OLEDragDrop(Data As Object, Effect As Long, Button As _
Integer, _
Shift As Integer, x As Single, Y As Single)
Dim I As Integer
Dim nRow As Long
nRow = Grid2.GetRowFromCursor
' Prüfen, ob es sich um korrekte Daten handelt
If Data.GetFormat(15) Then
' alle Einträge (1 bis Files.Count)
For I = 1 To Data.Files.Count
' Einträge der Listbox hinzufügen
Grid2.AddItem Data.Files(I), nRow
Next I
End If
End Sub Private Sub Form_Timer()
' DataGrid-Ansicht aktualisieren
Me.TimerInterval = 0
Select Case nTimerAction
Case 1
' Filter setzen
SetFilter
Case 2
' OLE-Drag
Grid1.OLEDrag
End Select
End Sub _________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de | |
Re: sevDataGrid: Drag&Drop von Datenzeilen möglich ? | | | Autor: UE_ACC | Datum: 14.06.09 13:42 |
| Hallo Dieter,
vielen Dank für den Code. Die Funktion "Drag&Drop" scheint zu funktionieren, die Daten werden aber im Grid2 nicht angefügt. Kann es sein, dass ein Verweis in meiner DB nicht richtig gesetzt ist? Es erscheint die Fehlermeldung, dass die Methode "Data.GetFormat(15)" nicht bekannt ist.
Viele Grüße
Ulrich | |
Re: sevDataGrid: Drag&Drop von Datenzeilen möglich ? | | | Autor: UE_ACC | Datum: 14.06.09 22:26 |
| Hallo Dieter,
vielen Dank für die Rückmeldung. Ja, es musste noch ein Verweis auf das Windows Common Control (mscomctl.ocx) gesetzt werden. Des Weiteren habe ich noch in dem Code das Hochkommata hinter dem ... Add 'Grid1.List(... entfernt, danach funktionierte alles.
-----------------------------------------------------------------------
Private Sub Grid1_OLEStartDrag(Data As Object, AllowedEffects As Long)
Dim I As Integer
' Erlaubte Aktionen festlegen
AllowedEffects = 1 Or 2
' Daten-Format festlegen
Data.SetData , 15
' Einträge hinzufügen
For I = 0 To Grid1.SelCount - 1
Data.Files.Add 'Grid1.List(Grid1.SelRow(I))
Next I
End Sub
------------------------------------------------------------------------
Nochmals vielen Dank, ich werde das sevDataGrid jetzt bestellen, da es sich um eine sinnvolle und wertvolle Ergänzung sowie Erweiterung in der MS ACCESS-Toolpalette handelt.
Ulrich | |
Re: sevDataGrid: Drag&Drop von Datenzeilen möglich ? | | | Autor: Embo | Datum: 28.07.15 14:40 |
| Hallo,
ich habe eine weitere Frage dazu. Benötigt wird dafür nur EIN Grid, der Code lässt sich dafür leicht abwandeln ("Grid2" zu "Grid1"). Es geht also um das Kopieren von Zeilen innerhalb EINES Grids. Das funktioniert ohne weiteres, einziges Problem: Enthält das Grid mehr Zeilen als auf einmal dargestellt werden können und befindet sich das Drop-Ziel außerhalb des sichtbaren Bereichs, so muss zu der Zeile, auf die gedroppt werden soll, via Scrollen navigiert werden. Das kann man gewöhnlich dadurch erreichen, indem man den gedrückten Mauscursor über bzw. unter die erste bzw. letzte Zeile bewegt. Das funktioniert hier nicht.
Vielen Dank für jeden Hinweis
Christoph | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevEingabe 3.0
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|