Fr 4.12: Ошибка переноса текста в Memo при изменении ориентации страницы

Stalker4Stalker4 123
отредактировано 13:08 Раздел: FastReport 4.0
Hi All,

см. в атаче пример с ошибкой.

Запускаем отчет.
Изначально страница в демке находится в ориентации poPortrait.
Жмем кнопку "poPortrait". Ориентация страницы фактически не меняется.
Текст в строке 3 не помещается в одну строку и переноситься на следующую.
Тут все нормально.

Теперь жмем кнопку "poLandScape". Меняется ориентация страницы.
Текст в строке 3 помещается в одну строку, но тем не менее строка почему то
увеличивает свою высоту.

То есть при смене ориентации страницы начинает глючить механизм
изменения высоты мемки.

А может это глючит механизм работы свойства Memo.Align.
Так как если у страницы в дизайнере установить ориентацию poLandScape,
запустить отчет и нажать кнопку "poPortrait", то исчезает третья
колонка.

Комментарии

  • gpigpi
    отредактировано 13:08
    В Delphi
    procedure TForm1.FormShow(Sender: TObject);
    begin
    frxReport1.AddFunction('function AlignChildren(Band: TfrxReportPage)');
    frxReport1.ShowReport;
    end;
    
    function TForm1.frxReport1UserFunction(const MethodName: String;
      var Params: Variant): Variant;
    begin
      if MethodName = 'ALIGNCHILDREN' then
        TfrxReportPage(Integer(Params[0])).AlignChildren;
    end;
    
    в скрипте
    procedure Button1OnClick(Sender: TfrxComponent);
    begin
     Page1.Orientation := poPortrait;
      AlignChildren(Page1);                                      
    end;
    
    procedure Button2OnClick(Sender: TfrxComponent);
    begin
      Page1.Orientation := poLandScape;
      AlignChildren(Page1);                                        
    end;
    
  • Stalker4Stalker4 123
    отредактировано 13:08
    gpi написал: »
    В Delphi
    procedure TForm1.FormShow(Sender: TObject);
    begin
    frxReport1.AddFunction('function AlignChildren(Band: TfrxReportPage)');
    frxReport1.ShowReport;
    end;
    
    Только не function, а procedure. А так все работает, спасибо за помощь.
    Но это ИМНО все равно баг FR. Напишу им это в тех. поддержку.
  • gpigpi
    отредактировано 13:08
    подправьте frxClass.pas
    procedure TfrxReportPage.SetOrientation(Value: TPrinterOrientation);
    var
      e, m1, m2, m3, m4: Extended;
    begin
      if FOrientation <> Value then
      begin
        e := FPaperWidth;
        FPaperWidth := FPaperHeight;
        FPaperHeight := e;
    
        m1 := FLeftMargin;
        m2 := FRightMargin;
        m3 := FTopMargin;
        m4 := FBottomMargin;
    
        if Value = poLandscape then
        begin
          FLeftMargin := m3;
          FRightMargin := m4;
          FTopMargin := m2;
          FBottomMargin := m1;
        end
        else
        begin
          FLeftMargin := m4;
          FRightMargin := m3;
          FTopMargin := m1;
          FBottomMargin := m2;
        end;
        UpdateDimensions;
      end;
    
      FOrientation := Value;
      AlignChildren;  //add this line
    end;
    

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

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