Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Событие: Отведение мышки

Автор: Koresh 23.11.2006 14:04

Каким образом можно реализовать для Image'а например?

Автор: volvo 23.11.2006 14:15

Наследуйся от стандартного TImage и лови CM_MOUSELEAVE:

Type
TMyImage = class(TImage)

procedure CMMouseLeave(var msg: TMessage); message CM_MOUSELEAVE;

end;

procedure TMyImage.CMMouseLeave(var msg: TMessage);
begin
inherited;
{ действия на покидание мышью области компонента }
end;

Автор: Koresh 23.11.2006 14:27

Цитата
[Error] Unit1.pas(11): Unsatisfied forward or external declaration: 'TMyImage.CMMouseLeave'

Что-то ругается...

Автор: volvo 23.11.2006 14:30

Ну, так ты саму процедуру-то добавил? Компилятор ее не видит...

Автор: Koresh 23.11.2006 15:21

А если у меня не одна картинка... и при отведении с каждой, нужно, чтобы выполнялись разные процедуры.
Для остальных еще создавать классы? Или как?

Автор: volvo 23.11.2006 15:34

А сделать в TMyImage поле процедурного типа и при инициализации формы прописывать в каждый экземпляр ту процедуру, которая нужна именно для него нельзя?

type
T = procedure;
TMyImage = class(TImage)

procedure CMMouseLeave(var msg: TMessage); message CM_MOUSELEAVE;

private
p: T;
end;

// ...

procedure p_1;
begin
ShowMessage('first:: out');
end;
procedure p_2;
begin
ShowMessage('second:: out');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.p := p_1;
Image2.p := p_2;
end;

?