выравнивание раздела Details по нижнему краю листа
Раздел: FastReport VCL
Delphi 10. Подскажите пожалуйста как выровнять табличку детализации по нижнему краю листа. Затем желательно скорректировать
границы выводимого изображения. В детализации может быть от одной до 5-8 строк. Изображения подгружаются в разделе Code на событие TfrxPictureView.OnBeforePrint.
Комментарии
День добрый. Переводим отчеты на Fast Report. Разумеется в процессе появляется куча небольших вопросов о реализации желаемого поведения. Оперативность ответов на задаваемые вопросы на форуме пока явно не впечатляют: как на русском, так и на англоязычном.
Странно, что за более, чем пол года разработчики не ответили на вполне типовую задачу.
Уточню задачу: есть два набора данных Мастер и Детализация. Требуется сформировать отчет, где на каждую запись основного набора данных выделяется целый лист, на который выводится несколько текстовых полей, а также несколько изображений. Второй набор (шапка + 1-8 строк данных) должен располагаться внизу листа в виде таблицы, выровненной по нижнему краю. В случае нескольких строк данных в детализации, возможно будет необходимо скорректировать положение картинок в панели TfrxMasterData.
Изображение загружается процедурами в скрипте Code
Как правильно средствами FastReoport управлять положением панели детализации и расположением картинок? Иначе то пара строк детализации вылезает на следующую страницу, то изображения вылетают из Мастер-панели.
Пишите в тикеты. Совсем не типовая.
var l: string;
procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
l := IntToStr(<Line>);
if not Engine.FinalPass then
begin
DetailData1.RowCount := Trunc(Random * 20);
Set('RowCount' + l, DetailData1.RowCount);
Set('Height' + l, 0);
end
else
DetailData1.RowCount := Get('RowCount' + l);
end;
procedure DetailData1OnAfterCalcHeight(Sender: TfrxComponent);
begin
if not Engine.FinalPass then
Set('Height' + l, Get('Height' + l) + DetailData1.Height);
end;
procedure MasterData1OnAfterPrint(Sender: TfrxComponent);
begin
if Engine.FinalPass then
Engine.CurY := Engine.CurY + Engine.FreeSpace - Get('Height' + l) - 0.0001;
end;