C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Попиксельное скроллирование, Плавная прокрутка AutoScroll (Memo, Rich
aquanet sk
Отправлено: 21.03.2007, 13:42


Станционный диспетчер

Группа: Участник
Сообщений: 87



Здравствуйте!

В общем надо реализовать функцию автоматического скроллирования текста, типа как это в браузерах происходит при нажатии на СКМ.


Пробовал и полосы прокрутки крутить и по тексту перемещаться программно; всё не то, теперь вот предполагаю, что возможно можно шаг полосы прокрутки уменьшить, либо как-то превратить текст в рисунок, и канву скроллировать, показывая поочередно разные её фрагменты (короче это просто бредовые идеи из бардачка smile.gif ).

Что можете посоветовать из собственного опыта?

Присоединить изображение

Присоединить изображение

aquanet sk
Отправлено: 21.03.2007, 13:45


Станционный диспетчер

Группа: Участник
Сообщений: 87



Подобное встретить можно в QIP в разделе About.



Присоединить изображение

Присоединить изображение

Ramzay
Отправлено: 21.03.2007, 14:50


Дежурный стрелочник

Группа: Участник
Сообщений: 31



Берешь Panel, на нее помещаешь Label, в Label загоняешь нужный текст. При этом высота Label намного превосходит Panel.

На форму кидаешь таймер, задаешь интервал 100 и по таймеру делаешь:

Label1->Top=Label1->Top-1;

Текст медленно поднимается вверх
Admin
Отправлено: 21.03.2007, 16:22


Владимир

Группа: Администратор
Сообщений: 1190



Или смотрите компонент TSecretPanel из RxLib.
aquanet sk
  Отправлено: 22.03.2007, 00:05


Станционный диспетчер

Группа: Участник
Сообщений: 87



Да мне так и не ответили, какой Rxlib скачивать и как ставить.

С Label понял, а с Memo? Тоже сдвигать? Нельзя как-нибудь с полосами прокрутки взаимодействовать, уменьшая шаг прокрутки, типа как есть пример для уменьшения шага/времени задержки:

QUOTE
Как сделать задержку (типа Delay) меньше чем 1 сек

void delay(__int64 mcSec)
{
   LARGE_INTEGER startTime, tmp;
   QueryPerformanceCounter(&startTime);
   while(1){
       QueryPerformanceCounter(&tmp);
       if(__int64(tmp.QuadPart — startTime.QuadPart)> mcSec)
           break;
       Application->ProcessMessages();
   }
}
Admin
Отправлено: 23.03.2007, 21:37


Владимир

Группа: Администратор
Сообщений: 1190



QUOTE
Да мне так и не ответили, какой Rxlib скачивать и как ставить.


Любой под свой C++Builder ( 3 или 4 или 5 или 6)
или под свою версию Delphi (4,5,6,7, 2006)

http://www.rxlib.ru/Upload/rx275BCB6.zip
или
http://www.rxlib.ru/Upload/RXLib6_setup_.zip

или смотрите
http://delphiplus.org/projects/rx/index.html
aquanet sk
Отправлено: 25.03.2007, 02:44


Станционный диспетчер

Группа: Участник
Сообщений: 87



To Admin, хорошо скачаю попробую.

To Ramzay, тут проблема в том, что в Label мне не надо загонять, т.к. работа с Memo должна быть доступна в любой момент на том моменте где прользователь остановит прокрутку.
С Memo следующие проблемы: мне в любой момент надо с ним работать, таймер я смогу остановить, а вот подняться к самым верхним строкам корректно будет нереально, часть полосы прокрутки будет невидна, т.к. уедет за пределы нашей видимости, более того верхние строки вообще не будут видны после прокрутки скажем "одной страницы". Вторая проблема заключается в том, что каждые эти 100 мс надо ещё будет проверять не равны ли значения нижней границы панели и нижней границы Memo, чтобы вовремя остановить прокрутку.
Третья и самая важная проблема, это подогнать/установить высоту Memo под конкретное количество строк текста, там у меня может быть и 15 строчек и 250, и 1000.

Тема остается актуальной, прошу делиться своими соображениями на этот счет, имхо, нередкая проблема наверняка.

Отредактировано aquanet sk — 25.03.2007, 03:24
aquanet sk
Отправлено: 25.03.2007, 03:13


Станционный диспетчер

Группа: Участник
Сообщений: 87



Не не получилось поставить RxLib, повылазили ошибка на ошибке, теперь ещё при запуске Билдера не всё гладко проходит.
Из описания нашел только для Builder 3.x, по нему и делал smile.gif
Неплохо бы было какой-нибудь видео ролик сделать по установке на каждую версию Билдера и Делфи, для 6-го Билдера я могу сделать, надо только сначала научиться ставить... wink.gif
desivers
Отправлено: 25.03.2007, 03:45


Дежурный стрелочник

Группа: Участник
Сообщений: 32



Пойми все компоненты ставятся одинаково, ну кроме тех которые сделаны для Delphi тут свои сложности и то в 95% ставятся нормально. В остальном нужно читать помощь или Архангельского, у меня Builder 2006 и то я поставил Rxlib хотя ее нет под 2006.

Отредактировано desivers — 25.03.2007, 03:47
aquanet sk
Отправлено: 26.03.2007, 00:06


Станционный диспетчер

Группа: Участник
Сообщений: 87



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

Вернуться в Вопросы программирования в C++Builder