| 4D v18Drop position | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|  | 
    4D v18
 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 array, um list box, uma lista hierárquica, um texto ou um campo de imagem.
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, 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 ifO 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 v18)
	
	
	
 Adicionar um comentário
Adicionar um comentário