我想创建一个跨越多行的字符串,以分配给Label Caption属性.这是如何在Delphi中完成的?
Jim*_*eth 165
在System.pas(自动使用)中定义了以下内容:
const
sLineBreak = {$IFDEF LINUX} AnsiChar(#10) {$ENDIF}
{$IFDEF MSWINDOWS} AnsiString(#13#10) {$ENDIF};
Run Code Online (Sandbox Code Playgroud)
这是来自Delphi 2009(注意使用AnsiChar和AnsiString).(我添加了换行.)
因此,如果要进行TLabel换行,请确保将AutoSize设置为true,然后使用以下代码:
label1.Caption := 'Line one'+sLineBreak+'Line two';
Run Code Online (Sandbox Code Playgroud)
自从引入sLineBreak以来,所有版本的Delphi都可以使用,我相信它是Delphi 6.
Zar*_*tog 32
这是一个更短的方法:
my_string := 'Hello,'#13#10' world!';
Run Code Online (Sandbox Code Playgroud)
或者您也可以使用^ M + ^ J快捷方式.所有的偏好问题."CTRL-CHAR"代码由编译器翻译.
MyString := 'Hello,' + ^M + ^J + 'world!';
Run Code Online (Sandbox Code Playgroud)
你可以在^ M和^ J之间取+,但是你会得到编译器的警告(但它仍然可以正常编译).
另一方面,一个有用的技巧:
如果在TStrings中保存多个字符串,则只需使用TStrings的Text属性,如下例所示.
Label1.Caption := Memo1.Lines.Text;
Run Code Online (Sandbox Code Playgroud)
你会得到你的多线标签......
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;
Run Code Online (Sandbox Code Playgroud)
小智 5
与平台无关的方式是“sLineBreak”: http://www.freepascal.org/docs-html/rtl/system/slinebreak.html
Write('你好' + sLineBreak + '世界!');