Как включить символ новой строки в строку в Delphi? - PullRequest
85 голосов
/ 31 октября 2008

Я хочу создать строку, охватывающую несколько строк, для присвоения свойству подписи надписи. Как это делается в Delphi?

Ответы [ 11 ]

159 голосов
/ 01 ноября 2008

В System.pas (который автоматически используется) определяется следующее:

const
  sLineBreak = {$IFDEF LINUX} AnsiChar(#10) {$ENDIF} 
               {$IFDEF MSWINDOWS} AnsiString(#13#10) {$ENDIF};

Это из Delphi 2009 (обратите внимание на использование AnsiChar и AnsiString). (Добавлен перенос строки.)

Итак, если вы хотите сделать обертку TLabel, убедитесь, что для AutoSize установлено значение true, а затем используйте следующий код:

label1.Caption := 'Line one'+sLineBreak+'Line two';

Работает во всех версиях Delphi с момента появления sLineBreak, которым я считаю Delphi 6.

31 голосов
/ 31 октября 2008

Вот еще более короткий подход:

my_string := 'Hello,'#13#10' world!';
14 голосов
/ 31 октября 2008

my_string := 'Hello,' + #13#10 + 'world!';

#13#10 - десятичные знаки CR / LF

8 голосов
/ 31 октября 2008

Или вы также можете использовать ярлык ^ M + ^ J. Все дело в предпочтениях. коды "CTRL-CHAR" переводятся компилятором.

MyString := 'Hello,' + ^M + ^J + 'world!';

Вы можете убрать знак + между ^ M и ^ J, но затем вы получите предупреждение от компилятора (но оно все равно будет хорошо компилироваться).

7 голосов
/ 31 октября 2008

С другой стороны, уловка, которая может быть полезна:
Если вы храните несколько строк в TStrings, вам просто нужно использовать свойство Text строк TStrings, как в следующем примере.

Label1.Caption := Memo1.Lines.Text;

И вы получите свой многострочный ярлык ...

3 голосов
/ 19 июля 2014
var
  stlst: TStringList;
begin
  Label1.Caption := 'Hello,'+sLineBreak+'world!';

  Label2.Caption := 'Hello,'#13#10'world!';

  Label3.Caption := 'Hello,' + chr(13) + chr(10) + 'world!';

  stlst := TStringList.Create;
  stlst.Add('Hello,');
  stlst.Add('world!');
  Label4.Caption := stlst.Text;

  Label5.WordWrap := True; //Multi-line Caption
  Label5.Caption := 'Hello,'^M^J'world!';

  Label6.Caption := AdjustLineBreaks('Hello,'#10'world!');
  {http://delphi.about.com/library/rtl/blrtlAdjustLineBreaks.htm}
end;
2 голосов
/ 30 ноября 2015

Агностическим способом для платформы будет sLineBreak: http://www.freepascal.org/docs-html/rtl/system/slinebreak.html

Запись ('Hello' + sLineBreak + 'World!');

0 голосов
/ 15 октября 2017
 private
   { Private declarations }
   {declare a variable like this}
   NewLine : string; // ok
  // in next event handler assign a value to that variable (NewLine)
  // like the code down
procedure TMainForm.FormCreate(Sender: TObject);
begin`enter code here`
  NewLine := #10;
 {Next Code To show NewLine In action}
  //ShowMessage('Hello to programming with Delphi' + NewLine + 'Print New Lin now !!!!');
end;
0 голосов
/ 02 августа 2017

Иногда я не хочу загромождать свое пространство кода, особенно для статической метки. Чтобы просто определить его с помощью формы, введите текст метки в форме, затем щелкните правой кнопкой мыши в любом месте той же формы. Выберите «Просмотреть как текст». Теперь вы увидите все объекты в заданном виде, но только в виде текста. Прокрутите вниз или найдите свой текст. Когда вы найдете его, отредактируйте заголовок, чтобы он выглядел примерно так:

Заголовок = 'Линия 1' # 13'Line 2 '# 13'Line 3'

# 13 означает порядковый номер 13, или ascii для возврата каретки. Chr (13) - та же идея, CHR () меняет число на порядковый тип.

Обратите внимание, что в этом конкретном аспекте Delphi нет точек с запятой, и вместо ": =" используется "=". Текст для каждой строки заключен в одинарные кавычки.

Как только вы закончите, щелкните правой кнопкой мыши еще раз и выберите «Показать как форму». Теперь вы можете выполнять любое форматирование, такое как полужирный шрифт, выравнивание по правому краю и т. Д. Вы просто не можете повторно отредактировать текст в форме, иначе вы потеряете разрывы строк.

Я также использую «Просмотр как текст» для нескольких изменений, когда я просто хочу прокручивать и выполнять замены и т. Д.

Dave

0 голосов
/ 09 апреля 2009
ShowMessage('Hello'+Chr(10)+'World');
...