![]() |
Модераторы: 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. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |