Movimentar os objetos de formulário usando o mouse
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.
Essa técnica é extremamente útil quando precisamos marcar certos pontos sobre uma figura. Por exemplo, você pode querer marcar os locais das cáries em uma arcada dentária, marcar lesões no corpo de um pessoa ou de um animal,... Veja na imagem abaixo, aonde foram marcados pontos de lesões sobre a figura de uma cabeça.
Observe as setas em vermelho que estão representando o mouse arrastando o círculo vermelho (rubor) para posicioná-lo sobre a figura da cabeça:
As figuras dos círculos são armazenadas nos controles Label. Você pode obter as figuras através da fonte WingDings. Abra o Word, escolha a fonte WingDings 2, comece a digitar no teclado e veja as figuras associadas. A figura aqui escolhida está associada a letra "t"
Para movimentar um controle do formulário é relativamente simples. Para isso usamos os eventos ao apertar mouse, ao mover mouse e ao liberar mouse. Veja:
Option Compare Database
Dim MouseX As Long, MouseY As Long
'evento Ao apertar mouse
Private Sub Rot8_MouseDown(Button As Integer, Shift As Integer,X As Single, Y As Single) If (Button = 1) Then MouseX = X: MouseY = Y End Sub
'evento Ao mover mouse Private Sub rot8_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If (Button = 1) Then fncMouseMove Me!rot8, X, Y End Sub
'evento Ao liberar mouse
Private Sub rot8_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
fncMouseUp Me!rot8, 10
End Sub
No evento Ao liberar mouse é usada a função fncMouseUp() e no evento Ao mover mouse é usada a função fncMouseMove().
Public Function fncMouseUp(ctl As Control, j%)
'gravando as coordenadas atuais do rótulo na caixa de texto ctl.Value = Me("rot" & j).Left & ";" & Me("rot" & j).Top End Function Private Function fncMouseMove(ctl As Control, X As Single, Y As Single)
'passando as coordenadas do mouse para o rótulo que está sendo movimentado ctl.Left = ctl.Left + X - MouseX ctl.Top = ctl.Top + Y - MouseY End Function
Nota: Ao dar um clique duplo sobre o círculo, ele retornará à posição inicial. A função utilizada no clique duplo é esta:
Public Function fncDuploClique(ctl As Control, p) ctl.Left = p: ctl.Top = p0 End Function
Baixe o arquivo e faça o teste:
Clique aqui e baixe o arquivo exemplo.
Abra o formulário frmTeste e utilize o mouse para arrastar os círculos sobre a figura. Após ter feito isso, vá para o próximo paciente e realize novas marcações.
Dê dois cliques rápidos sobre o círculo e ele retornará à posição inicial.
Bom estudo!
Os dez artigos mais visitados
MontaRibbons v.7.0 - Assistente completo para criar ribbons no Access
Vídeo - Controle personalizado de Acesso de Usuários
Vídeo - Aprenda sobre filtragens
Vídeo - Segurança máxima, usando o OPEN
Uma ajuda para quem está começando um negócio ou um projeto
Integrando o Access com Servidor MySQL - Introdução
Desabilitando a faixa(ribbon) superior do Access
Vídeo - Programação de relatórios - Parte 1
Como carregar o seu menu sem que ele vá para lista de suplementos
Vídeo - Criando Ribbons parte 1 - Conhecendo a estrutura Xml
7 comentário(s) MARCIO MELO - RJ 30/07/2023 12:36:58 Incrível! O access junto a sua imaginação não tem limites, solução perfeita para atender diversas necessidades... Eu via isso como uma limitação, agora como inovação e a mente mais aberta a possibilidades... Wagner Bonelli Ismael 29/07/2023 16:38:39 Muito legal! Um amigo que tem uma um pequeno laboratório de prótese dentária me pediu para fazer um sistema de controle de ordem de serviço. Estava exatamente à procura de algo assim para ficar mais "visual" o sistema, utilizando o Access. Vou estudar um pouco mais e creio que dá para fazer algo bem bacana com estes recursos. Obrigado mais uma vez por compartilhar seus exemplos e sabedoria. Idiframk Silva 07/02/2022 15:16:30 Ótima didática... muito interessante este recuso.... flavio lima 07/02/2022 06:53:32 parabens... Leonardo 07/02/2022 05:16:19 Parabéns, muito bom esse exemplo. David Vieira Rocha 18/05/2021 05:30:20 excelente exemplo... gostaria de saber como aumentar a quantidade de itens pra cada figura. preciso mapear os casos de dengue no meu município por quadras nos bairros. mas tendo mais de cem casos por semana, como fazer? JuanLu 13/02/2021 09:46:40 No puedo descargar el ejemplo, que necesito?, no me permite logearme. |