![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Добавление нового события [D7, WinXP]
Megabyte © (2006-04-04 14:28:00)Хочу сделать новый компонент на базе TImage.
Хочу добавить 2 события: вход/уход мышки с поля компонента(NoMouseEnter/OnMouseLeave).
Никогда не делал компоненты(но в принципе понимаю) и не нашел нужныхпримеров по добавлению событий.
Есть, допустим, 2 процедуры с директивой Message, реагирующие на сообщения Винды, соответственно:procedure MouseEnter(aMsg : TMessage); message WM_MOUSEENTER;События - это свойства процедурного типа, как я понял.
procedure MouseLeave(aMsg : TMessage); message WM_MOUSELEAVE.
Пусть мне нужно событие с одним параметром Sender, соответственно типа TNotifyEvent.
TadvImage = class(TImage)
FOnMouseEnter : TNotifyEvent;
FOnMouseLeave : TNotifyEvent;
...
published
property OnMouseEnter: TNotifyEvent read FOnMouseEnter
write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave
write FOnMouseLeave
По идее FOnMouseEnter, FOnMouseLeave - переменные, кот. должны указывать на метод, кот. должен выполняться при наступлении события.
1) Во-первых, мне не понятно, что в данном случае означают директивы "read" и "write"?
2)Я не понимаю, как мне связать реакцию на данные сообщения Винды? По идее надо в переменные FOnMouseEnter, FOnMouseLeave указатели на мои процедуры, но тогда не будут совпадать типа переменных(один параметр aMsg: TMessage) и свойств/событий(один параметр Sender :TObject).
Может все делается горвздо проще? Мне надо сделать 2 новых события, реагирующих на определенные сообщения видны, и чтобы эти события отображались в инспекторе объектов.
Юрий Зотов (2006-04-05 12:06:00) [1]> Megabyte © (04.04.06 15:02) [3]
Типа в переменную заносится адрес метода-обработчика.
MBo (2006-04-04 15:06:00) [2]Для того, чтобы свойство отображалось в инспекторе объектов, оно должно быть published и иметь доступ и на чтение, и на запись.
Megabyte (2006-04-04 15:02:00) [3]Типа в переменную заносится факт наступлния события?
Megabyte (2006-04-04 15:01:00) [4]Хитро.
А 1-й вопрос?
> 1) Во-первых, мне не понятно, что в данном случае означают
> директивы "read" и "write"?
Возможно ли, чтобы отсутствовала одна директива, например write?
MBo (2006-04-04 14:31:00) [5]http://www.swissdelphicenter.ch/en/showcode.php?id=1068