Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.09.04;
Скачать: [xml.tar.bz2];

Вниз

Высота QRBand и QRShape.   Найти похожие ветки 

 
DiLLeR   (2003-08-12 13:41) [0]

Здравствуйте!!! ... Помогите пожалуйста. Сталкиваюсь с проблемой уже не в первый раз, всегда как - то решалось, но вот щас уж совсем криво получается. Вопрос по QReport. Есть DetailBand, на нем лежит QRMemo которая вытягивается вниз по тексту ... под QRMemo лежит QRShape, и являет собой прямоугольник. Выглядеть должно как таблица с вписанными в ячейки текстом. Проблема в том что когда мемка вытягивается сильно, нужно бы по высоте DetailBand растянуть и QRShape, но сам он этого не умеет, а руками расчитывать высоту текста в мемке получается кривовато. Подскажите как решаете подобную задачу???

З.Ы. QRMemo юзается потому, что в БД лежит блоб который обрабатывается специальными функциями для получения текста (сложные структуры данных).


 
stud   (2003-08-12 15:52) [1]

если получится - скинь на мыло))
я с этим намучился, на экране нормальная таблица - а на принтере не понятно что! руками растягиваеш shape на нужную высоту/ширину.
но почему-то при добавлении своих обработчиков начинаются неприятные глюки


 
DiLLeR   (2003-08-12 16:41) [2]

Неужели никто не сталкивался с проблемой!?!?!???


 
Reindeer Moss Eater   (2003-08-12 16:44) [3]

А где проблема-то?


 
DiLLeR   (2003-08-12 16:52) [4]

Reindeer Moss Eater
Высоту секции узнать и корректно растянуть шейп ...


 
Reindeer Moss Eater   (2003-08-12 16:54) [5]

Есть такое свойство Height. Для записи и чтения.


 
stud   (2003-08-12 16:55) [6]

в обработчике onprint расчитываеш высоту компанента и полученное значение присваиваеш
shape.height:=значение
и все


 
Johnmen   (2003-08-12 17:00) [7]

Сталкивались... Причем stud © должен знать, как, поскольку уже спрашивал...:)
Общая идея - самому вычислять высоту мемо. И на этих данных - высоту бенда и всего остального, что нужно.
Вычисление высоты мемо сводится к получению высоты одной строки, с учетом текущего шрифта, и определении межстрочного интервала.
И умножении полученного значения на количество строк мемо.


 
DiLLeR   (2003-08-12 17:01) [8]

Про Height - Я знаю ... вопрос в том как корректно расчитать это значение ... в рантайме размер DetailBand - не меняется даже если он на самом деле увеличился. DetailBand - не содержит OnPrint, нужные значения находятся в QRMemo - которое не имеет вообще событий ....


 
DiLLeR   (2003-08-12 17:02) [9]

