如何在Delphi中的字符串中包含换行符?

时间:2008-10-31 18:10:05

标签: delphi newline

我想创建一个跨越多行的字符串,以分配给Label Caption属性。这是如何在Delphi中完成的?

12 个答案:

答案 0 :(得分:159)

在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';

自从引入sLineBreak以来,所有版本的Delphi都可以使用,我相信它是Delphi 6。

答案 1 :(得分:31)

这是一个更短的方法:

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

答案 2 :(得分:14)

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

#13#10是十进制的CR / LF字符

答案 3 :(得分:8)

或者您也可以使用^ M + ^ J快捷方式。所有的偏好问题。 “CTRL-CHAR”代码由编译器翻译。

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

你可以在^ M和^ J之间取+,但是你会得到编译器的警告(但它仍然可以正常编译)。

答案 4 :(得分:7)

另一方面,一个有用的技巧:
如果在TStrings中保存多个字符串,则只需使用TStrings的Text属性,如以下示例所示。

Label1.Caption := Memo1.Lines.Text;

你会得到你的多线标签......

答案 5 :(得分:3)

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;

答案 6 :(得分:2)

平台不可知的方式是'sLineBreak': http://www.freepascal.org/docs-html/rtl/system/slinebreak.html

写('你好'+ sLineBreak +'世界!');

答案 7 :(得分:0)

我手头没有Delphi的副本,但是我很确定如果你将wordwrap属性设置为true并且将autosize属性设置为false,它应该将你放置的任何文本换成你制作标签的大小。如果您想要在某个地方换行,那么如果您设置上述设置并从文本编辑器粘贴,则可能会有效。

希望这有帮助。

答案 8 :(得分:0)

ShowMessage('Hello'+Chr(10)+'World');

答案 9 :(得分:0)

您在 const sLineBreak System.pas 中拥有 unit,它已经根据您正在使用的操作系统进行处理。

使用示例:

TForm1.btnInfoClick(Sender: TObject);
begin
   ShowMessage ('My name is Jhon' + sLineBreak
      'Profession: Hollywood actor');
end;

答案 10 :(得分:-2)

有时候我不想让我的代码空间变得杂乱,特别是对于静态标签。要使用表单定义它,请在表单上输入标签文本,然后右键单击同一表单上的任意位置。选择"以文本形式查看"。您现在将按设计看到所有对象,但仅作为文本。向下滚动或搜索您的文本。当你找到它时,编辑标题,看起来像是:

标题='第1行'#13'第2行'#13'第3行'

#13表示序数13或ascii用于回车。 Chr(13)是相同的想法,CHR()将数字更改为序数类型。

请注意,Delphi的这个特殊方面没有分号," ="使用而不是":="。每行的文本用单引号括起来。

完成后,再次右键单击并选择"以表格形式查看"。您现在可以执行任何格式设置,例如粗体,右对齐等。您只是无法重新编辑表单上的文本,否则您将丢失换行符。

我还使用"查看为文本"我需要滚动浏览并进行替换等多项更改。快速。

戴夫

答案 11 :(得分:-2)

 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;