Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
Drop position
|
Drop position {( SpaltenNr | BildPosY )} -> Funktionsergebnis | ||||||||
Parameter | Typ | Beschreibung | ||||||
SpaltenNr | BildPosY | Lange Ganzzahl |
![]() |
Spaltennummer der Listbox (-1 wenn Drop außerhalb der letzten Spalte erfolgt) oder Position der Y Koordinate im Bild | |||||
Funktionsergebnis | Lange Ganzzahl |
![]() |
Zahl (Array/Listbox) oder • Position (hierarchische Liste) oder • Position in String (Text/Combobox) des Zieleintrags oder • -1, wenn Drop außerhalb des letzten Array Elements oder Listeneintrags erfolgt oder • Position der X Koordinate im Bild |
|||||
Die Funktion Drop position findet in einem "komplexen" Zielobjekt die Stelle, an die ein Objekt per Drag-and-Drop bewegt wurde.
Sie verwenden Drop position in der Regel, wenn Sie ein Drag-and-Drop-Ereignis behandeln, das über einer Listbox, einer hierarchischen Liste, einem Text- oder Bildfeld oder einem 4D Write Pro Bereich aufgetreten ist.
Rufen Sie Drop position auf, wenn Sie ein Ereignis behandeln, das kein Drag-and-Drop-Ereignis ist und das über einer Listbox, einer Combo Box, einer hierarchischen Liste, einem Text, einem Bild oder einem 4D Write Pro Bereich aufgetreten ist, gibt der Befehl -1 zurück.
Wichtig: Ein Formularobjekt nimmt bewegte Daten nur an, wenn die Eigenschaft dropfähig zugewiesen ist. Außerdem muss die dazugehörige Objektmethode für On Drag Over und/oder On Drop aktiviert sein, damit diese Ereignisse durchgeführt werden.
Im folgenden Beispiel soll eine Liste bezahlter Beträge nach Monat und Person aufgeteilt werden. Das wird per Drag-and-Drop zwischen zwei Listboxen ausgeführt.
Die Objektmethode der rechten Listbox (Quelle) enthält folgenden Code:
If(Form event code=On Begin Drag Over) //Ereignis muss für die Listbox ausgewählt werden
C_BLOB($tomove)
C_TEXT($val)
LISTBOX GET CELL POSITION(*;"LBPaid";$col;$row)
$val:=PaidCol{$row}
VARIABLE TO BLOB($val;$tomove)
APPEND DATA TO PASTEBOARD("mydrag";$tomove) //Eigenen Schlüssel verwenden
End if
Die Objektmethode der linken Listbox (Ziel) enthält folgenden Code:
Case of
:(Form event code=On Drag Over) //Ereignis muss für die Listbox ausgewählt werden
C_BLOB($toGet)
C_LONGINT($rownum)
$rownum:=Drop position($colnum)
GET PASTEBOARD DATA("mydrag";$toGet) //Daten erhalten
If(Pasteboard data size("mydrag")>0)&($colnum#1)) //Sind Daten im Pasteboard
$0:=0 //Drop wird akzeptiert
Else
$0:=-1 //Drop wird verweigert
End if
:(Form event code=On Drop) //Ereignis muss für die Listbox ausgewählt werden
C_BLOB($toGet)
C_LONGINT($rownum;$val)
$rownum:=Drop position($colnum)
GET PASTEBOARD DATA("mydrag";$toGet)
BLOB TO VARIABLE($toGet;$val) //den Wert erhalten
If(Pasteboard data size("mydrag")>0))
If($colnum=1)
BEEP
Else
Case of //Werte von Drop hinzufügen
:($colnum=2)
John{$rownum}:=John{$rownum}+$val
:($colnum=3)
Mark{$rownum}:=Mark{$rownum}+$val
:($colnum=4)
Peter{$rownum}:=Peter{$rownum}+$val
End case
DELETE FROM ARRAY(PaidCol;Find in array(PaidCol;$val)) // Quell Listbox updaten
End if
End if
End case
Produkt: 4D
Thema: Drag and Drop
Nummer:
608
Geändert: 4D v11 SQL
Geändert: 4D v12
4D Programmiersprache ( 4D v20 R7)