Создание Header и Masterdata в скрипте

отредактировано 02:41 Раздел: FastReport 4.0
Добрый день.
Задача - вывод в отчет переменного количества таблиц (прайс-листов).
var
  L, T, H, W: Double;                       
    
  Header: TfrxHeader;
  MasterData: TfrxMasterData;
  Memo: TfrxMemoView;  
  QueryPriceItems: TfrxFIBQuery;                                 
  
begin

    // Формирование ReportTitle
    ... 

  // Формирование прайс-листов
  N := 1;                                 
  T := 5;                    
  while not QueryPrices.Eof do
  begin
    if (<QueryPrices."FORMULA_TYPE"> < 0) then
    begin
      Header := TfrxHeader.Create(Page1);
      Header.Top := T;                                          
      Header.Height := 1.3;
      Header.Visible := True;                                                        
      Memo := TfrxMemoView.Create(Header);
      Memo.SetBounds(0, 0.5, 3, 0.8);
      Memo.Text := 'Прайс-лист ' + IntToStr(<QueryPrices."PRICE">);
      Memo.Visible := True;
      QueryPriceItems := TfrxFIBQuery.Create(Data);
      QueryPriceItems.Name := 'Query' + IntToStr(N);
      QueryPriceItems.UserName := 'Query' + IntToStr(N);          
      QueryPriceItems.Database := DBMain;                                                                      
      QueryPriceItems.SQL.Text := 'select pd.distance_from, pd.distance_to, pd.tarif from tprice_distances pd where pd.price = :price order by 1,2';
      QueryPriceItems.ParamByName('PRICE').Value := <QueryPrices."PRICE">;
      QueryPriceItems.Open;                                
      MasterData := TfrxMasterData.Create(Page1);
      MasterData.Top := Header.Top + Header.Height + 0.1;                                                                
      MasterData.Height := 0.5;
      MasterData.Visible := True;          
      MasterData.DataSet := QueryPriceItems;          
      Memo := TfrxMemoView.Create(MasterData);
      Memo.SetBounds(0, 0, 3, 0.5);
      Memo.DataSet := QueryPriceItems;
      Memo.DataField := 'TARIF';
      Memo.Visible := True;          
      Memo.Text := '[' + 'Query' + IntToStr(N) + '."TARIF"]';
      T := T + 2;
      N := N + 1;                                     
    end;                
    QueryPrices.Next;
  end;                

end.

Данные в запросах есть (проверял). Header и MasterData судя по всему создаются (ошибок нет), но в отчете невидимы.

Комментарии

  • отредактировано 02:41
    Во-первых, Height := 1.3 * fr1cm - свойство Height = Extended, хранится не в виде пикселей или сантиметров, поэтому всегда используйте fr1cm или fr01cm.
    Во-вторых, попробуйте вместо Page1 написать frxReport1.FindObject('Page1') - именно Object, не Component.
  • отредактировано 02:41
    Спасибо за ответ.
    Насчет fr1cm - премного благодарен.
    Насчет FindObject - к сожалению, не сработало.

    Есть мысль, возможно вышеприведенный код формирования таблиц нужно вызвать в каком-то обработчике, например Page.OnBeforePrint?
  • отредактировано 02:41
    Все заработало, в предыдущий раз, оказывается, не везде проставил fr1cm
    Nightmareterrible - большое спасибо еще раз.

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

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