如何使用 object 检查器中的 sLineBreak?

How to use sLineBreak from the object inspector?

目前,我正在设置一个包含 sLineBreak 常量的字符串作为 TLabel 控件的标题 属性 的值。

MyLabel.Caption := 'A' + sLineBreak + 'B';

sLineBreak 在System.pas 中定义如下 (Delphi 2007):

const
      sLineBreak = {$IFDEF LINUX} #10 {$ENDIF} {$IFDEF MSWINDOWS} #13#10 {$ENDIF};

有没有办法使用 object 检查器来做同样的事情? (在设计时)。

更新: 可能在未来我会将这个项目移动到更新的 IDE 并在不同的平台上开发,但目前没有特别的原因我使用 sLineBreak 而不是 #13#10。不好意思造成误会。

不,Object Inspector 不会在设计时评估变量。

解决此问题的常用方法是在表单的构造函数中设置标题:

procedure TForm1.FormCreate(Sender: TObject);
begin
  MyLabel.Caption := 'A' + sLineBreak + 'B';
end;

我假设您希望在跨平台设置中执行此操作,在这种情况下无法完成。表单文件没有任何条件值规范机制。您应该在运行时应用该值。

您不能在设计时使用 sLineBreak 常量。但是,您可以:

  1. 直接编辑DFM(右键单击表单设计器并选择View as Text)将CR/LF个字符插入到编码的Caption文本中,例如:

    使用裸 LF 换行符

    object MyLabel: TLabel
      Caption = 'A'#10'B'
    end
    

    使用 CRLF 换行符

    object MyLabel: TLabel
      Caption = 'A'#13#10'B'
    end
    
  2. 安装第三方设计时 属性 编辑器(或编写您自己的),允许对 String 属性 值进行多行编辑。例如,"Extended String Property Editor".