![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
Суть такая: Создал компонент на основе TImage. Теперь хочу создать в нём событие, которое будет реагировать, когда курсор на него наводиться. Но как это сделать? Если бонально просто, в TImage нет сообытия OnMove. Как же его туда добавить? Просто по сообщениям из Windows пока ни изучил материал. Как это хоть делаеться?
Код: Код:
type
TMyEvent = procedure(Sender: TObject) of object;
TButonImage = class (TImage)
private
Events: TApplicationEvents;
fIndex: Integer;
fOnMouseMove: TMyEvent;
procedure DoOnMouseMove(Sender:TObject);
procedure SetIndex(Index:Integer);
procedure SetPicture(Name:string);
published
property Index: Integer read fIndex write SetIndex;
property OnMouseMove: TMyEvent read fOnMouseMove;
public
constructor Create(Aowner: TComponent);
end;
implementation
uses Unit1;
{ ButonImage }
constructor TButonImage.Create(Aowner: TComponent);
begin
inherited Create(Aowner);
Parent:=TWinControl(Aowner);
Self.Height:=100;
Self.Width:=100;
SetIndex(0);
Self.Perform(WM_MOUSEMOVE,0,0);
end;
procedure TButonImage.DoOnMouseMove(Sender: TObject);
begin
if Sender = Self then
if Assigned(fOnMouseMove) then fOnMouseMove(Self)
else
begin
SetIndex(0);
end;
end;
procedure TButonImage.SetIndex(Index: Integer);
begin
fIndex:=Index;
case fIndex of
-1: SetPicture('11.png');
0: SetPicture('12.png');
1: SetPicture('13.png');
end;
end;
procedure TButonImage.SetPicture(Name: string);
begin
Self.Picture.LoadFromFile(Name);
end;
end. |
|
#2
|
||||
|
||||
|
Цитата:
Хоть в исходники ExtCtrls.pas загляни. |
|
#3
|
||||
|
||||
|
Цитата:
|
|
#4
|
||||
|
||||
|
Какое событие OnMove? В TImage имеется событие OnMouseMove.
|
|
#5
|
||||
|
||||
|
Цитата:
Так что я не так набираю? |
|
#6
|
||||
|
||||
|
Я так понимаю, нужно полностью самостоятельно обработать событие OnMouseMove. Можно сделать так:
Код:
TButonImage = class (TImage)
...
protected
procedure MouseMove(Sender : TObject; Shift : TShiftState; X, Y : Integer);
...
end;
...
constructor TButonImage.Create(Aowner: TComponent);
begin
...
OnMouseMove := MouseMove;
end;
procedure TButonImage.MouseMove(Sender : TObject; Shift : TShiftState; X, Y : Integer);
begin
...
end; |
| Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
Fantomas_RUS (06.04.2012)
| ||