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


97

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

Answers:


174

在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 6)以来,它就可以在所有版本的Delphi中使用。



15

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

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


8

或者,您也可以使用^ M + ^ J快捷方式。都是优先事项。“ CTRL-CHAR”代码由编译器翻译。

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

您可以在^ M和^ J之间删除+,但随后编译器会发出警告(但仍然可以正常编译)。


7

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

Label1.Caption := Memo1.Lines.Text;

然后您将获得多行标签...


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;

3

平台不可知的方式是“ sLineBreak”: http

写('Hello'+ sLineBreak +'World!');



0

我没有手头的Delphi副本,但是我可以肯定的是,如果将wordwrap属性设置为true,而autosize属性设置为false,则它应该将您放置在标签上的文本大小包装起来。如果要在某个位置换行,则可以进行以下设置:设置上述设置并从文本编辑器粘贴

希望这可以帮助。


-2

有时我不想弄乱我的代码空间,尤其是对于静态标签。要仅使用表单进行定义,请在表单上输入标签文本,然后右键单击同一表单上的任意位置。选择“以文本查看”。现在,您将看到所有设计的对象,但仅是文本。向下滚动或搜索您的文本。找到标题后,请编辑标题,使其看起来像:

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

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

请注意,在Delphi的此特定方面中没有分号,并且使用“ =”而不是“:=”。每行的文本都用单引号引起来。

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

我还使用“作为文本查看”进行多个更改,在这些更改中我只想滚动浏览并进行替换等。快速。

戴夫


就像问题一样,被接受的答案直接指向重点。相反,这个答案比要求的要多。更糟糕的是:还不清楚。
ranieribt

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

请格式化您的代码,并添加一些有关如何解决此问题的说明。
高炉
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.