GARANTIR DESCONTO

Fórum Trocar imagem ao passar o mouse #350995

21/12/2007

0

Olá amigos !

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

Tiagojmilam

Responder

Posts

21/12/2007

Aasn

Olá colega,

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


Responder

Gostei + 0

22/12/2007

Tiagojmilam

Realmente eu estava procurando esses códigos no componente mais naum encontrava estas opções...

É que eu sou iniciante.. Esse código que você me passou eu devo coloca-lo onde ?


Valew amig o!


Responder

Gostei + 0

22/12/2007

Micheus

Além da abordagem do colega [b:7f6db24a37]AASN[/b:7f6db24a37] (criar um novo componente derivado do TImage), há a possibilidade de implementar no seu form o recurso para um TImage específico.

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


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar