String 如何使用对象检查器中的sLineBreak?
目前,我正在将包含sLineBreak常量的字符串设置为TLabel控件的Caption属性的值String 如何使用对象检查器中的sLineBreak?,string,delphi,designer,object-inspector,String,Delphi,Designer,Object Inspector,目前,我正在将包含sLineBreak常量的字符串设置为TLabel控件的Caption属性的值 MyLabel.Caption := 'A' + sLineBreak + 'B'; sLineBreak在System.pas中定义如下(Delphi 2007): 有没有一种方法可以通过使用对象检查器来做同样的事情?(在设计时) 更新: 也许将来我会把这个项目转移到一个更新的IDE上,并在不同的平台上开发,但目前没有特别的理由让我使用sLineBreak而不是#13#10。很抱歉误解。不,对象
MyLabel.Caption := 'A' + sLineBreak + 'B';
sLineBreak在System.pas中定义如下(Delphi 2007):
有没有一种方法可以通过使用对象检查器来做同样的事情?(在设计时)
更新:
也许将来我会把这个项目转移到一个更新的IDE上,并在不同的平台上开发,但目前没有特别的理由让我使用sLineBreak而不是#13#10。很抱歉误解。不,对象检查器在设计时不计算变量 解决此问题的通常方法是在表单的构造函数中设置标题:
procedure TForm1.FormCreate(Sender: TObject);
begin
MyLabel.Caption := 'A' + sLineBreak + 'B';
end;
不,对象检查器在设计时不计算变量 解决此问题的通常方法是在表单的构造函数中设置标题:
procedure TForm1.FormCreate(Sender: TObject);
begin
MyLabel.Caption := 'A' + sLineBreak + 'B';
end;
我假设您希望在跨平台设置中执行此操作,在这种情况下无法执行此操作。表单文件没有任何用于条件值指定的机制。您应该在运行时应用该值 我假设您希望在跨平台设置中执行此操作,在这种情况下无法执行此操作。表单文件没有任何用于条件值指定的机制。您应该在运行时应用该值 在设计时不能使用
sLineBreak
常量。但是,您可以:
查看为文本
),将CR/LF字符插入编码的标题
文本,例如:
使用裸露的LF换行符
object MyLabel: TLabel
Caption = 'A'#10'B'
end
object MyLabel: TLabel
Caption = 'A'#13#10'B'
end
使用CRLF换行符
object MyLabel: TLabel
Caption = 'A'#10'B'
end
object MyLabel: TLabel
Caption = 'A'#13#10'B'
end
字符串
属性值进行多行编辑。例如在设计时不能使用
sLineBreak
常量。但是,您可以:
查看为文本
),将CR/LF字符插入编码的标题
文本,例如:
使用裸露的LF换行符
object MyLabel: TLabel
Caption = 'A'#10'B'
end
object MyLabel: TLabel
Caption = 'A'#13#10'B'
end
使用CRLF换行符
object MyLabel: TLabel
Caption = 'A'#10'B'
end
object MyLabel: TLabel
Caption = 'A'#13#10'B'
end
字符串
属性值进行多行编辑。例如您提出的两种解决方案的唯一问题是,它不使用
sLineBreak
,而是在Windows CR/LF对中使用硬代码。@KenWhite第一种解决方案允许您选择要使用的字符。第二种解决方案使用TStrings
使用的任何换行符,默认情况下为sLineBreak
,但这取决于IDE的RTL副本中的sLineBreak
,并且由于IDE是Windows应用程序,这将是CRLF。但这就是为什么我还提到编写您自己的属性编辑器(这并不困难),然后您可以使用您想要的任何字符。编辑DFM以插入CR/LF(或简单的LF)并不能处理平台之间的差异。属性编辑器可能会这样做。(我曾经遇到过第三方替换String
属性编辑器的问题,它们想要做的远远超出预期,对我来说,避免在构造函数中添加一行代码是不值得的)。@KenWhite OP使用的是D2007,因此没有跨平台开发,因此sLineBreak
始终是可靠的。直到下周升级到西雅图或柏林。:-)大概OP有理由使用sLineBreak
而不是#13#10
。您提出的两种解决方案的唯一问题是,它不使用sLineBreak
,而是使用Windows CR/LF对中的硬代码。@KenWhite第一种解决方案允许您选择要使用的字符。第二种解决方案使用TStrings
使用的任何换行符,默认情况下为sLineBreak
,但这取决于IDE的RTL副本中的sLineBreak
,并且由于IDE是Windows应用程序,这将是CRLF。但这就是为什么我还提到编写您自己的属性编辑器(这并不困难),然后您可以使用您想要的任何字符。编辑DFM以插入CR/LF(或简单的LF)并不能处理平台之间的差异。属性编辑器可能会这样做。(我曾经遇到过第三方替换String
属性编辑器的问题,它们想要做的远远超出预期,对我来说,避免在构造函数中添加一行代码是不值得的)。@KenWhite OP使用的是D2007,因此没有跨平台开发,因此sLineBreak
始终是可靠的。直到下周升级到西雅图或柏林。:-)大概OP有理由使用sLineBreak
而不是#13#10
。