28.05.2020, 10:03 | #1 |
Участник
|
Изменение в отчёте размера шрифта, высоты и ширины поля в зависимости от длины строки в поле.
Здравствуйте.
Axapta 3.0. Отчёт (аксаптовский) Report. Есть поле в отчёте типа String. Строка в поле может быть разной длины, например в диапазоне от 7 до 11 символов. В зависимости от количества символов нужно менять размер шрифта и размеры поля. Как поменять значения данных свойств, проблемы нет. Проблема как корректно рассчитать исходя из размера шрифта дельту изменения ширины и высоты поля? Или может, есть метод (свойство) где можно 'отловить' вписалась ли строка текущей длины в поле с определённым шрифтом и размерами? |
|
28.05.2020, 13:44 | #2 |
Участник
|
Не совсем точный ответ на ваш вопрос, но вот таким способом можно сделать, чтобы в отчете динамически все поля имели одинаковую высоту, и при этом весь текст отображался. Т.е. этот метод перебирает все поля в секции, и вычисляет для каждого поля высоту по его содержимому. Берет максимальную высоту и устанавливает ее для всех полей в секции.
Этот метод надо добавить на нужную секцию отчета. X++: public void executeSection() { ReportControl rc; int i; int height; int h; ; for (i=1;i<=this.controlCount();i++) { rc = this.controlNo(i); if (rc) { height = Address_Address.heightOfWordWrappedString100mm("Моя строка, для которой надо измерить высоту"); h = max(h, height); } } this.height100mm(h); for (i=1;i<=this.controlCount();i++) { rc = this.controlNo(i); if (rc) { rc.height100mm(h); } } super(); }
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/ |
|
29.05.2020, 11:06 | #3 |
Мрачный тип
|
Проблема вписываемости текстовки в поле отчета таким способами, как аптоподбор ширины и размера шрифтов в поле, не решается. Ширина поля и размер шрифта, как правило, фиксируются в дизайне отчета и далее не трогаются, а игрища контрольно-расчетные идут только в части высоты. Полю активируется свойство автоподбора высоты и в зависимости от определенных в дизайне отчета размера шрифта и ширины поля по переданному текстовому значению системой автоматически рассчитывается кол-во переносов и изменение вертикального размера поля и, при необходимости, секции отчета, где это поле живет. Остается лишь при генерации секции проверить, вписывается ли генерируемая сейчас секция в размеры страницы с учетом уже попавших ранее на эту страницу сформируванных секций.
Хотя если есть желание за систему поработать - флаг в руки
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|