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

Вниз

Последовательное размещение динамического текста в лэйблах   Найти похожие ветки 

 
IrBisoff ©   (2004-05-14 22:43) [0]

Вот, сколько ни бьюсь, всё никак более-менее нормально не получается. =(

Вобщем, суть проблемы:

Задача: Существует n компонентов (созданных в design-time) а-ля Tlabel (не совсем, его аналог, но сути не меняет), существует текст, загружаемый из файла. Нужно распределить текст по лэйблам последовательно и впритык, при том, что лэйблы многострочные, в них уже есть перенос по словам и полосы прокрутки недопустимы. Под последовательным переносом имеется в виду нечто, аналоги чего можно видеть в PageMaker или в ворде (вёрстка книжкой), т.е., к примеру, первый фрагмент текста в первом лайбле, продолжение во втором, дальше в третьем и т.д.

Попытка реализации: Поставил фиксированные шрифты и в зависимости от размера лэйблов (ах да, они в ран-тайме могут менять свой размер =( ) подгоняю количество строк и символов в строке. Тормозит (хотя не думаю, что иная реализация тормозить будет меньше) и не подходит для не фиксированных шрифтов, что неприемлимо. =(

Что нужно (возможно, можно и меньшей кровью, но пока что вижу так): Узнать, на каком месте произошел перевод прошлой строки, либо, что ещё проще (в плане использования), узнать где именно (на каком фрагменте текста) заканчивается видимая область компоненты.

Вобщем, хэлп ! Проект застрял. =((((( Буду чрезвычайно благодарен даже за теоретическую помощь, а за пример реализации буду вечным должником. ;)


 
GuAV   (2004-05-15 00:04) [1]

Canvas.TextExtent


 
IrBisoff ©   (2004-05-15 02:16) [2]

Всё было бы так просто, если бы текст не подгружался в компоненту одной строкой. Но он подгружается именно так. Да и ещё один побочный фактор - Форматируется он уже внутри компоненты, т.е. текст выводится не тем шрифтом, что указан в font. =( В итоге, даже если всё выводить одним шрифтом TextExtent показывает высоту одной строки и ширину всего текста.

Короче говоря, я пока что создаю массив обычных TLabel"ов под каждый шрифт (получается до десятка в строку =( ), в каждый ложу ровно столько текста, сколько он может и должен поместить и ставлю их на форме впритык. Через анус, но хоть как-то. =\

ЗЫ: Может ещё какие-то варианты ?



Страницы: 1 вся ветка

Текущий архив: 2004.05.30;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.037 c
14-1083906842
Nickola2
2004-05-07 09:14
2004.05.30
С Днём Радио!


11-1074237028
<Falcon>
2004-01-16 10:10
2004.05.30
QueryEndSession и вход в систему под другим именем


3-1084296752
Alexei Sviridov
2004-05-11 21:32
2004.05.30
SQL-запрос


7-1082477705
tyoma
2004-04-20 20:15
2004.05.30
Поиск установленного ПО


14-1084300671
Vasya.ru
2004-05-11 22:37
2004.05.30
где взять 6ти знак?