AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.06.2013, 14:00   #1  
IKA is offline
IKA
Участник
 
359 / 65 (3) ++++
Регистрация: 15.03.2006
Откуда берется Column Height у контролов отчета?
У контролов отчета(и форм) есть свойство высота и одно из возможных значений Column Height.
Неожиданно встал вопрос: как оно вычисляется?

В MSDN расплывчато написано "Column Height: The layout of the form determines the height of the control."

Я создала примитивный отчет:
источник: SalesTable,
в дизайне: поле SalesId + Shape:Box.
Высота секции Body->Auto, контрола SalesId >Auto, Shape:Box->Height->Column Height.

Открываю отчет и вижу, что высота секции приблизит в 2 раза выше высоты SalesId. Почему именно такая? Я правильно понимаю, что каким-то мистическим образом на основании всего layout отчета она вычисляется(судя по msdn). Как сделать так, чтобы высота секции и box выла равна высоте контрола SalesId, а не бралась с потолка? Мне это важно, тк в одном из отчетов есть контрол с DynamicHeight чтобы строки корректно отрисовывались, я ставлю Height=column Height у контролов и Shapes. Все здорово работает, но высота каждой секций почему-то где-то на символ больше, чем макс высота контролов.

Ax2009 RU2

Последний раз редактировалось IKA; 28.06.2013 в 14:35.
Старый 28.06.2013, 14:47   #2  
Ярослав Щекин is offline
Ярослав Щекин
Участник
 
78 / 174 (6) ++++++
Регистрация: 16.03.2009
Странно, у меня в Ax 3.0 это работает нормально. Вы бы лучше отчёт (пример) выложили, чтобы конкретно посмотреть.
Старый 28.06.2013, 19:01   #3  
IKA is offline
IKA
Участник
 
359 / 65 (3) ++++
Регистрация: 15.03.2006
Вот простенький пример, должен легко импортироваться в Ax3 ( с таким же успехом можно выводить SalesLine->Name, ситуации не изменит )
Миниатюры
Нажмите на изображение для увеличения
Название: TestDynHeightScreenshot.jpg
Просмотров: 400
Размер:	44.7 Кб
ID:	8307  
Вложения
Тип файла: xpo Report_Report_TestDynHeight.xpo (3.2 Кб, 410 просмотров)
Старый 01.07.2013, 16:22   #4  
Ярослав Щекин is offline
Ярослав Щекин
Участник
 
78 / 174 (6) ++++++
Регистрация: 16.03.2009
Цитата:
Сообщение от IKA Посмотреть сообщение
Вот простенький пример, должен легко импортироваться в Ax3 ( с таким же успехом можно выводить SalesLine->Name, ситуации не изменит )
Странно, аналогичный отчёт в Ax 3.0 работает правильно. Вот он:
Вложения
Тип файла: xpo ExpReport.xpo (8.9 Кб, 375 просмотров)
Старый 02.07.2013, 12:49   #5  
IKA is offline
IKA
Участник
 
359 / 65 (3) ++++
Регистрация: 15.03.2006
Я сократила строку в вашем проекте до 2 "слов", получила результат тот же, что и в моем примере: высота Box(и секции) раза в 3 выше высоты текстовой строки.

То есть, как и в моем примере выше(см скриншот):
когда текст короткий, строки несоразмерно высокие,
а когда текст достигает нескольких строк, то Box уже корректно начинает увеличивать высоту, соразмерно тексту внутри).
Изображения
 
Старый 03.07.2013, 15:38   #6  
Ярослав Щекин is offline
Ярослав Щекин
Участник
 
78 / 174 (6) ++++++
Регистрация: 16.03.2009
Цитата:
Сообщение от IKA Посмотреть сообщение
Я сократила строку в вашем проекте до 2 "слов", получила результат тот же, что и в моем примере: высота Box(и секции) раза в 3 выше высоты текстовой строки.

То есть, как и в моем примере выше(см скриншот):
когда текст короткий, строки несоразмерно высокие,
а когда текст достигает нескольких строк, то Box уже корректно начинает увеличивать высоту, соразмерно тексту внутри).
Да, действительно. Я поэкспериментировал в нашей Ax 3.0, вроде бы получается, что минимальная высота Control-а при установке "Column height" --- 10 mm.
Старый 03.07.2013, 17:17   #7  
Krasher is offline
Krasher
Участник
Аватар для Krasher
 
48 / 37 (2) +++
Регистрация: 14.05.2005
добавьте к себев репорт такой экзекьют. В комментах принцип работы проиллюстрирован. Меряем длину, в зависимости от неё (типа 80 символов длина одной строки. если больше - строки надо две...) ставим высоту. Ну схематично.
X++:
public void executeSection()
{
    ReportStringControl remarkControl;
    int                 strLenInt = 79; //= strlen(outTxt);
    int                 height;
    ;
//    if(strLenInt < 80) height = 400;
//    else if(strLenInt < 160) height = 800;
//    else if(strLenInt < 240) height = 1200;
//    else if(strLenInt < 320) height = 1400;
//    else height = 400;

    remarkControl  = this.controlNo(2);
    remarkControl.height100mm(height);

    super();
}
Старый 03.07.2013, 19:37   #8  
IKA is offline
IKA
Участник
 
359 / 65 (3) ++++
Регистрация: 15.03.2006
Спасибо, интересно. Я описала постановку задачи и свое решение в параллельной ветке.
Вопрос Height=ColumnHeight как рассчитывается эта высота / от чего зависит(тк она очевидно не зависит от размера контролов внутри - см пример выше) остался открытым

Последний раз редактировалось IKA; 03.07.2013 в 19:43.
Старый 04.07.2013, 09:18   #9  
Krasher is offline
Krasher
Участник
Аватар для Krasher
 
48 / 37 (2) +++
Регистрация: 14.05.2005
Упс... не заметил.
Старый 04.07.2013, 11:08   #10  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
Возможно, Вас заинтересует WinApi функция getSystemMetrics или getTextMetrics.
С уважением, Дмитрий.

Последний раз редактировалось DmitryK; 04.07.2013 в 12:12.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
ax-erp: Get screen width, height etc. in X++ code Blog bot DAX Blogs 0 20.06.2012 06:12
Как присвоить контролу отчета свойство "Column width" через X++? eugenet DAX: Программирование 5 04.03.2010 14:00
axaptapedia: Multi Column Blog bot DAX Blogs 0 05.02.2008 17:25
Журнал платежей поставщикам. Сальдо откуда-то берется. NJD DAX: Функционал 0 18.08.2005 17:24
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 04:05.