CAPÍTULO 3
Programação visual com Software Livre
EDIT LIN EDITORIAL S.L,  dos autores  Daniel Campos Fernández e José Luis Redrejo.  Prólogo de Benoit Minisini



Mouse


O mouse é a interface por excelência de qualquer desktop atual, Vamos distinguir aqui dois parágrafo.

Em primeiro lugar encontra-se a representação deste no desktop, o ponteiro, que habitualmente aparece com uma forma de flecha, branca ou preta.  A respeito, cada controle dispõe de uma propriedade Mouse, a qual pode tomar como valores as constantes da classe Mouse para trocar seu aspecto.

Se consideram constantes para que o mouse adote diversos aspectos, como pode ser um relógio (espera), um cursor de texto, flechas em diversas ocasiões, etc.

As constantes da classe Mouse são as mesmas para o gb.qt e gb.gtk, não obstante, seus valores numéricos são distintos. Por tanto um código bem escrito e escalável, não deve usar valores numéricos para indicar um tipo de ponteiro,  se não as constantes desta classe.

Cada controle dispõe, de mais, de uma  propriedade Cursor, que aceita uma imagem e permite desenhar um ponteiro totalmente personalizado (a partir de um arquivo .png  pu .xpm, por exemplo) para cada controle dependendo do servidor gráfico utilizado no sistema, é possível que o cursor tenham também várias cores, não só em preto e branco como os tradicionais.

A classe estática Aplicação, possui uma propriedade Busy, que é um número inteiro. Se seu valor for maior que zero, todos os controles e janelas da aplicação mostrarão o ponteiro como um relógio (indicando ao usuário que tem que esperar), independentemente do cursor empregado para cada controle. Se o valor passa a zero, retornam-se aos controles habituais.

Por outro lado, cada controle recebe evento do mouse, que podemos manipula-lo a partir do programa. Os eventos MouseDown, MouseUp, MouseWheel, determinam, respectivamente, se o usuário pressionou um botão, levantou, moveu a roda do mouse ou moveu o mouse de posição.

Dentro destes eventos, somente dentro deles,  podemos empregar a classe Mouse, para determinar que botão foi pressionado (esquerdo, direito ou central) mediante as propriedades Mouse.Left, Mouse.Right ou Mouse.Middle, que tornam o valor true se o botão correspondente foi pressionado ou levantado; a posição do mouse dentro do controle (Mouse.X e Mouse.Y ); a posição do mouse em relação ao desktop (Mouse.ScreenX e Mouse.ScreenY); assim como a movimentação sobre a roda do mouse (Mouse.Delta e Mouse.Orientation).

Na maior parte de controles, o evento MouseMove, é produzido só se ao menos um botão do mouse for pressionado pelo usuário.

Este pequeno exemplo permite mover um botão de posição dentro de um formulário, quando o usuário o arrasta enquanto mantem pressionado o botão esquerdo.

Criaremos um fomulário Form1 com um botão Button1, que inclua este código:

' Gambas class file

PRIVATE pX AS Integer
PRIVATE py AS Integer

PUBLIC SUB Button1_MouseDown()

IF Mouse.Left THEN

'Armazenamos posições iniciais
pX = Mouse.X
pX = Mouse.Y

END IF

END

PUBLIC SUB Button1_MouseMove()

  IF Mouse.Left THEN
  '********************************************************
  'deslocamos o botão de acordo com a variação de X e Y
  '********************************************************
  Button1.Move(Button1.X - px + Mouse.X, Button1.Y - pY + Mouse.Y)

  END IF

END


A diferença de outros ambiente de desenvolvimento, onde o evento recebe vários parâmetros indicando o botão, posição, etc., em Gambas tudo isso é feito a partir da informação armazenada na classe Mouse, que somente está disponível nestes eventos. 


O evento MouseDown é cancelável, o que  significa  que empregamos a  instrução  STOP EVENT dentro de seu código, evitando que se propague e, por tanto, que o controle atue em consequência, segundo seu funcionamento interno habitual (por exemplo, um botão não lançaria o evento Click se cancelarmos o MouseDown).

Outros  eventos comuns aos controles são DblClick (duplo click do mouse), Menu (pressionar o botão direito) o Click (pressionar o botão esquerdo). Alguns controles podem não dispor do evento Click.



HOME

Cópia literal

Extraído do livro “GAMBAS, programação visual com software Livre”, da editora EDIT LIN EDITORIAL S.L,  dos autores  Daniel Campos Fernández e José Luis Redrejo. Prólogo de Benoit Minisini

LICENSA DESTE DOCUMENTO


É permitido a cópia e distribuição da totalidade ou parte desta obra sem fins lucrativo. Toda cópia total ou parcial devera expressar o nome do autor e da editora e incluir esta mesma licença, adicionando se é uma cópia literal “Cópia literal”. Se é autorizada a modificação e tradução da obra  sem fins lucrativo sempre se deve constar na obra resultante  a modificação o nome da obra original o autor da obra original e o nome da editora e a obra resultante também deverá ser livremente reproduzida, distribuída, ao publico e transformada em termos similares ao exposto nesta licença.

Tradução

Cientista
 (Antonio Sousa)