Saltar para o conteúdo principal
Versão: 21 R4 BETA

Drop position

Drop position ( colNum|posYimagem ) : Integer

ParâmetroTipoDescrição
colNum|posYimagemInteger←Número de coluna de list box (-1 se soltar antes da última coluna) ou posição da coordenada Y da imagem
ResultadoInteger←• 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
Histórico
VersãoAlterações
12Modificado
11 SQLModificado
<6Criado

Descrição​

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 o objeto de destino for um array, o comando retorna um número de elemento.
  • Se o objeto de destino for um list box, o comando retorna um número de linha. Neste caso, o comando também retorna o número de coluna onde se soltou no parâmetro opcional colNum.
  • Se o objeto de destino for uma lista hierárquica, o comando retorna uma posição do elemento.
  • Se o objeto de destino for uma variável ou um campo tipo texto, ou um combo box, o comando retorna uma posição de caractere ao interior da string.
    Em todos os casos, o comando pode retornar -1 se o objeto fonte tiver sido soltado além do último elemento ou do último elemento do objeto de destino.
  • Se o objeto de destino for uma variável ou um campo de tipo imagem, a função retorna a localização horizontal do clique e, no parâmetro opcional posYImagem, a localização vertical do clique. Os valores retornados são expressos em píxels e com relação ao sistema de coordenadas locais.

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.

Exemplo​

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
    var $tomove : Blob
    var $val : Text
    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
       var $toGet : Blob
       var $rownum : Integer
       $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.code=On Drop) //o evento deve ser selecionado para o list box
       var $toGet : Blob
       var $rownum;$val : Integer
       $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

Ver também​

Arrastar e Soltar

Propriedades​

Número do comando608
Thread-segurono