Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Покидание мыши с компонента [D6, Win95/98, WinME, NT4, Win2k, WinXP]


Страницы:   1 2

maxim2 ©   (2003-01-25 23:09:00) 

Привет всем!
Такой вопросик, у меня на форме два Image как бы сделать так чтобы при заходы мыши на image1, image2 показывался, а при выходе с image1 скрывался image2.


Юрий Зотов   (2003-01-26 12:25:00) [21]

> gsu © (26.01.03 02:16)
> на области обрамляющей нужную

Вот в этом-то все и дело. Таких областей может быть десяток. Или даже несколько десятков. Это форма и любой контрол, примыкающий к Image1, либо перекрывающий Image1, либо лежащий поверх Image1. И для КАЖДОГО будет нужен обработчик OnMouseMove (пусть даже один для всех, но все равно его надо будет назначить КАЖДОМУ). А завтра на форме что-то поменяется - и снова придется все проверять и переназначать.

Далее - поставьте Image1.Align = alClient. Теперь где ловить будем? Вероятно, придется вводить какой-то обработчик WM_NCxxx, поскольку больше ловить негде.

Видите, что получается? При любом, даже самом мелком изменении геометрии формы или ее контролов нам придется снова и снова все проверять, писать новый код, вводить новые или снимать старые обработчики - и пр. Имеем головную боль, высокую вероятность ошибки и т.д.

В то же время, написав свой компонент ОДИН раз (а такой простой компонент пишется за 5 минут) и ОДИН раз написав его обработчик, мы можем спокойно кроить форму как хотим и ни о чем не беспокоиться. Кроме того, получаем полезный компонент на будущее.

Разве это не лучше?

P.S.
1. Куда я исчез в 3-часу ночи? Думаю, спать пошел.
2. А что там было насчет AnyFunc? Напомните, pls.
3. Значок - просто я его покрасил. И уже очень давно. :о)


gsu   (2003-01-26 11:47:00) [22]

И все таки я чувствую ся непонятым )-:|~


Ray Adams   (2003-01-26 03:43:00) [23]

Создать свой компонент наследованный от TImage
добавить в private
FOnMouseEnter: TNotifyEvent; //Make the Mouse Enter and Leave available
FOnMouseLeave: TNotifyEvent;
procedure CMMouseEnter(var Msg:TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Msg:TMessage); message CM_MOUSELEAVE;
и в published
property OnMouseEnter: TNotifyEvent read FOnMouseEnter
write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave
write FOnMouseLeave;


gsu   (2003-01-26 02:52:00) [24]

>> SammIk ©
>> Полныи придурок))на всю голову
У вас, кстати тоже синяя с, хоть я вас и не долбал


SammIk   (2003-01-26 02:49:00) [25]


> Юрий Зотов ©

Говорит верно и про СВ_..
Ипро воробьев..
И вообще задолбали..
Тема уже исчерпала себя.


gsu   (2003-01-26 02:38:00) [26]

Уважаемый, опять вы куда то исчезли.
А, ведь и в прошлый раз мы так и не обсудили тему AnyFunc.
Ладно, у мя время дома не резиновое.
Можете послать свои замечания на мыло, если хотите.
А у мя к вам 3 вопрос: "почему у мя с - синего цвета, а у вас голубого ?"


gsu   (2003-01-26 02:16:00) [27]

>> Может, и зря, не спорю.
Что зря ?

>> Но тогда докажите.
WM_MOUSEMOVE

>> Где ловить будем
на области обрамляющей нужную


Юрий Зотов   (2003-01-26 02:01:00) [28]

> gsu © (26.01.03 01:39)

Может, и зря, не спорю. Но тогда докажите.
Итак, мышь ушла с Image1. Где ловить будем?

Можно, конечно, в хуке. Можно в OnMessage. Можно даже свой драйвер написать. Это уж точно будет "проканать поглубже".

Но, знаете, я сторонник простого и понятного кода. И не сторонник стрельбы из пушки по воробьям.

Итак, мышь ушла с Image1. Где ловить будем?


gsu   (2003-01-26 01:39:00) [29]

>> Юрий Зотов ©
Зря вы так
Вот если поглубже, э ..., как бы это выразиться, проканать, то многое получится (-:|~


Юрий Зотов   (2003-01-26 01:10:00) [30]

Проканает, говорите? Что ж, ОК.
Итак, мышь ушла с Image1. Где ловить будем?

Свой компонент надо писать. С обработкой CM_MOUSEENTER/LEAVE.


gsu   (2003-01-26 00:13:00) [31]

>> maxim2 ©
Проканает, проканает, точно говорю, главное поглубже канай ... (-:|~


Kair   (2003-01-25 23:37:00) [32]

>maxim2 © (25.01.03 23:32)
>А это не проканает, у меня один имадже наложен на другой

Это проканает. Подумай.


maxim2   (2003-01-25 23:32:00) [33]

А это не проканает, у меня один имадже наложен на другой


Kair   (2003-01-25 23:24:00) [34]

onMouseMove


OxOTHuK   (2003-01-25 23:23:00) [35]

IMHO, ты должен в обработчика OnMouseMove смотреть координаты мыши и сравнивать их с областью ImageN...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо