Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
6-1088591695
Lapsha
2004-06-30 14:34
2004.08.29
telnet


8-1086007873
Serov Pavel
2004-05-31 16:51
2004.08.29
работа с Audio CD


4-1089830351
Sliski Slimak
2004-07-14 22:39
2004.08.29
Модальная форма в DLL


4-1090235980
Deep8
2004-07-19 15:19
2004.08.29
RESET


14-1092215269
RustiK
2004-08-11 13:07
2004.08.29
StringGrid, DBGrid или просто Grid на WinAPI ...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский