Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com

Home

 
4D v20 R7
Drop position

Drop position 


 

Drop position {( SpaltenNr | BildPosY )} -> Funktionsergebnis 
Parameter Typ   Beschreibung
SpaltenNr | BildPosY  Lange Ganzzahl in Spaltennummer der Listbox (-1 wenn Drop außerhalb der letzten Spalte erfolgt) oder Position der Y Koordinate im Bild
Funktionsergebnis  Lange Ganzzahl in 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.

  • Ist das Zielobjekt eine Listbox, gibt die Funktion eine Zeilennummer zurück. In diesem Fall gibt die Funktion im optionalen Parameter SpaltenNr die Nummer zurück, wo Drop erfolgt ist.
  • Ist das Zielobjekt eine hierarchische Liste, gibt die Funktion die Position des Eintrags zurück.
  • Ist das Zielobjekt ein Text vom Typ Variable oder Feld, oder eine Combobox, gibt die Funktion die Position des Zeichens innerhalb des Strings zurück.
    Die Funktion gibt in all diesen Fällen -1 zurück, wenn das Quellobjekt außerhalb des letzten Elements bzw. Eintrags des Zielobjekts bewegt wurde.
  • Ist das Zielobjekt ein Bild vom Typ Variable oder Feld, gibt die Funktion die vertikale und über den optionalen Parameter BildPosY die horizontale Position des Klicks zurück. Die zurückgegebenen Werte werden in Pixel und in Relation zum lokalen Koordinatensystem ausgedrückt.

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



Siehe auch 

_o_DRAG AND DROP PROPERTIES
Einführung in Drag and Drop

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Drag and Drop
Nummer: 608

 
SEITENINHALT 
 
GESCHICHTE 

Geändert: 4D v11 SQL
Geändert: 4D v12

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v20 R7)