Изменение высоты TfrxMasterData
Доброго времени суток. У меня вопрос такой:
Необходимо построить отчёт, в котором слева идут контрагенты, справа суммы, а по цнетру обороты с этим контрагентом. Для формирования этого отчёта использую событие TfrxReport.OnManualBuild, но возникает проблемма, когда я указываю объекту TfrxMasterData на необходимость изменения ширины, ничего не происходит, т.е. код, описанный внизу не изменят высоту среднего MasterData-бэнда:
...
var
Band1, Band2: TfrxMasterData;
NewY, OldY : Extended;
begin
Band1 :=frxReport1.FindObject('MasterData1') as TfrxMasterData;
Band2 :=frxReport1.FindObject('MasterData3') as TfrxMasterData;
PrintCont.First;
while not PrintCont.Eof do
begin
OldY :=frxReport1.Engine.CurY;
PrintSch.First;
frxReport1.Engine.ShowBand(Band1);
NewY :=frxReport1.Engine.CurY;
frxReport1.Engine.CurY :=OldY;
while not PrintSch.Eof do
begin
Band2.Height :=(NewY-OldY)/PrintSch.RecordCount; -- не работает
frxReport1.Engine.ShowBand(Band2);
PrintSch.Next;
end;
frxReport1.Engine.CurY :=NewY;
PrintCont.Next;
end;
end;
...
Что я делаю не так?
Необходимо построить отчёт, в котором слева идут контрагенты, справа суммы, а по цнетру обороты с этим контрагентом. Для формирования этого отчёта использую событие TfrxReport.OnManualBuild, но возникает проблемма, когда я указываю объекту TfrxMasterData на необходимость изменения ширины, ничего не происходит, т.е. код, описанный внизу не изменят высоту среднего MasterData-бэнда:
...
var
Band1, Band2: TfrxMasterData;
NewY, OldY : Extended;
begin
Band1 :=frxReport1.FindObject('MasterData1') as TfrxMasterData;
Band2 :=frxReport1.FindObject('MasterData3') as TfrxMasterData;
PrintCont.First;
while not PrintCont.Eof do
begin
OldY :=frxReport1.Engine.CurY;
PrintSch.First;
frxReport1.Engine.ShowBand(Band1);
NewY :=frxReport1.Engine.CurY;
frxReport1.Engine.CurY :=OldY;
while not PrintSch.Eof do
begin
Band2.Height :=(NewY-OldY)/PrintSch.RecordCount; -- не работает
frxReport1.Engine.ShowBand(Band2);
PrintSch.Next;
end;
frxReport1.Engine.CurY :=NewY;
PrintCont.Next;
end;
end;
...
Что я делаю не так?
Комментарии
...
var
Band1, Band2: TfrxMasterData;
Band3 : TfrxReportSummary;
OldY, NewY : Extended;
begin
Band1 :=frxReport1.FindObject('MasterData1') as TfrxMasterData;
Band2 :=frxReport1.FindObject('MasterData3') as TfrxMasterData;
Band3 :=frxReport1.FindObject('ReportSummary1') as TfrxReportSummary;
PrintCont.First;
while not PrintCont.Eof do
begin
OldY :=frxReport1.Engine.CurY;
PrintSch.First;
frxReport1.Engine.ShowBand(Band1);
NewY :=frxReport1.Engine.CurY;
if NewY < OldY then
OldY :=0;
frxReport1.Engine.CurY :=OldY;
while not PrintSch.Eof do
begin
(frxReport1.FindObject('Memo73') as TfrxMemoView).Height :=(NewY-OldY)/PrintSch.RecordCount;
(frxReport1.FindObject('Memo74') as TfrxMemoView).Height :=(NewY-OldY)/PrintSch.RecordCount;
(frxReport1.FindObject('Memo75') as TfrxMemoView).Height :=(NewY-OldY)/PrintSch.RecordCount;
(frxReport1.FindObject('Memo70') as TfrxMemoView).Height :=(NewY-OldY)/PrintSch.RecordCount;
(frxReport1.FindObject('Memo71') as TfrxMemoView).Height :=(NewY-OldY)/PrintSch.RecordCount;
(frxReport1.FindObject('Memo72') as TfrxMemoView).Height :=(NewY-OldY)/PrintSch.RecordCount;
(frxReport1.FindObject('Memo81') as TfrxMemoView).Height :=(NewY-OldY)/PrintSch.RecordCount;
(frxReport1.FindObject('Memo80') as TfrxMemoView).Height :=(NewY-OldY)/PrintSch.RecordCount;
(frxReport1.FindObject('Memo78') as TfrxMemoView).Height :=(NewY-OldY)/PrintSch.RecordCount;
(frxReport1.FindObject('Memo79') as TfrxMemoView).Height :=(NewY-OldY)/PrintSch.RecordCount;
(frxReport1.FindObject('Memo77') as TfrxMemoView).Height :=(NewY-OldY)/PrintSch.RecordCount;
(frxReport1.FindObject('Memo76') as TfrxMemoView).Height :=(NewY-OldY)/PrintSch.RecordCount;
Band2.Height :=(NewY-OldY)/PrintSch.RecordCount;
frxReport1.Engine.ShowBand(Band2);
PrintSch.Next;
end;
frxReport1.Engine.CurY :=NewY;
PrintCont.Next;
end;
frxReport1.Engine.CurY :=frxReport1.Engine.CurY+10;
frxReport1.Engine.ShowBand(Band3);
end;
...