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.
|
HOME || MAPA DO SITE || CURSOS || TUTORIAIS || LINKS || FORUM || CONTATO |