Dragdrop é uma maneira rápida de operar o Windows. Como desenvolvedor baseado no Windows
Delphi também suporta operações de arrastar e soltar, e a função de arrastar e soltar do sistema de aplicativos é muito conveniente, o que realmente reflete o
O poder e a conveniência de Delphi.
Todos os controles fornecidos pela Delphi (controle, que podem obter foco de entrada) suportam operações de arrastar e soltar e ter
As propriedades de arrastar e soltar, arrastar e soltar eventos e arrastar e soltar métodos. Em seguida, apresentaremos o suporte de arrastar e soltar o controle primeiro e depois daremos o
Etapas gerais e exemplos de aplicação de envio de operações de arrastar e soltar.
9.1 Arrastar e soltar suporte para controles
Nas operações de arrastar e soltar, os controles podem ser divididos em duas categorias: controle de origem e controle de alvo. A maioria dos controles pode ser usada como controles de fonte
Também pode ser usado como controle de destino. Mas também existem alguns controles que só podem suportar um deles.
9.1.1 Propriedades de arrastar e soltar
Existem duas propriedades principais de arrastar e soltar:
● Dragmode: Modo de arrasto
Eles estão todos definidos no controle de origem de arrastar e soltar. Dragmode controla o usuário ao pressionar o controle durante o tempo de execução
Como o controle reage quando o mouse está inativo. Se o dragmode estiver definido como dmautomático, então quando o usuário pressiona o mouse no controle
Dragmode inicia automaticamente;
Para determinar se um arrasto pode começar.
O DragCursor é usado para selecionar o cursor exibido ao arrastar.
As especificações de interface comuns no processo de programação devem ser respeitadas pelos desenvolvedores. Mas às vezes para fins específicos,
Os desenvolvedores também podem atribuir seu próprio cursor ao DragCursor.
9.1.2 Evento de arrastar e soltar
Existem três eventos principais de arrastar e soltar:
● OnDragover: inspire ao arrastar
● ONDRAGDROP: Inspire ao arrastar e soltar
● Onenddrop: inspire ao arrastar termina
Os dois primeiros eventos são respondidos pelo controle de destino, e o último é respondido pelo controle de origem.
A principal função do evento OnDragover é determinar se o controle é aceitável quando o usuário solta o arrasto no lugar.
Seus parâmetros incluem:
Fonte: Tobject;
Estado: tdragstate;
O TDRAGSTATE é um tipo de enumeração que representa a relação entre itens de arrasto e soltar e controles de destino.
TIPO TDRAGSTATE = (DSDRAGENTER, DSDRAGLEAVE, DSDRAGMOVE);
O significado de valores diferentes é o seguinte:
Tabela 9.1 O valor e o significado do DragState
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━
Significado de valor
──────perifice─rigpultominante --ntasantentas --ntas --ntas --ntasgrapulos
DSDRAGENTER arraste o objeto para um controle que permite que o objeto arrastado seja descartado. é o estado padrão.
O dsdragleave arrasta o objeto para longe de um controle que permite que o objeto de arrasto seja descartado.
O DSDRAGMOVE DRAT Object se move dentro de um controle que permite que o objeto de arrasto seja descartado.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━
O usuário pode usar os parâmetros fornecidos para determinar se o arrasto descartado é aceitável, como:
● Tipo de controle de fonte do juiz:
Aceitar: = fonte é tlabel;
● Objeto de controle de origem do juiz:
Aceitar: = (fonte = tabset1);
● Juiz Posição do cursor:
Veja rotinas em (9.2), (9.3).
● Juiz Status de arrasto:
Se (fonte é tlabel) e (estado = dsdragmove) então
BEGN ORONTE.DRAGICON: = 'new.ico';
fim
outro
Aceitar: = false;
Quando aceita = true, o controle de destino pode responder ao evento ONDRAGDROP, que é usado para determinar que o programa após o arrasto é descartado
Como lidar com isso.
Os parâmetros do processo de processamento de eventos ONDRAGDROP incluem o controle de origem e a posição do cursor. Esta informação pode ser usada para processamento
Confirmação.
O evento Onenddrag é respondido pelo controle de origem após a conclusão da operação de arrasto e é usada pelo controle de origem para executar
tratar. O final da operação de arrasto inclui o arrasto e a queda sendo aceitos, e o usuário o libera em um controle que não pode ser descartado.
Coloque o mouse. Os parâmetros deste processo de processamento de eventos incluem o controle de destino (destino) e as coordenadas da posição de queda. se
Target = nil, significa que o item arrastado não é aceito por nenhum controle.
Na operação de cópia de movimentação e arrasto e arrastar e arrastar e arrastar a seção 3, se a operação for bem-sucedida, a caixa de listagem de arquivos será listada abaixo.
O conteúdo exibido deve ser atualizado. O programa a seguir é usado para implementar esta função.
Procedimento tfmform.FilElistendDrag (remetente, destino: TObject; x, y: inteiro);
Começar
se alvo <> nil então filelist.update;
fim;
Além dos três eventos descritos acima, há outro evento OnMousedown, que também é comumente usado para respostas de arrastar e soltar.
Embora Onmousedown não seja um evento especial de arrastar e soltar, o início de arrastar no modo manual é nisso
Implementado durante o processo de processamento de eventos.
9.1.3 Método de arrastar e soltar
Existem três maneiras de arrastar e soltar:
● Begindrag: inicie um arrasto no modo manual
● Enddrag:
Terminar um arrasto
● Arrastando: determina se um controle está sendo arrastado
Todos os três métodos são usados pelo controle de origem.
Quando o Dragmode é definido como DMManual, o arrasto deve chamar o método Begindrag do controle para iniciar.
Begindrag tem um parâmetro booleano imediato. Se o parâmetro de entrada for verdadeiro, arraste para iniciar imediatamente,
Altere para as configurações do DragCursor. Se o parâmetro de entrada for falso, até que o usuário mova o cursor por uma certa distância
(5 pixels) antes de alterar o cursor e começar a arrastar. Isso permite que o controle aceite um evento OnClick sem iniciar
Arraste a operação.
O método final aborta o estado arrastado de um objeto. Possui uma queda de parâmetro booleana. Se a queda estiver definida
True, o objeto arrastado é descartado na posição atual (se pode ser aceito é determinado pelo controle de destino);
Se falso, o arrasto é cancelado no lugar.
O programa a seguir mostra que o arrasto é cancelado ao arrastar para um painel de controle.
Procedimento TForm1.Panel1Dragover (remetente, fonte: TObject; X, Y: Inteiro;
Estado: tdragstate;
Começar
Aceitar: = false;
se (fonte é tlabel) e (estado = dsdragenter) então
(Fonte como tlabel) .nddrag (false);
fim;
O método de escorregem determina se um controle está sendo arrastado. No exemplo seguinte, quando o usuário arrasta uma caixa de seleção diferente
Quando a janela muda para uma cor diferente.
procedimento TFFORM1.FORMACTIVATE (remetente: TObject);
Começar
Caixa de seleção1.dragmode: = dmautomatic;
Checkbox2.DragMode: = dmautomatic;
Checkbox3.DragMode: = dmautomatic;
fim;
Procedimento TForm1.FormDragover (remetente, fonte: Tobject; x, y: Integer;
Estado: tdragstate;
Começar
Se a caixa de seleção1.dragging então
Cor: = Claqua;
Se a caixa de seleção2.dragging, então
Cor: = Clyellow;
Se a caixa de seleção3.dragging, então
Cor: = cllime;
fim;