Главная страница
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.041 c
1-1084527897
Korefey
2004-05-14 13:44
2004.05.30
SQL объединение столбцов.


14-1083786902
Thor
2004-05-05 23:55
2004.05.30
Random и его аналоги.


3-1083930785
Внук
2004-05-07 15:53
2004.05.30
ODBC и хранимые функции


3-1083848678
Негодов
2004-05-06 17:04
2004.05.30
DBGrid


14-1084386179
lak
2004-05-12 22:22
2004.05.30
задача