Изменение высоты TfrxMasterData

отредактировано 04:06 Раздел: FastReport 3.0
Доброго времени суток. У меня вопрос такой:
Необходимо построить отчёт, в котором слева идут контрагенты, справа суммы, а по цнетру обороты с этим контрагентом. Для формирования этого отчёта использую событие 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;

...

Что я делаю не так?

Комментарии

  • отредактировано 04:06
    Всё, разобрался...

    ...
    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;
    ...

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.