Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
Drop position
|
Drop position {( colNum|posYimagem )} -> Resultado | ||||||||
Parâmetro | Tipo | Descrição | ||||||
colNum|posYimagem | Inteiro longo |
![]() |
Número de coluna de list box (-1 se soltar antes da última coluna) ou posição da coordenada Y da imagem |
|||||
Resultado | Inteiro longo |
![]() |
• Número (array/list box) ou • Posição (lista hierárquica) ou • Posição em string (texto/combo box) de item destino ou • -1 se soltar antes do último elemento do array ou item da lista • Posição da coordenada X da imagem |
|||||
O comando Drop position pode ser utilizado para descobrir a localização, em um objeto de destino “complexo”, onde um objeto foi (arrastado e) soltado.
Geralmente, é utilizado Drop position quando administra um evento arrastar e soltar que se produz em um list box, uma lista hierárquica, um texto,um campo de imagem ou uma área 4D Write Pro.
Se chama Drop position quando processa um evento que não for do tipo arrastar e soltar em um array, um list box, um combo box, uma lista hierárquica, um texto ou uma imagem, ou área 4D Write Pro, o comando retorna -1.
Importante: para que um objeto de formulário aceite os dados soltados, a propriedade Soltável deve estar selecionada. Igualmente, seu método de objeto deve ser ativado pelo evento On Drag Over ou On Drop, para processar estes eventos.
No exemplo abaixo, uma lista de somas deve ser organizada por mês e por pessoa. A operação é efetuada arrastando e soltando entre duas list boxes:
O método de objeto de list box da direita (origem) contém o código abaixo:
If(Form event code=On Begin Drag Over) //evento deve ser selecionado para o list box
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) //utilize uma chave personalizada
End if
O método de objeto de list box da esquerda (destino) contém o código abaixo:
Case of
:(Form event code=On Drag Over) //O evento deve ser selecionado para o list box
C_BLOB($toGet)
C_LONGINT($rownum)
$rownum:=Drop position($colnum)
GET PASTEBOARD DATA("mydrag";$toGet) //obter dados
If(Pasteboard data size("mydrag")>0)&($colnum#1)) //Se os dados estão na área de transferência
$0:=0 //poderíamos aceitar o soltar
Else
$0:=-1 //Recusa o soltar
End if
:(FORM Event=On Drop) //o evento deve ser selecionado para o list box
C_BLOB($toGet)
C_LONGINT($rownum;$val)
$rownum:=Drop position($colnum)
GET PASTEBOARD DATA("mydrag";$toGet)
BLOB TO VARIABLE($toGet;$val) //obter o valor
If(Pasteboard data size("mydrag")>0))
If($colnum=1)
BEEP
Else
Case of //Adição dos valores soltados
:($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)) //Atualizar listbox de origem
End if
End if
End case
Produto: 4D
Tema: Arrastar e Soltar
Número
608
Modificado: 4D v11 SQL
Modificado: 4D v12
Manual de linguagem 4D ( 4D v20 R7)