Получение количество строк - это хороший вопрос .. строка там одна ... она WordWrap!!! .... В том то все и дело ... %(((


 
Reindeer Moss Eater   (2003-08-12 17:03) [10]

Про Height - Я знаю ... вопрос в том как корректно расчитать это значение ... в рантайме размер DetailBand - не меняется даже если он на самом деле увеличился. DetailBand - не содержит OnPrint, нужные значения находятся в QRMemo - которое не имеет вообще событий ....

А я и не говорил про DetailBand.Height


 
stud   (2003-08-12 17:04) [11]

в общем я от этого отказался. если максимальная и минимальная высота известны, то просто делаеш шейп заранее большего размера.
подбираеш его так, чтобы не оставались от него куски при печати


 
Reindeer Moss Eater   (2003-08-12 17:07) [12]

Получение количество строк - это хороший вопрос .. строка там одна ... она WordWrap!!! .... В том то все и дело ... %(((

Это Lines.Count одна, а видимых строк больше одной.


 
stud   (2003-08-12 17:07) [13]

примерно расчитать можно так: получаеш ширину текста в пикселах, делиш ее на ширину мемо, получаеш большее целое, умножаеш его на высоту одной строки. это и будет высота твоего шейпа


 
stud   (2003-08-12 17:08) [14]

но тут есть проблема, сам компанент перености строки не равной длины и твое значение может оказаться меньше реального


 
Johnmen   (2003-08-12 17:09) [15]

1. Событие BeforePrint тебе надо.

>...строка там одна ... она WordWrap!!!

Не строка WordWrap, а свойство QRMemo !
Строк столько, сколько видишь...


 
DiLLeR   (2003-08-12 17:14) [16]

stud - Да!!! .. в том то все и дело .... что Wrap переносит как он думает - Я так и сделал расчетом количества строк из строки .... но получается иногда очень криво ... %(((

Johnmen - Скажи Мне как узнать сколько строк Я вижу ??? ... Программно ...


 
Reindeer Moss Eater   (2003-08-12 17:19) [17]

Скажи Мне как узнать сколько строк Я вижу ???
В кладовке "Определение позиции каретки в мемо"


 
DiLLeR   (2003-08-12 17:27) [18]

Reindeer Moss Eater - Да спасибо ... Думаю это отчасти поможет ... но это все равно коссвенное вычисление высоты ... А как - то можно определить более точно???


 
stud   (2003-08-12 17:28) [19]

и есть еще одно не хорошее св-во, почему-то высота шейпа для всех нарисованных равна величине последнего значения. т.е. если последний элемент был ниже остальных, то получаются пробелы в таблице


 
DiLLeR   (2003-08-12 17:35) [20]

stud - да это Я уже заметил ... Я начальную высоту шейпа сохраняю %))


 
DiLLeR   (2003-08-12 18:38) [21]

... так что ... неужели нет других способов ... потому как вышеперечисленные варианты кривоваты, иногда почему - то получается что мемо и шейп вроде как правильного размера, но вот следущий банд начинается все равно через некотрое расстояние .... какой - то промежуток все равно откуда - то берется ... %((


 
stud   (2003-08-13 09:27) [22]

у тебя размер шейпов при печати сильно отличается?


 
DiLLeR   (2003-08-13 13:09) [23]

Иногда - да .... + иногда проскакивает непонятно откуда промежутки ... это видать Band растягивается некорректно ....


 
stud   (2003-08-13 13:12) [24]

как вариант я уже писал выше, делаеш шейп заведомо больший чем высота банда, подбираеш размер так, чтобы он вы вылезал куда не надо при печати, правла если очень высокий банд будет, тогда все равно пробелы будут. но если у тебя банд имеет высоту в одну сторочку например, то можеш сделать шейп на высоту 3-4 строки. не выход, но всетаки....


 
DiLLeR   (2003-08-13 13:21) [25]

Понятно ... %(( ... блин .... неужели нет нормального решения ...


 
stud   (2003-08-13 13:24) [26]

я не нашел, даже на канве рисовал полосы нужной высоты, но на экране все отлично, а при печати непонятно что начинается.
правла если сначала сохранить отчет, а потом его отпечатать то вроде как все нормально....


 
DiLLeR   (2003-08-14 00:56) [27]

Определение позиции каретки в QRMemo не работает ... по крайней мере у Меня че - то не получилось ....

LineNum:=QRMemo5.Perform(EM_LINEFROMCHAR, Length(QRMemo5.Lines.Text)-1, 0);
CharNum:=QRMemo5.Perform(EM_LINEINDEX, LineNum, 0);

... Или Я че - то не так делаю?? ... все время одиноковоые значеня ... единицы

Итак ... Мы опять в начале пути ;(( .... Как же все же достоверно узнать высоту QRBand???


 
stud   (2003-08-14 09:26) [28]

по моему никак)))) только вычисляя вручную


 
DiLLeR   (2003-08-14 16:08) [29]

... Очень нехорошее решение вопроса!!! .... Неужели проблема так и не имеет нормального решения???


 
Шёл мимо   (2003-08-14 21:48) [30]

2 DiLLeR (12.08.03 17:14) [16]
> Скажи Мне как узнать сколько строк Я вижу ??? ... Программно ...
RowCount:= memo.lines.count;


 
DiLLeR   (2003-08-14 22:27) [31]

Шёл мимо - ... Ты хоть вопрос то читал перед тем как отвечать ??? .... блин ... нет слов!!!



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

Форум: "Базы";
Текущий архив: 2003.09.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.01 c
6-10854
Label
2003-06-23 16:56
2003.09.04
Delphi и метод POST


1-10828
VIL
2003-08-25 12:24
2003.09.04
Caption активной страницы PageControl


14-10891
pasha_golub
2003-08-15 22:18
2003.09.04
И тут Остапа понесло...


7-10985
Некто2002
2003-06-24 15:23
2003.09.04
Как программно снять процесс?


3-10642
Lamer_of_Delphi
2003-08-12 12:06
2003.09.04
Поиск!!!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский