Форум: "Основная";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];
ВнизСкролинг текста, отображаемого в PaintBox Найти похожие ветки
← →
STARfish © (2004-08-11 16:07) [0]Никак не могу реализовать скролинг текста, который я вывожу в PaintBox из текстового файла.
← →
MacroDenS © (2004-08-11 16:08) [1]а ты через скролбокс попробуй...
← →
Ega23 © (2004-08-11 16:08) [2]TPaintBox - конечно-же самый удачный компонент для вывода текста с последующем скроллингом...
← →
MacroDenS © (2004-08-11 16:14) [3]to Ega23
не, конечно же не самый лучший, лучший-то прям на канве формы... :-))))))))))
← →
KSergey © (2004-08-11 16:18) [4]По дельфийским понятиям надо PaintBox на скролбокс класть...
Ну либо просто организовывать самостоятельные скроллеры (ScrollBar) и самостоятельно обрабатывать их позицию и смещение ползунков... Ой, скучно это...
← →
Рамиль © (2004-08-11 16:20) [5]
> По дельфийским понятиям надо PaintBox на скролбокс класть...
Вот потом если туда пару мегов текста натолкать... :)
← →
Мастер © (2004-08-11 16:32) [6]>Ega23 © (11.08.04 16:08) [2]
TPaintBox - конечно-же самый удачный компонент для вывода текста с последующем скроллингом...
Ну, вообще-то, не самое плохое решение.
> Рамиль © (11.08.04 16:20) [5]
Вот потом если туда пару мегов текста натолкать... :)
Хоть 10 Мб. Смотря как реализуешь.
← →
Ega23 © (2004-08-11 16:34) [7]Ну, вообще-то, не самое плохое решение.
Лучше, конечно, чем TButton или TCheckBox, не спорю.
← →
Мастер © (2004-08-11 16:50) [8]>STARfish © (11.08.04 16:07)
Схема примерно такая.
На форме TPaintBox и TScrollBox(вертикальный).
1. Все выводимые строки ты должен запомнить как объекты/структуры, в которых будут либо храниться координаты выводимой строки из структуры, либо каждый раз при выводе в TPaintBox пересчитыватть позиции всех строк (в OnPaint).
2. Максимальное значение скроллера - рассчитанная x-координата последней строки.
3. Для вывода в OnPaint используется текущее значение скроллера.
По этому значению вычисляется объект, координаты которого попадают в клиентскую область TPaintBox.
Но задача эта не слишком тривиальная, я бы сказал...
← →
Мастер © (2004-08-11 16:52) [9]Кстати, скроллер ты можешь создавать и динамически, либо присвоив созданному в Run-Time значение Visible := True для вывода текста, который полностью помещается в клиентскую область PaintBox.
PS. На затравку еще одна не тривиальная задача - правильно сделать перенос текста.
← →
KSergey © (2004-08-11 16:56) [10]> [8] Мастер © (11.08.04 16:50)
Все это не надо
Достаточно TCanvas.ClipRect
← →
jack128 © (2004-08-11 17:03) [11]
> STARfish ©
а ты в своих программах TMemo используешь?
← →
KSergey © (2004-08-11 17:06) [12]> TMemo
Это для ламеров!
← →
Мастер © (2004-08-11 17:17) [13]>KSergey © (11.08.04 16:56) [10]
Достаточно TCanvas.ClipRect
Поясни.
← →
Мастер © (2004-08-11 17:19) [14]>KSergey © (11.08.04 17:06) [12]
> TMemo
Это для ламеров!
Не надо так бросаться словами.
← →
KSergey © (2004-08-11 18:43) [15]> [14] Мастер © (11.08.04 17:19)
> Не надо так бросаться словами.
Да ладно, ну пропустил смайлик - неужели не понятно? ;)
> [13] Мастер © (11.08.04 17:17)
> >KSergey © (11.08.04 16:56) [10]
> Достаточно TCanvas.ClipRect
> Поясни.
Ну я к тому, что там уже содержится информация о том, какую часть необходимо перерисовать. Т.е. не всегда (особенно, если лежим на ScrollBox"е) выяснять положение скроллеров и т.д.
Впрочем, возможно до конца не вник.
← →
STARfish © (2004-08-12 11:27) [16]Я бы с удовольствием использовал более подходящие средства для вывода и работы с текстом, но задача стоит именно использовать
паинтбокс...и скролл походу придется тоже вручную реализовывать...но я еще не понял как...
← →
KSergey © (2004-08-12 12:15) [17]Чета на курсовик какой-то больше похоже....
← →
jack128 © (2004-08-12 12:22) [18]
> Чета на курсовик какой-то больше похоже....
Хе... Вообще похоже, но позновато как то..Уж август на дворе
> ...и скролл походу придется тоже вручную реализовывать...
это обязательное условие?
Если да:
Заводишь переменную FBaseTop: Integer; Первоначально она равна нулю. И изменяешь эту переменную при в OnChange скролбага и перерисовываешь текст на пайнтбоксе отнасительно FBaseTop - все элементарно
← →
KSergey © (2004-08-12 12:34) [19]> [18] jack128 © (12.08.04 12:22)
> Заводишь переменную FBaseTop: Integer; Первоначально она
> равна нулю.
Чета мне так не нравится... ну и читать всегда позицию ScrollBox, тем более, что она изначально может бить не в 0
← →
jack128 © (2004-08-12 12:38) [20]
> ScrollBox
ScrollBAR.
C остальным согласен.
← →
KSergey © (2004-08-12 13:08) [21]> [20] jack128 © (12.08.04 12:38)
Да, конечно
← →
GrayFace © (2004-08-12 13:52) [22]Можно Edit скрыто юзать. Залить весь текст в Edit подходящего размера и много раз послать EM_POSFROMCHAR. Если размер мал, то должно нормально работать.
MacroDenS © (11.08.04 16:14) [3]
> не, конечно же не самый лучший, лучший-то прям на
> канве формы... :-))))))))))
Лучше на канве Desktop"а. А если серьезно, то канва формы, ИМХО, лучше канвы TPaintBox"а.
← →
STARfish © (2004-08-12 14:31) [23]В принципе задача такая, что нада постросный скроллинг текста паинтбокса... Я попробую с скроллбоксом, но вот интересно можно ли скрыть скроллбокс так, чтобы паинт был виден и и скролл у скроллбокса обрабатывался?...своего рода фэйк...
← →
KSergey © (2004-08-12 16:04) [24]> [23] STARfish © (12.08.04 14:31)
> можно ли скрыть скроллбокс
Что значит скрыть?
Вы при выполнении программы видите PaintBox??? Завидую...
← →
STARfish © (2004-08-13 15:11) [25]Имеется ввиду то, что обрабатывать прокрутку содержимого скроллбокса по нажатию кнопок клавы, но не отображать саму полосу прокрутки на форме...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.039 c