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