我想创建一个跨越多行的字符串以分配给标签标题属性。这在 Delphi 中是如何完成的?
12 回答
在 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。
这是一个更短的方法:
my_string := 'Hello,'#13#10' world!';
my_string := 'Hello,' + #13#10 + 'world!';
#13#10
是十进制的 CR/LF 字符
另一方面,一个有用的技巧:
如果您将多个字符串保存在 TStrings 中,您只需使用 TStrings 的 Text 属性,如下例所示。
Label1.Caption := Memo1.Lines.Text;
你会得到你的多行标签......
或者您也可以使用 ^M+^J 快捷方式。所有的偏好问题。“CTRL-CHAR”代码由编译器翻译。
MyString := 'Hello,' + ^M + ^J + 'world!';
您可以将 ^M 和 ^J 之间的 + 去掉,但是编译器会发出警告(但它仍然可以正常编译)。
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
写('你好' + sLineBreak + '世界!');
我手头没有 Delphi 的副本,但我相当确定如果您将 wordwrap 属性设置为 true 并将 autosize 属性设置为 false,它应该以您制作标签的大小包装任何文本。如果您想在某个地方换行,那么如果您设置上述设置并从文本编辑器粘贴,它可能会起作用。
希望这可以帮助。
ShowMessage('Hello'+Chr(10)+'World');
您已经根据您正在使用的操作系统进行了处理const sLineBreak
。System.pas
unit
使用示例:
TForm1.btnInfoClick(Sender: TObject);
begin
ShowMessage ('My name is Jhon' + sLineBreak
'Profession: Hollywood actor');
end;
有时我不想弄乱我的代码空间,尤其是对于静态标签。要在表单中定义它,请在表单上输入标签文本,然后右键单击同一表单上的任意位置。选择“以文本形式查看”。您现在将看到所有设计的对象,但仅作为文本。向下滚动或搜索您的文本。找到它后,编辑标题,使其看起来像:
Caption = '第 1 行'#13'第 2 行'#13'第 3 行'
#13 表示序数 13,或用于回车的 ascii。Chr(13) 是同样的想法,CHR() 将数字更改为序数类型。
请注意,在 Delphi 的这个特定方面没有分号,并且使用“=”而不是“:=”。每行的文本都用单引号括起来。
完成后,再次右键单击并选择“以表单形式查看”。您现在可以进行任何格式设置,例如粗体、右对齐等。您不能重新编辑表单上的文本,否则您将丢失换行符。
我还使用“以文本形式查看”进行多项更改,我只想滚动浏览并进行替换等。快速。
戴夫
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;