Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.14;
Скачать: CL | DM;

Вниз

Изменить Scroll у TStringList   Найти похожие ветки 

 
Новенький   (2005-10-25 11:28) [0]

Ув. мастера.
Мне поставили задачу сделать у стринг листа "мягкий скрол",
а опыта написания своих компонент у меня пока маловато.
То есть ячейки грида должны не перескакивать, а постепенно опускаться или подниматься.

Может кто решал подобную задачу, подскажите пожалуйста.


 
Новенький   (2005-10-25 11:33) [1]

Сори не проснулся еще, все выше сказанное относится к TStringGrid


 
clickmaker ©   (2005-10-25 15:26) [2]


> Мне поставили задачу сделать у стринг листа "мягкий скрол",

никогда не понимал таких постановщиков... зачем?


 
Новенький   (2005-10-25 17:03) [3]

Я тоже не понимаю зачем, мож для красоты, но деваться некуда. Пробовал разместить стринггрид на скролбоксе, но оказалось, что есть ограничение на Heigth грида. Может подскажете в каком направлении двигаться, если это конечно реально с небольшими затратами сделать.


 
clickmaker ©   (2005-10-25 18:04) [4]

нереально в стандартном
ищи другие компоненты
на torry.net, например, или здесь tmssoftware.com


 
Новенький   (2005-10-25 18:12) [5]

Спасибо Сlickmaker.


 
Юрий Зотов ©   (2005-10-26 04:52) [6]

Вообще говоря, достаточно заместить обработку сообщения WM_VSCROLL (а если надо, то и WM_HSCROLL) и ввести свою прорисовку ячеек. Но если нет достаточного в этм деле опыта, то действительно стоит сначала поискать готовый компонент.


 
Новенький   (2005-10-28 18:36) [7]

Интересно, а можно поподробней пожалуйста.
Вы имеете ввиду в обработчике wm_scroll рисовать свои ячейки или onDrawCell, извините за ламерство.


 
Юрий Зотов ©   (2005-10-28 18:41) [8]

В wm_scroll обеспечить плавное движение скроллбара, а ячейки рисовать в DrawCell в зависимости от позиции скроллбара. Еще потребуется отлов добавления/удаления ячеек, чтобы менять пределы скроллбара.

Посмотрите, как все это сделано в стандартном гриде - многое станет ясно.


 
Новенький   (2005-10-28 19:03) [9]

Ну плавное движение скролбара можно обеспечить с помощью
Options.goThumbTracking. А в остальном я понимаю, что все свойства предка,
типа CellRect(x, y), VisibleRowCount и т. д. тоже придется задавать самому?
Может тогда лучше взять скрол бокс и рисовть на нем, создавать TImage и перемещать пока станет не видимым?


 
Новенький   (2005-10-31 14:43) [10]

>Юрий Зотов ©

Все таки думаю, что не получится, в обработчике wm_scroll, борландовцы
изменяют положение верхней ячейки (FtopLeft, то есть вторая санет первой  и т. д), соответственоо ее top всегда равен Top клиенской области, а потом сдвигают среднюю часть.
А мне было необходимо, чтобы верхняя ячейка плавно поползла вверх.


 
Игорь Шевченко ©   (2005-11-03 13:17) [11]


> А мне было необходимо, чтобы верхняя ячейка плавно поползла
> вверх.


Я бы посоветовал найти в grids.pas вызовы функций ScrollWindow, ScrollWindowEx и найти способ вызвать вместо них функцию ScrollWindowEx с флагом SW_SMOOTHSCROLL.


 
Новенький   (2005-11-10 16:57) [12]

Спасибо, отказался я переделывать стандартный грид, да и задуман он так чтобы всегда показывать целую ячейку.

Вышел таким образом: взял ScrollBox ввиде подложки и CustomControl как ячейку и приблизительно повторил работу грида.



Страницы: 1 вся ветка

Текущий архив: 2006.05.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.053 c
2-1146117984
IntruderLab
2006-04-27 10:06
2006.05.14
DLL


8-1134759707
CMOS
2005-12-16 22:01
2006.05.14
Изменение палитры


2-1145852307
Westbronx
2006-04-24 08:18
2006.05.14
Работа с текстом


1-1144408685
qz9bit
2006-04-07 15:18
2006.05.14
Создание подключения в рантайме


2-1145863414
De
2006-04-24 11:23
2006.05.14
Хочу в потомке реструкторировать предка, возможно ли?