Перенос полей

отредактировано 01:18 Раздел: FastReport 3.0
Здраствуйте!
Возник вопрос по работе с ФР.
К примеру у меня есть набор данных (таблица), состоящая из произвольного количества полей, допустим их 8. При выводе данных в отчет, разумеется все поля не помещаются на странице. Вручную заполнил отчет по событию BeforePrint через TfrxCrossView. Все прекрасно работает, разбивается на страницы, как в примере Demos\PrintTable\ ... пример:
поле1----поле2----поле3----поле4----поле5
текст----текст----текст---- текст----текст
текст----текст----текст---- текст----текст
текст----текст----текст---- текст----текст
текст----текст----текст---- текст----текст
--- стр 1

поле6----поле7----поле8
текст----текст----текст
текст----текст----текст
текст----текст----текст
текст----текст----текст
--- стр 2

Теперь возникла такая задача....
нужно перенести на другую страницу определенные поля, которые уже были выведены на первой предыдущей странице и недостающие поля, которые не уместились на этой странице
Объяснил может не по русски... вот пример:
поле1----поле2----поле3----поле4----поле5
текст----текст----текст---- текст----текст
текст----текст----текст---- текст----текст
текст----текст----текст---- текст----текст
текст----текст----текст---- текст----текст
--- стр 1

поле1----поле2----поле6----поле7----поле8
текст----текст----текст----текст----текст
текст----текст----текст----текст----текст
текст----текст----текст----текст----текст
текст----текст----текст----текст----текст
--- стр 2

Воть..... то есть поля 1 и 2 должны продублироваться в другую страничку (к примеру это порядковый номер и фамилия человека).

Кто нибудь сталкивался с таким вопросом?

Комментарии

  • отредактировано 01:18
    Самый простой способ (при зтом необходимо знать столбец с которого периносится таблица ;) ) для примера из демки:
    procedure TForm1.frxReport1BeforePrint(c: TfrxReportComponent);
    var
      Cross: TfrxCrossView;
      i, j: Integer;
    begin
      if c is TfrxCrossView then
      begin
        Cross := TfrxCrossView(c);
    
        Table1.First;
        i := 0;
        while not Table1.Eof do
        begin
          for j := 0 to Table1.Fields.Count - 1 do
          begin
          if j = 7 then
            Cross.AddValue([i], ['CutsNo']{если здесь ввести что-то вроде [Table1.Fields[7].AsString], то новый столбец не создастся и 2-ва поля выведутся в один столбец}
    , [Table1.Fields[0].AsString]);
            Cross.AddValue([i], [Table1.Fields[j].DisplayLabel], [Table1.Fields[j].AsString]);
    	end;
          Table1.Next;
          Inc(i);
        end;
      end;
    end;
    

    Так, что придётся писать название столбца ручками. ;)
  • отредактировано 01:18
    -=Den=-, спасибо!
    Реально помог. Конечно не удобный способ, но хоть что-то....
    хотя, думаю придется вообще отказаться от ручного заполнения... Так как столкнулся с дикими тормозами.... вот тут описал пробелему , но похоже с таким никто не сталкивался, а разработчики молчат....
    жаль...

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

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