Fórum Trocar imagem ao passar o mouse #350995
21/12/2007
0
Estou querendo fazer o seguinte... a hora que o usuário passar o mouse sobre o componente Image troque por uma outra imagem... e a hora que ele tire o mouse de cima do componente volte a imagem anterior..
alguém sabe como faz-se isso ?
Valew mais uma vez !!!
Tiagojmilam
Curtir tópico
+ 0Posts
21/12/2007
Aasn
vc pode acrescentar os eventos OnMouseEnter e OnMouseLeave ao componente TImage, assim quando o estiver sobre ele vc conseguirá fazer o que quer...
unit AASNImage;
interface
uses
WinTypes, WinProcs, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;
type
TCMMouseEnter = record
Msg : Cardinal;
Unused : Integer;
Sender : TControl;
Result : LongInt;
end;
TCMMouseLeave = TCMMouseEnter;
TAASNImage = class(TImage)
private
{ Private declarations }
FOnMouseEnter : TNotifyEvent;
FOnMouseLeave : TNotifyEvent;
procedure CMMouseEnter(var Msg : TCMMouseEnter); message CM_MouseEnter;
procedure CMMouseLeave(var Msg : TCMMouseLeave); message CM_MouseLeave;
protected
{ Protected declarations }
public
{ Public declarations }
Constructor Create(AOwner : TComponent); override;
published
{ Published declarations }
property OnMouseEnter : TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave : TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents(´Geral´, [TAASNImage]);
end;
Constructor TAASNImage.Create(AOwner : TComponent);
begin
inherited Create(AOwner);
end;
procedure TAASNImage.CMMouseEnter(var Msg : TCMMouseEnter);
begin
inherited;
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
end;
procedure TAASNImage.CMMouseLeave(var Msg : TCMMouseLeave);
begin
inherited;
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
end;
end.[]´s
AASN
Gostei + 0
22/12/2007
Tiagojmilam
É que eu sou iniciante.. Esse código que você me passou eu devo coloca-lo onde ?
Valew amig o!
Gostei + 0
22/12/2007
Micheus
Segue o código:
type TForm1 = class(TForm) ... private SavedImgWindowProc :TWndMethod; procedure WndMouseMessage(var Message: TMessage); end; ... // procedimento utilizado apenas pelo TImage procedure TFrmSplash.WndMouseMessage(var Message: TMessage); begin case Message.Msg of CM_MouseEnter : Label1.Caption := ´Entrou´; CM_MouseLeave : Label1.Caption := ´Saiu´; end; // passamos as mensagens para o processador // default de mensagens da janela do TImage SavedImgWindowProc(Message); end; // inicializamos o processador de mensagens de janela // do TImage, no OnCreate do form que o contém procedure TFrm.FormCreate(Sender: TObject); begin // salvamos o endereço do procedimento default SavedImgWindowProc := Image1.WindowProc; // atribuimos o novo processador de eventos Image1.WindowProc := WndMouseMessage; end;
Abraços
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)