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

Вниз

Скролинг текста, отображаемого в 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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.024 c
8-1086686980
Orion2
2004-06-08 13:29
2004.08.29
Создание тени под текстом


14-1092301818
ISP
2004-08-12 13:10
2004.08.29
О банках.


1-1092205940
Никита
2004-08-11 10:32
2004.08.29
Многозадачное приложение


4-1089647238
DarkLord
2004-07-12 19:47
2004.08.29
Послать текст в скрытое консольное приложение


9-1084289550
AlexRus
2004-05-11 19:32
2004.08.29
Проблема с ориентацией объекта в трехмерном пространстве