Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Событие курсор мыши над TComboBox [D5, XP]


TComboBox   (07.08.17 14:24

На панели расположен ряд CheckBox-ов, RadioButton-ов и ComboBox-ов.
У CheckBox-ов и RadioButton-ов имеется событие onMouseMove. Подскажите как мне определить, что курсор мыши находится над одним из ComboBox-ов (событие onMouseMove у этого компонента/контрола отсутствует)?
Спасибо


Игорь Шевченко ©   (07.08.17 14:35[1]

   property OnMouseEnter;
   property OnMouseLeave;


TComboBox   (07.08.17 20:44[2]

> Игорь Шевченко ©   (07.08.17 14:35) [1]
>    property OnMouseEnter;
>    property OnMouseLeave;

Если я правильно понял (не совсем уверен), предлагается создать наследника TComboBox и добавить два необходимых события OnMouseLeave и OnMouseEnter.
В моей ситуации это нежелательно. Имеется довольно "пожилой" проект (2001 г.р.), я продолжаю его сопровождать, мой вопрос был про стандартные TComboBox-сы. В любом случае спасибо, что откликнулись


Игорь Шевченко ©   (07.08.17 20:47[3]

Нет, у TComboBox есть эти события, на них надо написать обработчики, при срабатывании OnMouseEnter курсор мыши будет в окне ComboBox, а при срабатывании OnMouseLeave курсор мыши покинет окно.


TComboBox   (07.08.17 20:48[4]

Попытки с использованием ControlAtPos результата не дали.
Видимо, я что-о недопонимаю ...:(


Smile ©   (07.08.17 20:50[5]

> Игорь Шевченко ©   (07.08.17 20:47) [3]
> Нет, у TComboBox есть эти события, на них надо написать
> обработчики, при срабатывании OnMouseEnter курсор мыши будет
> в окне ComboBox, а при срабатывании OnMouseLeave курсор
> мыши покинет окно.

Уточню, WinXP, D5
Этих событий у TComboBox нет


ВладОшин ©   (07.08.17 21:23[6]

там три handle походу, Edit, list и еще что-то
   FEditHandle: HWnd;
   FListHandle: HWnd;
   FDropHandle: HWnd;

идея така, перехватываем тут

 TComboBox = class(StdCtrls.TComboBox)
 public
   procedure ComboWndProc(var Message: TMessage; ComboWnd: HWnd;
     ComboProc: Pointer); override;
 end;

 TForm1 = class(TForm)
   cb1: TComboBox;
   mmo1: TMemo;
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

{ TComboBox }

procedure TComboBox.ComboWndProc(var Message: TMessage; ComboWnd: HWnd;
 ComboProc: Pointer);
begin
 Form1.mmo1.Lines.Add(IntToStr(Message.Msg));
 inherited;

end;

только в таком виде ошибка при  закрытии, при разрушении надо аккуратнее подумать


Германн ©   (08.08.17 01:45[7]


> Smile ©   (07.08.17 20:50) [5]
>
> > Игорь Шевченко ©   (07.08.17 20:47) [3]
> > Нет, у TComboBox есть эти события, на них надо написать
> > обработчики, при срабатывании OnMouseEnter курсор мыши
> будет
> > в окне ComboBox, а при срабатывании OnMouseLeave курсор
> > мыши покинет окно.
>
> Уточню, WinXP, D5
> Этих событий у TComboBox нет

Хуже всего что эти компоненты лежат на панели. Лежали б они на форме - проблем бы не было в Д5.


TComboBox   (08.08.17 09:03[8]

> Германн ©   (08.08.17 01:45) [7]
> Хуже всего что эти компоненты лежат на панели. Лежали б
> они на форме - проблем бы не было в Д5.

А, конкретно, что это бы изменило? Вряд ли появилось бы событие OnMouseEnter


Leonid Troyanovsky ©   (08.08.17 09:39[9]


> Германн ©   (08.08.17 01:45) [7]

> Хуже всего что эти компоненты лежат на панели.

А чего плохого в панели?
Я, вроде, не раз уже рассказывал.

https://groups.google.com/d/msg/fido7.ru.delphi.chainik/GOJJ9zwlr1I/yfJfpS1Jv6QJ

--
Regards, LVT.


Игорь Шевченко ©   (08.08.17 10:20[10]


> Уточню, WinXP, D5


Извиняюсь. Тогда имитировать в Application.OnMessage - туда все сообщения из очереди ввода приходят, в том числе и мышиные


TComboBox   (08.08.17 10:29[11]

> Leonid Troyanovsky ©   (08.08.17 09:39) [9]

Спасибо, это именно то, что мне нужно!


han_malign ©   (10.08.17 13:21[12]

а еще, в целях образования, можешь посмотреть HSHintComboBox

> {
>   Наследник TComboBox, показывающий Hint для строки в ListBox'овой части,
>   не видимой целиком.
>
>   Автор: Игорь Шевченко
>   Дата создания: 13.04.2002
> ......


TComboBox   (10.08.17 19:02[13]

> han_malign ©   (10.08.17 13:21) [12]
> а еще, в целях образования, можешь посмотреть HSHintComboBox

Ветка была далеко не об этом...
Полномасштабный и исчерпывающий ответ именно здесь:
https://groups.google.com/d/msg/fido7.ru.delphi.chainik/GOJJ9zwlr1I/yfJfpS1Jv6QJ


Германн ©   (11.08.17 01:45[14]


>  Leonid Troyanovsky ©   (08.08.17 09:39) [9]
>
>
> > Германн ©   (08.08.17 01:45) [7]
>
> > Хуже всего что эти компоненты лежат на панели.
>
> А чего плохого в панели?
> Я, вроде, не раз уже рассказывал.
>

Плохого ничего нет. Только кода нужно много писать. Да ещё и не очень понятного большинству вопрошающих на форумах по Дельфи.


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо