Помогите советом

отредактировано 17:18 Раздел: FastReport 4.0
всем привет.
дело вот в чем:
в отчете печатается несколько сотрудников, информация о сотруднике выводится на полтора листа, получается что информация о следующем сотруднике должна выводиться с третьего листа, третьего - с пятого листа, ну и так далее ....
в MasterData есть такая штука как "Start New Page" , если я делаю "Start New Page " - true и информация выводится по двум сотрудникам, то отчет получается из 6 листов (отчет экспотрирую в Word) - два листа совершенно чистые.
Каким образом лучше это реализовать?

Комментарии

  • gpigpi
    отредактировано 17:18
    Выложите шаблон отчёта и готовый отчёт fp3
  • отредактировано 17:18
    шаблон выглядит следующим образом (см. ниже). Это то как он должен выглядеть на печати (вернее как необходимо было сделать). Просто получается что информация по одному сотрудинку нужно печатать на полтора листа, следующего сотрудника на следующих полтора листа.....

    gpi написал: »
    Выложите шаблон отчёта и готовый отчёт fp3
    Этот шаблон уже , к сожалению, потерян.
  • gpigpi
    отредактировано 17:18
    Если Вы хотите, чтобы информация по второму сотруднику выводилась на второй странице, то установите MasterData1.AllowSplit=True
  • отредактировано 17:18
    Как можно программно выставить данную опцию "Start New Page" ?
    Охота получать такой вывод отчета только при при выполнении некоторых условий.
  • отредактировано 17:18
    ....................
    var
      isNewPage : boolean;
    ....................
    if isNewPage then
      MasterData2.StartNewPage := True
    else
      MasterData2.StartNewPage = False;
    
    или
    ...........................
      MasterData2.StartNewPage := isNewPage;
    
  • отредактировано 17:18
    Marionka написал: »
    ....................
    var
      isNewPage : boolean;
    ....................
    if isNewPage then
      MasterData2.StartNewPage := True
    else
      MasterData2.StartNewPage = False;
    
    или
    ...........................
      MasterData2.StartNewPage := isNewPage;
    
    В клиентской программе будет кое-что проверяться и в зависимости от такой проверки мне нужно будет присвоить значение переменной isNewPage (выражаясь в терминах приведенного Марионкой кода).
    Как мне из своей программы передать необходимую информацию в скрипт? (чтоб там уже сделать нужное присвоение переменной isNewPage). Какие механизмы существуют для решения подобной задачи ?
  • отредактировано 17:18
    у компонента TfrxReport есть событие OnGetValue
    procedure TForm.frxReport1GetValue(const VarName: String;
      var Value: Variant);
    begin
      if AnsiUpperCase(VarName) = 'ISNEWPAGE' then
      begin
        // проверяем что нужно и присваиваем переменной Value значение, 
       //которое будет анализироваться в скрипте шаблона
        Value := True;
      end;
    

    в скрипте
    if <ISNEWPAGE> then
      MasterData2.StartNewPage := True
    else
      MasterData2.StartNewPage = False;
    

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

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