Compreendendo as operações de arrastar e soltar no Delphi

Para "arrastar e soltar" é manter pressionado o mouse de computador botão à medida que o mouse é movido e solte o botão para soltar o objeto. O Delphi facilita a programação de arrastar e soltar em aplicativos.

Você pode realmente arrastar e soltar de / para onde quiser, como de um formulário para outro ou do Windows Explorer para seu aplicativo.

Exemplo de Arrastar e Soltar

Inicie um novo projeto e coloque um controle de imagem em um formulário. Use o Object Inspector para carregar uma imagem (propriedade Imagem) e defina o DragMode propriedade para dmManual. Criaremos um programa que permitirá mover um tempo de execução de controle TImage usando o técnica de arrastar e soltar.

DragMode

Os componentes permitem dois tipos de arrasto: automático e manual. Delphi usa a propriedade DragMode para controlar quando o usuário é capaz de arrastar o controle. O valor padrão desta propriedade é dmManual, o que significa que arrastar componentes ao redor do aplicação não é permitida, exceto em circunstâncias especiais, para as quais temos que escrever o código apropriado. Independentemente da configuração da propriedade DragMode, o componente será movido apenas se o código correto for gravado para reposicioná-lo.

instagram viewer

OnDragDrop

O evento que reconhece arrastar e soltar é chamado de evento OnDragDrop. Nós o usamos para especificar o que queremos que aconteça quando o usuário soltar um objeto. Portanto, se queremos mover um componente (imagem) para um novo local em um formulário, precisamos escrever um código para o manipulador de eventos OnDragDrop do formulário.

O parâmetro Source do evento OnDragDrop é o objeto que está sendo descartado. O tipo do parâmetro de origem é TObject. Para acessar suas propriedades, precisamos convertê-lo no tipo de componente correto, que neste exemplo é TImage.

Aceitar

Temos que usar o evento OnDragOver do formulário para sinalizar que o formulário pode aceitar o controle TImage que queremos colocar nele. Embora o Accept parâmetro o padrão é True, se um manipulador de eventos OnDragOver não for fornecido, o controle rejeitará o objeto arrastado (como se o parâmetro Accept fosse alterado para False).

Execute seu projeto e tente arrastar e soltar sua imagem. Observe que a imagem permanece visível em seu local original enquanto o arraste ponteiro do mouse se move. Não podemos usar o procedimento OnDragDrop para tornar o componente invisível enquanto ocorre o arrastamento, porque esse procedimento é chamado somente após o usuário soltar o objeto (se houver).

DragCursor

Se você deseja alterar a imagem do cursor apresentada quando o controle está sendo arrastado, use a propriedade DragCursor. Os valores possíveis para a propriedade DragCursor são os mesmos da propriedade Cursor. Você pode usar cursores animados ou o que quiser, como um arquivo de imagem BMP ou um arquivo de cursor CUR.

BeginDrag

Se DragMode for dmAutomatic, o arraste começará automaticamente quando pressionamos um botão do mouse com o cursor no controle. Se você deixou o valor da propriedade DragMode da TImage no padrão dmManual, use os métodos BeginDrag / EndDrag para permitir o arraste do componente. Uma maneira mais comum de arrastar e soltar é definir DragMode como dmManual e iniciar o arrasto manipulando eventos de mouse para baixo.

Agora, vamos usar o Ctrl + MouseDown combinação de teclado para permitir arrastar. Conjunto TImageDragMode de volta ao dmManual e escreva o manipulador de eventos MouseDown da seguinte maneira:

BeginDrag usa um parâmetro booleano. Se passarmos True (como neste código), o arraste começa imediatamente; se False, ele não será iniciado até movermos o mouse a uma curta distância. Lembre-se de que requer a tecla Ctrl.

instagram story viewer