Memo.text конкатенация строк

отредактировано 15:27 Раздел: FastReport 4.0
Добрый день.

FastReport 4.14. В событие OnBeforePrint объекта Memo1 добавляю код:

Memo1.Text := Memo1.Text + 'Some text';

В отчете выводится только Memo1.Text, прим этом если текст добавлять в начало строки:

Memo1.Text := 'Some text' + Memo1.Text;

то выводится полная строка, как и хотелось.

Подскажите, почему?

Комментарии

  • отредактировано March 2015
    Какой Height у Memo1?
    Если поставить Memo1.StretchMode = smActualHeight , то, скорее всего, будет работать нормально.
    Дело в том, что в Memo, чаще всего, в конце идёт символ разрыва строки (особенно в том случае, если редактировать его вручную)
  • отредактировано March 2015
    Nightmareterrible написал: »
    Какой Height у Memo1?
    Если поставить Memo1.StretchMode = smActualHeight , то, скорее всего, будет работать нормально.
    Дело в том, что в Memo, чаще всего, в конце идёт символ разрыва строки (особенно в том случае, если редактировать его вручную)

    Да, вы оказались правы, в таком случае текст вставляется в конец строки, после знака переноса.

    Решил использованием IIF, в тексте самого Memo, но эта реализация не нравится - код нечитабелен, нельзя вставить комментарии.

    Может быть подскажете элегантное решение для добавления текста в конец Memo.Text перед разрывом через событие OnBeforePrint (без использования дополнительных функций и удаления последнего символа)?

    Это поведение свойствами не регулируется?
  • отредактировано 15:27
    Да решений куча, какие только придумаешь. Всё зависит от воображения. Ну и от исходных данных и конечного результата.
    На вскидку пару:
    1) хранить первоначальный текст Memo1 в переменной внутри кода отчёта (перед begin поставить var). При onBeforePrint делать не Memo1.Text := Memo1.Text + что-нибудь, а делать Memo1.Text := что-то_1 + что-то_2;
    2) перед добавлением текста:
    if copy(Memo1.Text, length(Memo1.Text)-1, 2) = #13#10 then Memo1.Text :=  copy(Memo1.Text,1,length(Memo1.Text)-2)
    
    3) iif можно писать не в одну строку, а в несколько - должно сработать.
    4) вставить комментарии можно тем же iif - iif(false,'ТВОЙ КОММЕНТАРИЙ','')

    P.S. Опции такой нет. Это особенность FastReport. Символы #13#10 он добавляет сам всегда.
  • gpigpi
    отредактировано 15:27
    procedure Memo8OnAfterData(Sender: TfrxComponent);
    begin
         Memo8.Text := Trim(Value) + 'Some Text';  
    end;
    

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

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