|  28.06.2013, 14:00 | #1 | 
| Участник | Откуда берется 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 | 
| Участник | 
			
			Странно, у меня в Ax 3.0 это работает нормально. Вы бы лучше отчёт (пример) выложили, чтобы конкретно посмотреть.
		 | 
|  | 
|  28.06.2013, 19:01 | #3 | 
| Участник | 
			
			Вот простенький пример, должен легко импортироваться в Ax3 ( с таким же успехом можно выводить SalesLine->Name, ситуации не изменит )
		 | 
|  | 
|  01.07.2013, 16:22 | #4 | 
| Участник | 
			
			Странно, аналогичный отчёт в Ax 3.0 работает правильно. Вот он:
		 | 
|  | 
|  02.07.2013, 12:49 | #5 | 
| Участник | 
			
			Я сократила строку в вашем проекте до 2 "слов", получила результат тот же, что и в моем примере: высота Box(и секции) раза в 3 выше высоты текстовой строки. То есть, как и в моем примере выше(см скриншот): когда текст короткий, строки несоразмерно высокие, а когда текст достигает нескольких строк, то Box уже корректно начинает увеличивать высоту, соразмерно тексту внутри). | 
|  | 
|  03.07.2013, 15:38 | #6 | 
| Участник | Цитата: 
		
			Сообщение от IKA
			   Я сократила строку в вашем проекте до 2 "слов", получила результат тот же, что и в моем примере: высота Box(и секции) раза в 3 выше высоты текстовой строки. То есть, как и в моем примере выше(см скриншот): когда текст короткий, строки несоразмерно высокие, а когда текст достигает нескольких строк, то Box уже корректно начинает увеличивать высоту, соразмерно тексту внутри). | 
|  | 
|  03.07.2013, 17:17 | #7 | 
| Участник | 
			
			добавьте к себев репорт такой экзекьют. В комментах принцип работы проиллюстрирован. Меряем длину, в зависимости от неё (типа 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 | 
| Участник | 
			
			Спасибо, интересно. Я описала постановку задачи и свое решение в параллельной ветке.  Вопрос Height=ColumnHeight как рассчитывается эта высота / от чего зависит(тк она очевидно не зависит от размера контролов внутри - см пример выше) остался открытым Последний раз редактировалось IKA; 03.07.2013 в 19:43. | 
|  | 
|  04.07.2013, 09:18 | #9 | 
| Участник | 
			
			Упс... не заметил.    | 
|  | 
|  04.07.2013, 11:08 | #10 | 
| Участник | 
			
			Возможно, Вас заинтересует WinApi функция getSystemMetrics или getTextMetrics.  С уважением, Дмитрий. Последний раз редактировалось DmitryK; 04.07.2013 в 12:12. | 
|  |