Главная страница
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.06 c
7-1082450495
ЛеонидП
2004-04-20 12:41
2004.05.30
Свой компьютер в сети


8-1072430595
undersun
2003-12-26 12:23
2004.05.30
DSPack.SampleGrabber не грабит с камеры


1-1084969973
Ruslan
2004-05-19 16:32
2004.05.30
А есть в Delphi функция задержки типа Delay?


14-1083836804
oflaund
2004-05-06 13:46
2004.05.30
Помогите решить задачу на pascal e


14-1084037763
TCrash
2004-05-08 21:36
2004.05.30
Плиз, очень нуна