Показать сообщение отдельно
Старый 17.01.2002, 14:01   #1  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 646 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Динамическая настройка размеров элементов отчета
Средства, предоставляемые Axapta, для автоматического изменения размеров элементов в зависимости от размеров печатной области достаточно убоги. По сути они являются калькой аналогичных средств для форм, но то, что было достаточно для представления объектов на экране, совершенно не удовлетворяет потребности, возникающие при создании печатных документов (Кроме того, мне по просту не удалось заставить работать Column Width в свойстве Width у Control).

Решить проблему можно, дописав код в метод executeSection для соответсвующей секции. В этом методе можно непосредственно указать ширину Control (только делать это следует перед super, т. к. super выводит секцию на печать, а после этого что-то менять уже безсмысленно).

Получить доступ к определенному Control, входящему в секцию, можно используя методы секции controlNo, controlName и control.
  • controlNo(int _number)
    Возвращает Control с указанным номером. О нумерации нигде ничего не сказано, но на практике Controls нумеруются сверху вниз в порядке их расположения в AOT.
  • controlName(str _name)
    Возвращает Control с указанным именем (так, как оно записано в поле Name у Control).
  • control(fieldId _p1 [, tableId _table=0] )
    Возвращает control, который базируется на поле указанным id. Если id таблицы не указано, будет взята таблица, указанная в свойстве Table у Control или (если не указано) в свойстве Table у SectionGroup, являющейся предком для текущей секции.

Для изменения ширины объекта можно использовать метод ReportControl:width100mm. В качестве параметра ему передается целое число - ширина Control без рамки в сотых долях миллиметра. Для того, чтобы задать ширину Control с рамкой используйте метод ReportControl::width100mmInclBorder.

Чтобы расчитать ширину Control бывает полезно знать ширину страницы, на которую выводится отчет. Для этого предназначен метод ReportRun::printerPageWidth. Он возвращает ширину страницы в сотых долях миллиметра. Вызывать его следует у объекта класса, представляющего собой печатаемый отчет (то есть у объекта element).
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me