|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Скроллинг окна формы
Здравствуйте.
Есть форма некоторого заданного размера. В процессе ее вывода на экран на форме в runtime создаются визуальные объекты. Когда суммарная высота созданных объектов начинает превышать высоту формы, то появляется прокрутка окна. При этом после окончания отображения формы 1) ползунок прокрутки прокручен в самый низ (то есть фокус не в самом верху окна) и 2) нет реакции на колесо прокрутки мыши (можно только ухватывать ползунок при нажатой кнопки мыши и двигать его самой мышью). Вопрос: Как сделать так, чтобы 1) ползунок прокрутки был прокручен в самый верх и 2) появилась реакция на колесо прокрутки мыши. |
#2
|
|||
|
|||
1. Выбирай любой метод:
TForm.ScrollInView(); - скролирует до показа указанного контрола. TForm.ScrollBy(); - абсолютное скролирование. TForm.VertScrollBar - ссылка на полосу прокрутки. 2. Обрабатывай событие использования колеса мыши: OnMouseWeelUp - вверх. OnMouseWeelDown - вниз. Делать придется через TForm.VertScrollBar. |
#3
|
|||
|
|||
Спасибо, lmikle. Все ответы помогли.
По теме возникло еще пару вопросов: 3) существует ли стандартная величина прокрутки, то есть стандартное значение VertScrollBar.Increment (по умолчания Delphi ставит 8) и 4) что нужно сделать, чтобы скроллинг был возможен по нажатию клавиш Home, End, PgUp, PgDown (по умолчанию на них нет реакции)? |
#4
|
|||
|
|||
О каких-либо стандартах на величину прокрутки я не слышал. В принципе, имеет смысл подюирать в зависимоти от общей высоты.
Обрабока клавишь - руками, как и с обработчиком колеса. Бросаешь TActionList, добавляешь соответсвующие экшены и вперед... |
#5
|
||||
|
||||
GetSystemMetric имеет много параметров, один из которых SM_CYVSCROLL.
...сказал, и загрустил от бесспорной своей правоты |
#6
|
|||
|
|||
так то системная. она не всегда годится по смыслу.
|
#7
|
|||
|
|||
Цитата:
TActionList разместил, Action1 добавил. После этого в коде Action1 надо обрабатывать Windows Messages (те сообщения, которые соответствуют нажатию клавиш PgUp, PgDn и т.д.)? Или что-то другое делать? |
#8
|
|||
|
|||
У Action'а есть свойство, где указывается клавиша. А в обработчике события OnExecute пишешь что надо делать. Т.е. на каждую клавише (или комбинацию) тебе нужен отдельный Action.
|
#9
|
||||
|
||||
Цитата:
...сказал, и загрустил от бесспорной своей правоты Последний раз редактировалось 0nni, 16.12.2008 в 18:49. |
#10
|
|||
|
|||
Ну, в принципе, наверное, годится.
Просто то значение не всегда удобно. Зачастую приходится вычислять свое и его ставить - в зависимости от реальных размеров прокручиваемого объекта. |