Evento do mouse sobre o componente
Desejo saber fazer a seguinte coisa no Delphi 7: quando o cursor do mouse passar sobre o SpeedButton(apenas passar, sem clicar) o componente aumentaria de tamanho. Quando o cursor do mouse sair de cima, o componente voltar ao tamanho inicial. Se alguém puder me esclarecer ficaria muito grato.
Jefferson Oliveira
Curtidas 0
Respostas
Rafael Mota
24/04/2013
Boa Tarde!!
Para aumentar o tamanho no evento OnMouseMov do botão você coloca:
SpeedButton1.Height := 40;
Para voltar ao tomanho normal, no evento OnMouseMov do Form você coloca:
SpeedButton1.Height := 22;
Para aumentar o tamanho no evento OnMouseMov do botão você coloca:
SpeedButton1.Height := 40;
Para voltar ao tomanho normal, no evento OnMouseMov do Form você coloca:
SpeedButton1.Height := 22;
GOSTEI 0
Joel Rodrigues
24/04/2013
Opa, neste caso acho que você deveria utilizar os eventos OnMouseEnter (quando o mouse "entra" no controle) e OnMouseLeave (quando o mouse deixa o controle).
Aí utilizaria o que o amigo acima disse:
e
Aí utilizaria o que o amigo acima disse:
procedure TFormMain.SpeedButton1MouseEnter(Sender: TObject); begin (Sender as TSpeedButton).Height := 40; (Sender as TSpeedButton).Width := 40; end;
e
procedure TFormMain.SpeedButton1MouseLeave(Sender: TObject); begin (Sender as TSpeedButton).Height := 22; (Sender as TSpeedButton).Width := 22; end;
GOSTEI 0
Joel Rodrigues
24/04/2013
Repare que dessa forma o botão aumenta, mas não mantém seu centro. Para isso seria preciso desloca-lo para a esquerda e para cima. Então ficaria assim:
e
Aí eu considerei que o tamanho original é 22x22 e você está aumentando para 40x40. Então há uma diferença de 18x18. Sendo assim, deslocamos o botão para a esquerda e para cima em 9px (metade da variação).
procedure TFormMain.SpeedButton1MouseEnter(Sender: TObject); begin (Sender as TSpeedButton).Height := 40; (Sender as TSpeedButton).Width := 40; (Sender as TSpeedButton).Left := (Sender as TSpeedButton).Left - 9; (Sender as TSpeedButton).Top := (Sender as TSpeedButton).Left - 9; end;
e
procedure TFormMain.SpeedButton1MouseLeave(Sender: TObject); begin (Sender as TSpeedButton).Height := 22; (Sender as TSpeedButton).Width := 22; (Sender as TSpeedButton).Left := (Sender as TSpeedButton).Left + 9; (Sender as TSpeedButton).Top := (Sender as TSpeedButton).Left + 9; end;
Aí eu considerei que o tamanho original é 22x22 e você está aumentando para 40x40. Então há uma diferença de 18x18. Sendo assim, deslocamos o botão para a esquerda e para cima em 9px (metade da variação).
GOSTEI 0
Joel Rodrigues
24/04/2013
Só mais um comentário: observe que dessa forma você pode usar o mesmo evento para vários botões, pois aí estamos usando o Sender do método e não referenciando diretamente o botão pelo nome.
Boa sorte e qualquer coisa, é só falar.
Boa sorte e qualquer coisa, é só falar.
GOSTEI 0
Rafael Mota
24/04/2013
Obrigado pelo complemento Joel!
Mas,eu acho que no Delphi 7 o speedbutton ainda não possui os eventos OnMouseEnter e OnMouseLeave.
Mas,eu acho que no Delphi 7 o speedbutton ainda não possui os eventos OnMouseEnter e OnMouseLeave.
GOSTEI 0
Joel Rodrigues
24/04/2013
Vixe, véi... bem observado.
Que bobeira minha.
Faz tanto tempo que não vejo o D7 que às vezes me esqueço desses detalhes.
Obrigado por lembrar.
Abraço.
Que bobeira minha.
Faz tanto tempo que não vejo o D7 que às vezes me esqueço desses detalhes.
Obrigado por lembrar.
Abraço.
GOSTEI 0