Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Скролинг текста, отображаемого в PaintBox [D6, Win2k]


Страницы:   1 2

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 Мб. Смотря как реализуешь.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо