Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Замена рисунка кнопки при наведении


Автор: Баг 17.4.2004, 10:49
Где только не искал, везде одна фига...
Нужно сделать кнопки, которые становились выпуклыми/подсвечивались при наведении, не имели бы рамки (SpeedButton Flat'овый не подходит, т.к. приобретает рамку при наведении).
Пробовал CM_MOUSEENTER и CM_MOUSELEAVE, но они почему-то возникают многократно. Может быть самым разумным будет обработать эту многократность, или есть другие способы?

Автор: <Spawn> 17.4.2004, 11:40
CM_MOUSEENTER, CM_MOUSELEAVE возникают как им положено и вовсе не многократо. Привел бы ты лучше код - скорее всего у тебя ошибка

Автор: Баг 17.4.2004, 13:03
и вправду все в порядке, просто я использовал showmessage для проверки

Код для тех, кто обеспокоен подобной проблемой:
unit MyImage;

interface

uses Classes, Extctrls, Controls, Messages;

type

TMyImage = class(TImage)
private
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
published
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('myComponents', [TMyImage]);
end;

{ TImageEx }

procedure TMyImage.CMMouseEnter(var Message: TMessage);
begin
if Assigned(FOnMouseEnter) then FOnMouseEnter(Self);
end;

procedure TMyImage.CMMouseLeave(var Message: TMessage);
begin
if Assigned(FOnMouseLeave) then FOnMouseLeave(Self);
end;

end.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)