Entendendo o evento OnMouseMove


Um evento OnMouseMove ocorre periodicamente quando o usuário move o mouse. O evento inicia-se no objeto que está sob o ponteiro do mouse quando o usuário pressiona o botão. Isto permite ao usuário algumas opções intermediárias enquanto o mouse move. Observe, porém, que podemos chamar esse evento mesmo sem que qualquer botão esteja pressionado.


Para responder aos movimentos do mouse, defina um evento handler para o evento OnMouseMove.


Num Form vazio, selecione a guia Events do Object Inspector. No setor esquerdo das opções dessa guia, procure pelo evento OnMouseMove. Dê um duplo clique no campo situado ao lado direito desse evento para abrir a janela de edição de códigos. Imediatamente você entrará em contato com as seguintes linhas de código:


//---------------------------------------------------------------------------

void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{

}
//---------------------------------------------------------------------------

Já temos conhecimento prévio do significado de várias partes do código acima. Mas há algumas novidades: TShiftState Shift, int X, int Y)

Primeiramente, vamos entender o significado de do tipo TShiftState Shift.

O tipo TShiftState indica o estado das teclas Alt, Ctrl e Shift, bem como dos botões do mouse.


typedef Set<Classes__1, ssShift, ssDouble>  TshiftState;

Descrição: O tipo TShiftState é usado para eventos de teclado e eventos do mouse para determinar o estado das teclas Alt, Ctrl e Shift, bem como dos botões do mouse, quando ocorrer um evento. Trata-se de um grupo de flags que indica o seguinte:



Valor

Significa

ssShift

A tecla Shift está segura em baixo.

ssAlt

A tecla Alt está segura em baixo.

ssCtrl

A tecla Ctrl está segura em baixo.

ssLeft

O botão esquerdo do mouse está seguro em baixo.

ssRight

O botão direito do mouse está seguro em baixo.

ssMiddle

O botão do meio do mouse está seguro em baixo..

ssDouble

O mouse recebeu um duplo clique.



Podemos entender TShiftState como uma espécie de variável que, automaticamente, é nomeada de Shift pelo C++Builder no evento estudado.


Quanto às duas variáveis inteiras nomeadas respectivamente de X e Y ( int X, int Y ) pelo C++Builder, nada mais são do que os possíveis valores para as coordenadas X e Y do Form.


Então se, por exemplo, inserirmos as seguintes linhas de código no evento acima:


//---------------------------------------------------------------------------

void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
if(Shift.Contains(ssShift) && X == 0 && Y == 0)
Close();
}
//---------------------------------------------------------------------------

Não ficará difícil entender que: se a tecla Shift (Shift.Contains(ssShift)) estiver pressionada enquanto o mouse mover-se sobre as coordenadas 0 e 0 ( X == 0 && Y == 0 ), ou seja, no extremo esquerdo do topo de Form1, o programa será encerrado.



anterior

índice

próxima


HOME || MAPA DO SITE || CURSOS || TUTORIAIS || LINKS || FORUM || CONTATO