GropHeader

TroffTroff г. Воронеж
отредактировано 08:02 Раздел: FastReport 3.0
Помогите, пожалуйста!
Сроки по сдаче программы поджимают!!!
Как мне внести данные из GroupHeader в ColumnHeader?
Более подробно:
данные группируются по одному из полей запроса;
и мне нужно чтобы значение этого поля было в шапке каждой колонки, если данные не помещаются в одной колонке. (Когда помещаются вопросов нет - ColumnHeader - отпадает сам собой). При прямом присвоении в BeforePrint(ColumnHeader) из GroupHeader(Visible = false) Memo в котором сидит значение этого поля получается каша - не поддающаяся, по крайней мере моей логике. Заранее благодарен. ПОМОГИТЕ!

Комментарии

  • gpigpi
    отредактировано January 2007
    GroupHeader1 сделайте видимым с высотой=0, в мемо на ColumnHeader выводите значение переменной a
    В скрипте отчёта
    var a : string;
    procedure GroupHeader1OnBeforePrint(Sender: TfrxComponent);
    begin
         a:=<DataSet."Field">;
    end;
    
    begin
         a:='';
    end.
    
  • TroffTroff г. Воронеж
    отредактировано 08:02
    Спасибо, за участие, но у меня проблема состоит в том,
    что при GroupFooter.OnAfterPrint -> Engine.NewColumn
    получается во 2-ой колонке в ColumnHeader повторение значения
    первого поля(как в первой колонке), а данные по значению
    второго поля группировки и дальше такая сдвижка по всем
    колонкам/страницам, т.е. адекватна только первая колонка
    первой страницы!!!
    Кстати, если сделать GroupHeader.OnBeforePrint -> Engine.NewColumn
    все нормально начиная со второй колонки первой страницы!
    Но первая колонка первой страницы содержит только шапку со первым
    значением группировки без MasterDatа. Помогите разобраться.
    Нелогичные непонятки какие-то просто ;) ((
  • gpigpi
    отредактировано 08:02
    Тогда попробуйте так:
    procedure GroupFooter1OnAfterPrint(Sender: TfrxComponent);
    begin
         MasterData1.DataSet.Next;
         Engine.NewColumn;
         MasterData1.DataSet.Prior;
    end;
    
    procedure ReportTitle1OnBeforePrint(Sender: TfrxComponent);
    begin
         MasterData1.DataSet.First;
    end;
    
    или так:
    var StartNewColumn :boolean;
    procedure ReportTitle1OnBeforePrint(Sender: TfrxComponent);
    begin
         StartNewColumn:=False;
         MasterData1.DataSet.First;
    end;
    
    procedure GroupHeader1OnBeforePrint(Sender: TfrxComponent);
    begin
        if StartNewColumn then Engine.NewColumn;
        StartNewColumn:=true;
    end;
    
  • TroffTroff г. Воронеж
    отредактировано 08:02
    Ура, заработало!
    ОГРОМНОЕ тебе спасибо GPI!!! И мой тебе респект! ;)

    P.S Второй способ поэлегантнее будет и время поменьше ...

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

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