... Pague apenas R$67,00 uma única vez e tenha acesso por 1 ano aos vídeos e arquivos exemplos do site ...

Clique aqui e obtenha mais detalhes.


Movimentar os objetos de formulário usando o mouse

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.

Usando Access - Marcar figuras

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:

Usando Access - Marcar figuras

 

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"

Usando Access - Fonte WingDings 2

 

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!


 

 


3 comentário(s)

Leonardo   07/02/2017 05:16:19

Parabéns, muito bom esse exemplo.

flavio lima   07/02/2017 06:53:32

parabens...

Idiframk Silva   07/02/2017 15:16:30

Ótima didática... muito interessante este recuso....


Envie seu comentário: