4D v16.3Arrastar e Soltar |
||
|
4D v16.3
Arrastar e Soltar
Arrastar e Soltar
4D dispõe de funções integradas que lhe permitem arrastar e soltar objetos em seus formulários e aplicações. É possível arrastar e soltar um objeto sobre outro, localizado na mesma janela ou em outra. Em outras palavras, pode arrastar e soltar ao interior de um processo ou entre diferentes processos. Igualmente pode arrastar e soltar objetos entre formulários 4D e outras aplicações e vice-versa. Por exemplo, é possível arrastar e soltar um arquivo de imagem GIF em um campo imagem 4D. Também é possível selecionar texto em uma aplicação de processamento de palavras e soltá-la em uma variável de texto 4D. Finalmente, é possível soltar objetos diretamente na aplicação sem ter que necessariamente um formulário de fundo. Ou Método de banco de dados On Drop pode ser utilizado para administrar a ação de arrastar e soltar neste caso. Isto significa, por exemplo, que pode abrir um documento 4D Write soltando-o no ícone da aplicação 4D Nota: como introdução, assumimos que uma ação arrastar e soltar “transporta” dados de um ponto a outro. Mais adiante, veremos que arrastar e soltar também pode ser uma metáfora para todo tipo de operação. Para arrastar e soltar um objeto sobre outro objeto, deve selecionar a Propriedade arrastável para esse objeto na janela da Lista de propriedades. Em uma operação arrastar e soltar, o objeto que é arrastado é o objeto fonte. Para fazer que um objeto seja soltável, ou seja, que o objeto possa ser o destino de uma operação de arrastar e soltar, deve selecionar a propriedade soltável para esse objeto na Lista de propriedades. Em uma operação arrastar e soltar, o objeto que recebe os dados é o objeto de destino. Arrastar automático e Soltar automático: Estas propriedades adicionais estão disponíveis para campos e variáveis de tipo texto, combo boxes e list boxes. A opção Soltar automático também está disponível para campos e variáveis tipo imagem. Podem ser utilizadas para ativar um modo arrastar e soltar automático baseado em copiar o conteúdo (a ação arrastar e soltar já nos é administrada pelos eventos de formulário 4D). Por favor consulte o parágrafo "Arrastar e soltar automático" ao final desta seção.Automaticamente os objetos criados recentemente não possuem nenhuma destas propriedades. É sua decisão selecionar estas propriedades. Todos os objetos em um formulário de entrada, ou em um diálogo, podem ser definidos como arrastáveis e soltáveis. Os elementos individuais de um array (por exemplo, uma área de rolagem), os elementos de uma lista hierárquica ou as filas em uma list box podem ser arrastáveis e soltáveis. Pelo contrário, pode arrastar e soltar um objeto sobre um elemento individual de um array ou de uma lista hierárquica ou uma linha de um list box. Entretanto, não pode arrastar e soltar objetos da área de detalhe de um formulário de saída. Igualmente pode administrar arrastar e soltar na aplicação, fora de todos os formulários, utilizando o Método de banco de dados On Drop. Facilmente pode criar uma interface de usuário arrastar e soltar, porque 4D lhe permite utilizar todo tipo de objeto ativo (campo ou variável) como objetos fonte ou de destino. Por exemplo, pode arrastar e soltar um botão. Notas:
Um objeto que é arrastável e soltável também pode ser soltável em si mesmo, a menos de que recuse a operação. Para mais detalhes, consulte os parágrafos seguintes. A seguinte imagem mostra a janela da Lista de propriedades com as propriedades Arrastável e Soltável definidas para o objeto selecionado: A gestão de arrastar e soltar por programação está baseada em três eventos de formulário: On Begin Drag Over, On Drag Over e On Drop. Note que o evento On Begin Drag Over gera no contexto do objeto fonte de arrastar enquanto On Drag Over e On Drop são enviados ao objeto de destino unicamente. Para que a aplicação processe estes eventos, devem ter sido selecionados de uma forma adequada na Lista de Propriedades: O evento de formulário On Begin Drag Over é selecionável para todos os objetos de formulário que possam ser arrastados. É gerado em todos os casos onde o objeto tenha a propriedade Arrastável. A diferença do evento de formulário On Drag Over, On Begin Drag Over é chamada dentro do contexto do objeto fonte da ação arrastar. Pode ser chamada desde o método do objeto fonte ou desde o método do formulário do objeto fonte.Este evento é útil para a gestão avançada da ação arrastar. Pode ser utilizado para:
Os dados de 4D são colocados na área de transferências antes de chamar ao evento. Por exemplo, no caso de arrastar sem a ação Arrastar automático, o texto arrastado já está na área de transferências quando se chamar o evento. O evento On Drag Over é enviado repetidamente ao objeto de destino quando o ponteiro do mouse é movido sobre o objeto. Em resposta a este evento, você geralmente:
Para aceitar arrastar, o método do objeto de destino deve retornar 0 (zero), de maneira que você escreve $0:=0. Para recusar ou arrastar, o método de objeto deve retornar -1 (menos uno), de maneira que escreve $0:=-1. Durante um evento On Drag Over, 4D trata o método do objeto como uma função. Se não retorna nenhum resultado, 4D assume que se aceita arrastar. Se aceitar o arrastar, o objeto de destino é ativa. Se o recusar, o objeto de destino permanece inativo. Aceitar o arrastar não significa que os dados arrastados sejam inseridos no objeto de destino. Só significa que se o botão do mouse foi liberado neste ponto, o objeto de destino aceitaria os dados arrastados. Se não processa o evento On Drag Over para um objeto soltável, o objeto é ativado para todas as operações de arrastar, sem importar a natureza e tipo dos dados arrastados. O evento On Drag Over lhe permite controlar a primeira fase de uma operação de arrastar e soltar. Não só pode provar se o tipo dos dados arrastados é compatível com o objeto de destino e depois aceitar ou recusar o arraste; pode simultaneamente notificar ao usuário dessa ocorrência, porque 4D ativa ou não o objeto de destino, em função de sua decisão. O código que trata um evento On Drag Over deve ser curto e ser executado rapidamente, porque o evento é enviado repetidamente ao objeto atual de destino, devido aos movimentos do mouse. Advertência: a partir da versão 11 de 4D, se o arrastar e soltar é um arrastar e soltar interprocesso, o qual significa que o objeto fonte está localizado em um processo (janela) diferente da do objeto de destino, o método do objeto de destino para um evento On Drag Over é executado no contexto do processo de destino. Para conhecer o valor dos elementos arrastados, deve utilizar os comandos de comunicação interprocesso. Geralmente é preferível nesse caso utilizar o evento On Begin Drag Over e os comandos do tema Área de Transferência (Pasteboard). O evento On Drop é enviado ao objeto de destino (uma só vez) quando o cursor do mouse é liberado sobre o objeto. Este evento é a segunda fase da operação arrastar e soltar, na qual você realiza uma operação em resposta à ação do usuário. Este evento não é enviado ao objeto se o arrastar não foi aceito durante os eventos On Drag Over. Se processar o evento On Drag Over para um objeto e recusa um arrastar, não ocorre o evento On Drop. Se durante o evento On Drag Over você provou a compatibilidade de tipos de dados entre os objetos fonte e destino e aceitou um possível soltar, não necessita provar novamente os dados durante On Drop. Você já sabe que os dados são compatíveis com o objeto de destino. Um aspecto interessante da implementação de arrastar e soltar é que 4D lhe permite fazer o que você queira. Exemplos:
A interface de arrastar e soltar de 4D é um framework que lhe permite a qualquer usuário implementar todas as metáforas de interface de usuário que você possa imaginar. Os comandos DRAG AND DROP PROPERTIES retornam:
O comando Drop position retorna o número ou a posição do elemento objetivo se o objeto de destino é um array (ou seja, uma área de rolagem) uma lista hierárquica, um texto o um combo box, além do número de coluna se o objeto é uma list box. Os comandos como RESOLVE POINTER e Type são úteis para provar a natureza e o tipo de objeto fonte. Quando a operação arrastar e soltar estiver destinada a copiar os dados arrastados, a funcionalidade desses comandos depende de quantos processos estén involucrados:
Se as operações arrastar e soltar implicam o movimento de dados heterogêneos ou de documentos entre duas aplicações 4D ou uma aplicação 4D e uma terceira aplicação, os comandos do tema "Área de transferência" lhe oferecerão as ferramentas necessárias. Realmente, estes comandos podem ser utilizados para administrar o copiar/colar e arrastar e soltar de dados. 4D utiliza duas áreas de transferências: uma para dados copiados (ou cortados), o qual é a área de transferência atual, e o outro para os dados que estão sendo arrastados e soltados. Essas duas áreas de transferências são administrados utilizando os mesmos comandos. Você acessa a uma ou a outra dependendo do contexto. Para maior informação sobre a utilização dos comandos do tema "Área de transferência" para operações de arrastar e soltar, por favor consulte . As áreas de texto (campos, variáveis, combo boxes e list boxes) como também objetos de imagem permitem o arrastar e soltar automático, ou seja o movimento ou cópia de uma seleção de texto ou imagem de uma área a outra em um só clique. Pode ser utilizada na mesma área 4D, entre duas áreas 4D, ou entre 4D e outra aplicação, por exemplo WordPad. Nota: no caso de arrastar e soltar automático entre duas áreas 4D, os dados são movidos, em outras palavras, são eliminados da área fonte. Se deseja copiar os dados, mantenha pressionado Ctrl (Windows) ou Opção (OS X) durante a ação (sob OS X, deve pressionar a tecla Opção logo de iniciar arrastar os elementos). O arrastar e soltar automático pode ser configurado separadamente para cada objeto de um formulário através de de duas opções da Lista de propriedades: Arrastar automático e Soltar automático.
A partir da versão 11, 4D permite o arrastar e soltar de seleções, de objetos, ou de arquivos externos a 4D, como por exemplo os arquivos de imagens. Esta possibilidade deve ser compatível pelo código do banco. Nos bancos convertidos de uma versão anterior de 4D, esta possibilidade pode levar ao malfuncionamento se o código existente não estiver adaptado. Por essa razão, uma opção nas Preferências pode ser utilizada para desativar esta função: Proibido soltar dados que não provenham de 4D. Esta opção é encontrada na página Aplicação/Compatibilidade. Está selecionada automaticamente nos bancos convertidos.Quando esta opção estiver selecionada, é recusada o soltar objetos externos em formulários 4D. Note entretanto que a inserção de objetos externos continua sendo possível em objetos que tenham a opção Soltar automático, quando a aplicação pode interpretar os dados soltados (texto ou imagem).
Ver também
DRAG AND DROP PROPERTIES
|
PROPRIEDADES
Produto: 4D
HISTÓRIA
ARTICLE USAGE
Manual de linguagem 4D ( 4D v16) |