![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Gugle |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 9.12.2005 Репутация: нет Всего: нет |
Доброго времени суток всем мастерам!
В StringGrid вставляю ComboBox и MaskEdit. Все строки StringGrid-а на экран не влазят и у него соответственно появляется вертикальная полоса прокрутки. Тут возникает проблема. Если полосой прокрутки воспользоваться не кликом по ней, а скрулом на мышке, то ComboBox и MaskEdit после этого не появляются в ячеках. Что делать, с такой проблемой ума не приложу. Вот так вставляю ComboBox и MaskEdit:
Условия
передаю в процедурах ComboBox1Exit и СomboBox1Change. У MaskEdit соответственно! Пробовал перенестись из OnSelectCell в OnDrawCell, то же не помогает! Пробовал перерисовывать их:
Бац!!! Не помогло! Тытался отключить скрул мышки, однако и тут проблема. Ловим событие скрула методом:
Оказалось что если у мышки стоят "хорошие" драйвера то этот метод не срабатывает, то же самое и с TApplicationEvents. Ничего путного не нашел кроме как полностью отключить скрул мышки. Однако не у всех мышек стандртное сообщение от скрула (CM_MOUSEWHEEL и WM_MOUSEWHEEL) и это добавляет проблем. Как оказалось у тех мышек, у которых на колесике есть "клик", сообщения на событие скрул другое, а те мыши, где вместо колесиков шарики - третье (предпологаю что это еще не все вариции на тему...). Соответственно и реакция у компонентов где есть прокрутки разная! Однако с проблемой справился и скрул отключил и... всеравно ComboBox пропадает! После еще пары-тройки идей решил сделать пару финтов ушами и вот тут то самое интересное! Вернул прогу в первоначальный вариант. 1. Подключил другую мышку (была Tech --> стала Logitech) выяснилось, что эффекта пропадания ComboBox-ов и MaskEdit-ов не наблюдается. И вообще там колесико передает движение не самой полосе прокрутки, а перемещается область выделения ячеек. Все это происходило под WinXP. 2. Все работает "нормально" с обоими мышками на Win98. Причем при движении колесика срабатывает не полоса прокрутки, а передвигается область выделения Grid-а. 3. При работе с Win2000 вообще полный бардак! Logitech работает нормально правда движется не полоса прокрутки а сама область выделения, но у меня нету для нее драйверов и там стандартные использую. При подключении Tech раз на раз не приходится. Что с дровами от проихводителя, что со стандартными дровами из под виндов... Если в момент прокрутки мышкой не двигать, то все хорошо работает, но, опять же, действует не полоса прокрутки, а... (все то же эффект) движется область выделения, если в момент прокрутки колесика сдвинуть мышку, то событие "скрула" передается полосе прокрутки и ComboBox с MaskEdit-ом больше не показываются. 4. Теперь самое интересное и соответственно вывод!!! Убрал полосу прокрутки из StringGrid-а и... Какую мышку не подключал, в какой системе не работал - ничего не пропадает! Делаю единственный вывод, что ломается все из-за того что движение колесика передается именно полосе прокрутки. Вот только что с этим делать ?!? Для меня пока - загадка. Хотелось бы выслушать идеи! |
||||||||
|
|||||||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 9 Всего: 54 |
Если ты используеш grid для вывода данных из БД то есть Компонент TDBgrid в нем combo прикручивается легко, без всякого кодинга.
А если DBgrid не подходит, то тебе нужно у combobox родителем делать grid. Мне так кажется, но может я и неправ. -------------------- Кольцов Виктор Владимирович |
|||
|
||||
Gugle |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 9.12.2005 Репутация: нет Всего: нет |
БД не могу использовать в связи со спецификой программы...
А проблема не в том кто родитель. Проблема, как я себе ее представляю, в перехвате событий. Полоса прокрутки захватывает окно и не отпускает его. Из-за этого не срабатывает функция Visible:=True у компонентов, которые встраивешь. Прокрутка по разному воспринимает событие скрула и клика по ней. Это я себе так представляю! |
|||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 9 Всего: 54 |
Насколько я помню у grid-а можно вообще запретить полосы прокрутки, попробуй сделать без них а для прокрутки используй отдельный компонент.
-------------------- Кольцов Виктор Владимирович |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |