![]() |
|
|
Регистрация | << Правила форума >> | 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
|
||||
|
||||
![]() Цитата:
![]() Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
||||
|
||||
![]() Цитата:
|
#4
|
||||
|
||||
![]() Какое событие OnMove? В TImage имеется событие OnMouseMove.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#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; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
Fantomas_RUS (06.04.2012)
|