Попытка работать с Detail c ResizeText

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Попытка работать с Detail c ResizeText

Сообщение Андрей »

Попытался освоить сею технологию - весьма неудачно, причем сразу целый букет непоняток:
Сделал тестовый пример, где из 5 строк, 3-ья будет с длинным Text.
1. Не относится к Resize, а вообще к Text. Почему если я задаю высоту котнтрола Text такую же как у Detail, но если закрасить контроль, чтоб лучше видеть, то видно, что высота контрола меньше высоты строки ?
2. Включаю подгонку линий - часть узких линий 1 и 4 отрисовываются по высоте текстового контроля, разрывов нет, 2 и 5 с разрывом (см. вопрос 1).
3.Если длину текста сделать 3 строки, то добавляется еще одна проблема - внизу этой Detail добавляется еще приличный пустой блок, если длина текста 2 строки, то нет такого.

Вот мой примерчик - https://yadi.sk/d/g67n6Dwte4ZvG

релиз 9.1.11497
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Попытка работать с Detail c ResizeText

Сообщение kreator »

TestRpt.zip
(23.99 КБ) 138 скачиваний
Смотри Rpt1, подгонку включать не надо.
We are hard at work… for you. :)
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Попытка работать с Detail c ResizeText

Сообщение Андрей »

Спасибо огромадное !
Пришлось еще сыграть в детскую игру "Найди 10 различий" в результате чего пришел к выводу, что все это хозяйство работает, только если высота Detail и текстового контроля стоят в Default ! (=1000) Это так ? Для моего случая нормально, а если к примеру мне потребовался бы более широкий детайл ?
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Попытка работать с Detail c ResizeText

Сообщение kreator »

Андрей писал(а):Это так ?
Это так. Читай матчасть (он же хелп) :mrgreen: . Опять же руками можно реализовать какие-то хотелки. Например, для Вашего примера:

Код: Выделить всё

Loc:LineH = Report$?Tes:Name{PROP:LineHeight} * ( Report$?Tes:Name{Prop:LineCount} + 1 )
We are hard at work… for you. :)
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Попытка работать с Detail c ResizeText

Сообщение Андрей »

Покопался дальше и вижу, что есть еще ограничение ? А именно - нельзя сделать шрифт в текстовом контроле меньше основного шрифта детайла ?
Больше - можно, а меньше - появляются пробелы между вертикальными разделителями.
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Попытка работать с Detail c ResizeText

Сообщение kreator »

Какие такие пробелы? Где? По-моему нет никакой связи между шрифтами. Может влияет другой контрол?
We are hard at work… for you. :)
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Попытка работать с Detail c ResizeText

Сообщение Андрей »

А вот попробуйте в вашем примере поставить шрифт у TEXT маленьким например 7 и увидите их пробелы/разрывы
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Попытка работать с Detail c ResizeText

Сообщение kreator »

Поставил, и проблем не увидел. Где разрывы? Картинку покажите.
We are hard at work… for you. :)
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Попытка работать с Detail c ResizeText

Сообщение Андрей »

так вот же...
Вложения
2015-01-20_153044.jpg
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Попытка работать с Detail c ResizeText

Сообщение kreator »

Ну так я и говорю, что другое поле виновато. Если Вы ничего не меняли, то размер вертикальной линии:

Код: Выделить всё

Loc:LineH = Report$?Tes:Name{PROP:LineHeight} * ( Report$?Tes:Name{Prop:LineCount})
Report$?LINE_V_1{PROP:Height} = Loc:LineH 
А размер Detail'а может определеться полем TES:Summa. Видимо, это и происходит. Сделайте размер шрифта у TES:Summa таким же как у текстового поля, и будет счастье.
We are hard at work… for you. :)
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Попытка работать с Detail c ResizeText

Сообщение Андрей »

Сделайте размер шрифта у TES:Summa таким же как у текстового поля, и будет счастье.
Да или так, или подгонять размер вертикальных линий, например - Loc:LineH = (Report$?Tes:Name{PROP:LineHeight}+20) * Report$?Tes:Name{Prop:LineCount} - уже не видно разрывов
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Попытка работать с Detail c ResizeText

Сообщение Андрей »

Вот вроде как все уже и заработало, но тут обнаружилось такое "но"..
А именно - надо очень все сжато делать как по вертикали, так и по горизонтали. Ну с горизонталью ладно, можно выбрать шрифт сжатый (NARROW), а вот вертикаль то как сжать ? Большой получается межстрочный интервал в TEXT, нет наверно возможности уменьшать его ?
Придется наверно (с учетом того, что TEXT не больше 2-х строк по высоте), сделать 2 варианта Detail без TEXT - 1-но строчный и 2-х строчный...
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Попытка работать с Detail c ResizeText

Сообщение kreator »

А попробуй поставить для поля TEXT галку RTF. А в RTF можно отформатировать как хочешь. Я, правда, так не делал, не было задачи, но задумка классная.
А при переводе из TEXT в STRING можно воспользоваться свойствами prop:Line и prop:LineCount.
We are hard at work… for you. :)
Tim_111
Новичок
Сообщения: 5
Зарегистрирован: 03 Май 2011, 16:39
Откуда: Брянск
Контактная информация:

Попытка работать с Detail c ResizeText

Сообщение Tim_111 »

Если еще актуально, то могу рассказать. У меня именно так печатается сложная квитанция. Рукописный репорт с кучей всяких деталей с динамически изменяемой высотой. С межстрочным интервалом в тексте засада. Придется делать строку, выставить ей атрибут "Транспарент" и играться высотой. При этом отчет рисовать не в миллиметрах, а в 1/1000". И помнить, что деталь с вертикальной координатой -21 прилепится точно к предыдущей, а с координатой 0 - чуть ниже :-)
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Попытка работать с Detail c ResizeText

Сообщение Андрей »

В общем решил я остановиться на том, что будет 2 детайла с 1-м String и 2-мя String - в зависимости от длины текста. Пользователь по моей задумке смотрит, что получается в квитанции и для длинных наименований услуг, которые не влезают в одну строку, ставит некий знак, например "_", который является признаком переноса. Но смотрю, они ленятся и не проставляют этих признаков - получается некрасиво.
Как сделать авторазбитие текста на 2 строки ?

1 вариант. Попробовал выводить тестовый детайл с 0-й высотой, а в нем TEXT c соответствующей USE переменной, длина TEXT и фонт, такие же как у String. Через ?text{Prop:Line,1} и ?text{Prop:Line,2} узнаю, что надо поместить в 1-ю и 2-ю String соответственно.
Работает, но так как Text переносы не ставит и длинные слова переносятся целиком, получается неэкономично по длине.
Вопрос - можно ли как то в рантайме определять в репорте, что ФАКТИЧЕСКИ из длинного текста поместилось в STRING ? Имеется в виду, что USE переменная совпадает с длиной текста, но длина контроля не позволяет ему полностью им отображаться.

2 вариант - примитивный: использовать моноширинный шрифт, тогда просто делим строку пополам. Может ли кто поделиться ссылкой на узкий (condensed) моноширинный шрифт ? Давно где то нашел некий MonoCondensedCTT, но может есть еще более узкие... ?
Ответить