Новая строка внутри строки будет показана на TMemoBox - PullRequest
6 голосов
/ 22 декабря 2010

Я создаю String с именем FullMemo, который будет отображаться как TMemoBox, но проблема в том, что я пытаюсь сделать переводы строки следующим образом:

FullMemo := txtFistMemo.Text + '\n' + txtDetails.Text

То, что я получил, это содержимое txtFirstMemo символа \n, не перевод строки и содержимое txtDetails.Что я должен сделать, чтобы заставить работать новую строку?

Ответы [ 5 ]

23 голосов
/ 22 декабря 2010

Решение состоит в том, чтобы использовать # 13 # 10 или лучше, как предложил Sertac sLineBreak .

FullMemo := txtFistMemo.Text + #13#10 + txtDetails.Text;
FullMemo := txtFistMemo.Text + sLineBreak + txtDetails.Text;
4 голосов
/ 22 декабря 2010

Более независимым от платформы решением будет TStringList.

var
  Strings: TStrings;
begin
  Strings := TStringList.Create;
  try
    Strings.Assign(txtFirstMemo.Lines); // Assuming you use a TMemo
    Strings.AddStrings(txtDetails.Lines);
    FullMemo := Strings.Text;
  finally
    Strings.Free;
  end;
end;

Чтобы добавить пустую новую строку, вы можете использовать:

Strings.Add('');
3 голосов
/ 22 декабря 2010

Использование

FullMemo := txtFistMemo.Text + #13#10 + txtDetails.Text
1 голос
/ 22 декабря 2010

Вы не создаете новые строки, как это, вы используете символ # 13:

FullMemo := txtFistMemo.Text + #13 + txtDetails.Text
    + Chr(13) + 'some more text'#13.

# 13 - это CR, # 10 - это LF, иногда достаточно просто использовать CR, иногда (при написании текстанапример, файлы) используйте # 13 # 10.

0 голосов
/ 02 января 2011

Вы можете объявить что-то вроде этого:

const 
 CRLF = #13#10;
 LBRK = CRLF+ CRLF;

в общем блоке и использовать его во всех своих программах.Это будет действительно удобно.

...