|
18.02.2010, 15:41 | #1 |
Участник
|
Как получить Label, использованный в текстовом поле отчета? (DAX 4)
ctrl.text() выдает мне сам текст, а нужно:
1. Либо получить сам Label (например, @SYS9999) 2. Либо получить текст в зависимости от использованного языка Речь идет об отчете PurchPurchaseOrder, хотя это не имеет значения. |
|
18.02.2010, 15:45 | #2 |
Участник
|
Так а разве у ReportControl нету свойства Label?
X++: ctrl.label()? |
|
18.02.2010, 16:08 | #3 |
Участник
|
в данном случае искомый текст прописан в свойство "Text" (ReportTextControl), а не "Label", поэтому я использовал ctrl.text().
Может быть есть и другое решение - суть проблемы в том, что мне необходимо знать длину использованного текста в свойстве "Text" при выполнении отчета. Можно, конечно, сделать "hard coding" и прописать label текста сразу в код: X++: ctrl.widthOfString100mm(element.design().lookupLabel(literalstr("@SYS48"))); |
|
18.02.2010, 16:39 | #4 |
Участник
|
А что мешает написать
X++: ctrl.widthOfString100mm(ctrl.Text()) |
|
18.02.2010, 17:35 | #5 |
Участник
|
Мешает то, что ctrl.text() по непонятным для меня причинам игнорирует актуальный язык отчета и выплевывает текст всегда в дефолтовом языке CompanyInfo.
А на распечатке отчета все выглядит шоколадно - все контролы и тексты в нужном языке. |
|
18.02.2010, 18:41 | #6 |
Участник
|
Ты получаешь ссылку на объект ReportTextControl через report.Design() или через reportRun.Design()? И, кстати, в какой момент происходит переключение актуального языка для отчета? До анализа содержимого объекта или после?
|
|
18.02.2010, 19:22 | #7 |
Участник
|
У контрола свойство "AutoDeclaration" включено на YES, поэтому ссылку на него я получаю прямиком через его имя (ctrl). Или я не правильно понял вопрос?
Переключение языка происходит в начале fetch()-метода, так что в момент анализа содержимого объекта (executeSection) сам отчет уже "говорит" на актуальном языке. Стрянно все это... |
|
19.02.2010, 11:10 | #8 |
Участник
|
Попробуй получить ссылку на объект программно. Примерно таким способом
X++: ReportTextControl ctrl; ; // В общем случае из любого метода отчета // Если имя уникально для всего отчета, то шаг определения секции можно опустить ctrl = element.design().sectionName('MySectionName').controlName("MyControlName"); // Внутри метода executeSection ctrl = this.controlName("MyControlName"); Последний раз редактировалось Владимир Максимов; 19.02.2010 в 11:12. |
|
19.02.2010, 18:34 | #9 |
Участник
|
Проверил оба способа, результат все тот же.
Видимо, нет пирожков с вермишелью |
|