我想创建一个跨越多行的字符串,以分配给Label Caption属性。这是如何在Delphi中完成的?
答案 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;