Я использую Delphi 2010 с ReportBuilder 10.04 и имею очень простой отчет с 1 лентой деталей, содержащей 2 компонента TppDBText (один с жирным шрифтом, а другой - нежирный). Оба печатают в отчете по указанным позициям, определенным во время разработки, как и ожидалось. То, что мне нужно сделать, - это переместить элемент управления вправо как можно ближе к концу текста другого элемента управления (который содержит различные длины текста). Любые идеи о том, как достичь этого?Элементы управления позиционированием отчетов в Runtime
ответ
Во-первых, чтобы этот пример работал, установите для свойства «Единицы» TppReport значение «utScreenUnits».
В качестве примера я использую поля City и State, а мой набор данных называется tblCustomers.
В собственности BeforePrint в DetailBand добавим следующий код:
// ppCity is a tppDBText report control
// ppState is a tppDBText report control
ppCity.Width := length(tblCustomersCity.asstring) * 10; //adjust 10 based on font size
ppState.left := ppCity.Left + ppCity.Width + 10; // adjust 10 based on font size
Вы также можете сделать это с помощью вычисляемых полей, но поскольку ваш первый контроль полужирный и ваш второй элемент управления не жирный, выше должно хватить.
Чтобы использовать вычисляемое поле, просто объединить город и государство в одно вычисляемое поле под названием «CityState», и в OnCalcs набора данных необходимо выполнить следующие действия:
tblCustomerCityState.asstring := tblCustomersCity.asstring +' '+tblCustomersState.asstring;
Просто обратите внимание, что это приближение, поэтому используйте достаточно большой множитель (* в этом примере это 10 *). Это лучше всего сочетается с моноширинными шрифтами. – rgoliveira
Вы пробовали настройки 'AfterPrint' событие компонента слева? Возможно, его ширина будет установлена соответственно тексту, который он получил, а затем вы можете правильно позиционировать компонент справа. – rgoliveira
Да, я пробовал, но это не сработало. Для первого элемента управления все ширины были установлены одинаковыми. – PDM
Да, вот что я подумал. Я пробовал это несколько раз, но так и не понял. Для вертикального позиционирования есть «ShiftRelativeTo», но ничего похожего на горизонтальное позиционирование. Возможно, используйте элемент управления Rich Text и отформатируйте его после установки текста? – rgoliveira