![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Doga |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 20.12.2007 Где: Россия, Обнинск Репутация: нет Всего: нет |
Всем привет.
Возникла необходимость реализовать событие OnMouseUp в наследнике класса TScrollBar. Собственно, само событие вытащить в секцию published класса удалось легко, однако оно не возникает, если отпускается левая кнопка мыши (с правой кнопкой всё в порядке). Похоже сообщение WM_LBUTTONUP блокируется на уровне предков класса TScrollBar, т.е. в классе TWinControl или даже в TControl. Подскажите, пожалуйста, как обойти эту проблему, если это вообще возможно... |
|||
|
||||
| lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: 3 Всего: 15 |
Doga,
так мало его вытащить, нужно еще сообщения отлавливать:
Это сообщение отредактировал(а) lukas - 6.3.2008, 21:27 -------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
| Doga |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 20.12.2007 Где: Россия, Обнинск Репутация: нет Всего: нет |
Спасибо lukas.
Правда мне был нужен не OnMouseDown, а OnMouseUp. Но поскольку OnMouseDown в TScrollBar тоже нет, можно считать что это пригодится тож. Однако для меня остаётся не понятным следующее. TControl, предок предка TScrollBar, уже имеет переменную FOnMouseDown. Так же имеется набор необходимых прцедур для работы с событием WM_LBUTTONDOWN.
Почему нельзя воспользоваться уже готовой функциональностью? Чем Ваш вариант лучше? Теперь что касается OnMouseUp. Здесь ситуация аналогичная. В Tcontrol уже есть и само свойство OnMouseUp, и переменная FOnMouseUp, необхдимая для работы с этим свойством, и необходимый набор процедур.
Я считал, что в общем случае, достаточно перенести свойство OnMouseUp в секцию published, тогда для его поддержки автоматически должна будет использоваться существующая функциональность класса. Да, мне кажется так и происходит - я уже говорил, что событие OnMouseUp (в моём варианте) реагирует по крайней мере на WM_RBUTTONUP. Проблема только с WM_LBUTTONUP. В чём я не прав? |
||||
|
|||||
| lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: 3 Всего: 15 |
да по всей видимосту у предка это свойство просто Абстрактное, т.е. без функциональности...
-------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
| Doga |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 20.12.2007 Где: Россия, Обнинск Репутация: нет Всего: нет |
Не согласен.
Создать экземпляр абстрактного класса нвозможно. Это следствие свойств абстрактных классов. Как известно, TScrollBar таким недостатком не страдает. Дело в чём то другом, но только не в этом... |
|||
|
||||
| lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: 3 Всего: 15 |
Doga,
да... а вообще то должно и в твоем случае работать, хм... с combobox-om у меня все получалось отлично... Это сообщение отредактировал(а) lukas - 7.3.2008, 21:04 -------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
| Rrader |
|
|||
|
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 70 Всего: 191 |
||||
|
||||
| Doga |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 20.12.2007 Где: Россия, Обнинск Репутация: нет Всего: нет |
2Rrader. Я понял, спасибо.
А вообще, решение проблемы OnMouseUp существовало до моего вопроса. Собственно, и проблемы то не было. Достаточно было в событии OnScroll отслеживать значение параметра ScrollCode (TScrollCode). ScrollCode становится равным scEndScroll, когда отпускается левая кнопка мыши или клавиша на клавиатуре. Более того, в связи с этим, отпала необходимость в наследнике TScrollBar'а. Сказать по правде, раньше никогда не обращал внимания на этот параметр. Век живи - век учись... Так что, всем спасибо, решение найдено, вопрос снят. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |