|
4 / 4 / 1
Регистрация: 13.09.2013
Сообщений: 154
|
||||||
TScrollBar прокрутка колёсиком26.02.2015, 14:18. Показов 5031. Ответов 10
Метки нет (Все метки)
Здравствуйте!
Хочу реализовать прокрутку ScrollBar'a с помощью колёсика, нужно что-то вроде:
Perform вообще для ScrollBar'a не работает ![]() Как сообщить ScrollBar'у, что нужно прокручиваться (чтобы сработал ивент OnScroll)? Заменить OnScroll на OnChange и тупо изменять Position я не могу, т.к. ScrollCode для меня очень важен.
0
|
||||||
| 26.02.2015, 14:18 | |
|
Ответы с готовыми решениями:
10
Прокрутка колёсиком мышки Прокрутка колёсиком в StringGrid Компоненты TScrollBar и TShape |
|
Супер-модератор
|
||||||
| 26.02.2015, 15:15 | ||||||
1
|
||||||
|
4 / 4 / 1
Регистрация: 13.09.2013
Сообщений: 154
|
|||||||||||
| 26.02.2015, 15:42 [ТС] | |||||||||||
|
volvo, большое спасибо! Но я что-то не могу понять, куда теперь DoMouseWheel этот пихать?
И ещё вопрос попутный: чем отличается
0
|
|||||||||||
|
Супер-модератор
|
|||
| 26.02.2015, 15:47 | |||
|
1
|
|||
|
4 / 4 / 1
Регистрация: 13.09.2013
Сообщений: 154
|
|
| 26.02.2015, 16:22 [ТС] | |
|
volvo, спасибо огромное, понял
![]() А как сделать так, чтобы прокрутка срабатывала при нахождении курсора в определённой области (мне нужна клиентская область компонента TImage), а за её пределами не работала? (с вашим вариантом получается, что прокрутка начинает работать: 1) при получении ScrollBar'ом фокуса и 2) где бы ни находился курсор) Я захотел сразу запихнуть PtInRect в DoMouseWheel, но понял, что на момент объявления этого метода ещё никакого Image'а нету. Да и как быть при отсутствии фокуса у ScrollBar'a? (допустим, нажал на кнопку на какой-то панельке, переместил курсор в рабочую область (Image) и прокрутка не работает, пока не ткнешь по ScrollBar'у)
0
|
|
|
Супер-модератор
|
|||||||||||
| 26.02.2015, 17:34 | |||||||||||
|
Ну, активируй ScrollBar при нахождении мыши над изображением:
1
|
|||||||||||
|
4 / 4 / 1
Регистрация: 13.09.2013
Сообщений: 154
|
|
| 26.02.2015, 19:05 [ТС] | |
|
volvo, спасибо, но как-то это не совсем правильно... не удобно для пользователя. фокус передавать ScrollBar'y. Это же снимает фокус с других компонентов. Вот например на нашем форуме: я сейчас набираю это сообщение в большом поле для ввода, но захотел вернуться к вашему посту чтобы кое-что уточнить - для этого я просто кручу колёсико, хотя фокус у меня на поле ввода, естественно. Код в вашем сообщении отображается не полностью, нужно прокручивать - я просто навожу курсор в это окошко с кодом и начинаю крутить колёсико (при этом фокус по прежнему на поле ввода, он не передаётся ScrollBar'y). У меня примерно такая же ситуация в программе. Забирать у пользователя фокус - не порядочно:)
0
|
|
|
4 / 4 / 1
Регистрация: 13.09.2013
Сообщений: 154
|
|
| 26.02.2015, 22:57 [ТС] | |
|
volvo, спасибо ОГРОМНОЕ! супер! Я 2 дня возился, пытался и так и сяк...
для меня Message - туман вообще (все эти wParam...lParam...) не подскажите на эту тему что-нибудь почитать? Вы добавили ScrollBar'у метод-обработчик сообщения WM_MOUSEWHEEL (к слову, можно было любое сообщение с одним параметром подставить?), а MakeLParam зачем? просто положенный фейк-параматр? И ещё по коду вопрос: Performing - это чтобы сообщения не посылались быстрее, чем успевают выполнится?
0
|
|
|
Супер-модератор
|
||||
| 27.02.2015, 01:47 | ||||
|
1
|
||||
|
4 / 4 / 1
Регистрация: 13.09.2013
Сообщений: 154
|
|||||||||||
| 27.02.2015, 18:39 [ТС] | |||||||||||
|
volvo, спасибо, буду разбираться!
про фейк я сказал потому, что X и Y в вашем обработчике в итоге не используется же, можно просто 0 передать. Или он как-то используется ещё системой, помимо этой процедуры-обработчика? а чтобы WheelDelta нормально принималась, её нужно в старший байт wParam запихнуть, как раз тогда нужен
![]() P.S. в принципе вся фишка сообщений - именно в очереди? Кроме этого они ничем же не отличаются от обычных процедур? P.S.S. а я могу создавать свои сообщения? Добавлено через 24 минуты Кстити, написал в обработчике сообщения:
Попробовал и с Perfoming, и без него. Не заметил никакой разницы: пока не закончится выполнение старого, новое не начинает выполнятся. Очереди никакой тоже нет: я могу 10 раз крутануть во время выполнения одного сообщения, но после завершения выполнится максимум ещё одно, а не 10, как следовало бы ожидать. Никаких ошибок не возникает. Может, delphi сама автоматически вставляет защиту от этой ошибки?
0
|
|||||||||||
| 27.02.2015, 18:39 | |
|
Помогаю со студенческими работами здесь
11
TScrollBar и TListBox не могут одновременно работать! TScrollBar - некорректное отслеживание позиции Управление TScrollBox через TScrollBar Чему равна величина Sizeof(TscrollBar) Проблемы с колёсиком Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Чистый C и C++ в Qt Creator: ставим среду без VPN и настраиваем MinGW/CMake, без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|