![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Изменить Scroll у TStringList [D7]
Новенький © (2005-10-25 11:28:00)Ув. мастера.
Мне поставили задачу сделать у стринг листа 'мягкий скрол',
а опыта написания своих компонент у меня пока маловато.
То есть ячейки грида должны не перескакивать, а постепенно опускаться или подниматься.
Может кто решал подобную задачу, подскажите пожалуйста.
Новенький (2005-11-10 16:57:00) [1]Спасибо, отказался я переделывать стандартный грид, да и задуман он так чтобы всегда показывать целую ячейку.
Вышел таким образом: взял ScrollBox ввиде подложки и CustomControl как ячейку и приблизительно повторил работу грида.
Игорь Шевченко (2005-11-03 13:17:00) [2]
> А мне было необходимо, чтобы верхняя ячейка плавно поползла
> вверх.
Я бы посоветовал найти в grids.pas вызовы функций ScrollWindow, ScrollWindowEx и найти способ вызвать вместо них функцию ScrollWindowEx с флагом SW_SMOOTHSCROLL.
Новенький (2005-10-31 14:43:00) [3]>Юрий Зотов ©
Все таки думаю, что не получится, в обработчике wm_scroll, борландовцы
изменяют положение верхней ячейки (FtopLeft, то есть вторая санет первой и т. д), соответственоо ее top всегда равен Top клиенской области, а потом сдвигают среднюю часть.
А мне было необходимо, чтобы верхняя ячейка плавно поползла вверх.
Новенький (2005-10-28 19:03:00) [4]Ну плавное движение скролбара можно обеспечить с помощью
Options.goThumbTracking. А в остальном я понимаю, что все свойства предка,
типа CellRect(x, y), VisibleRowCount и т. д. тоже придется задавать самому?
Может тогда лучше взять скрол бокс и рисовть на нем, создавать TImage и перемещать пока станет не видимым?
Юрий Зотов (2005-10-28 18:41:00) [5]В wm_scroll обеспечить плавное движение скроллбара, а ячейки рисовать в DrawCell в зависимости от позиции скроллбара. Еще потребуется отлов добавления/удаления ячеек, чтобы менять пределы скроллбара.
Посмотрите, как все это сделано в стандартном гриде - многое станет ясно.
Новенький (2005-10-28 18:36:00) [6]Интересно, а можно поподробней пожалуйста.
Вы имеете ввиду в обработчике wm_scroll рисовать свои ячейки или onDrawCell, извините за ламерство.
Юрий Зотов (2005-10-26 04:52:00) [7]Вообще говоря, достаточно заместить обработку сообщения WM_VSCROLL (а если надо, то и WM_HSCROLL) и ввести свою прорисовку ячеек. Но если нет достаточного в этм деле опыта, то действительно стоит сначала поискать готовый компонент.
Новенький (2005-10-25 18:12:00) [8]Спасибо Сlickmaker.
clickmaker (2005-10-25 18:04:00) [9]нереально в стандартном
ищи другие компоненты
на torry.net, например, или здесь tmssoftware.com
Новенький (2005-10-25 17:03:00) [10]Я тоже не понимаю зачем, мож для красоты, но деваться некуда. Пробовал разместить стринггрид на скролбоксе, но оказалось, что есть ограничение на Heigth грида. Может подскажете в каком направлении двигаться, если это конечно реально с небольшими затратами сделать.
clickmaker (2005-10-25 15:26:00) [11]
> Мне поставили задачу сделать у стринг листа 'мягкий скрол',
никогда не понимал таких постановщиков... зачем?
Новенький (2005-10-25 11:33:00) [12]Сори не проснулся еще, все выше сказанное относится к TStringGrid