我想创建一个跨多行的字符串,以将其分配给标签标题属性。在Delphi中应该如何实现?
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开始的。
以下是更简洁的方法:
my_string := 'Hello,'#13#10' world!';
my_string := 'Hello,' + #13#10 + 'world!';
#13#10
是十进制下的回车换行符。
或者您也可以使用^M+^J快捷键。这只是个人喜好。"CTRL-CHAR"代码由编译器翻译。
MyString := 'Hello,' + ^M + ^J + 'world!';
你可以在^M和^J之间去掉加号,但是编译器会发出警告(但它仍然可以编译成功)。
另外,一个有用的小技巧:
如果您将多个字符串保存在TStrings中,您只需要使用TStrings的Text属性,就像以下示例一样。
Label1.Caption := Memo1.Lines.Text;
您将获得多行标签...
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;
平台无关的方式是使用 'sLineBreak':http://www.freepascal.org/docs-html/rtl/system/slinebreak.html
Write('Hello' + sLineBreak + 'World!');
System.pas
unit
中使用 const sLineBreak
,它已经根据你所使用的操作系统进行了处理。TForm1.btnInfoClick(Sender: TObject);
begin
ShowMessage ('My name is Jhon' + sLineBreak
'Profession: Hollywood actor');
end;
ShowMessage('Hello'+Chr(10)+'World');
我手头没有 Delphi 的副本,但我相当确定如果您将 wordwrap 属性设置为 true,将 autosize 属性设置为 false,则应在您制作标签的大小处包装任何文本。如果您想在特定位置换行,则如果您设置上述设置并从文本编辑器粘贴,则可能会起作用。
希望这可以帮助到您。