什么是Delphi相当于"+ ="用于向集合中添加元素?

Jes*_*own 9 delphi operators set delphi-7

在其他语言(如C++)中,有些运算符可以执行plus-equals或or-equals类型的操作来添加其他样式/标志.Delphi中有相同的东西吗?

现在我有一些代码,如:

label1.Font.Style := label1.Font.Style + [fsBold];
label2.Font.Style := label2.Font.Style + [fsBold];
Run Code Online (Sandbox Code Playgroud)

但是,如果可能的话,我希望能够简化一些简化,而不会在赋值运算符的两边复制标签名称,这可能是:label1.Font.Style += [fsBold];或者label1.Font.Style := self + [fsBold];

可以这样做吗?还是没那么多?

gor*_*rdy 13

包括你正在寻找的东西.不幸的是,你遇到的问题是Label.Font.Style是一个属性,必须分配给var而不是传递给它.但是你可以这样做:

var
  fontStyle: TFontStyles;
begin
  fontStyle := Label1.Font.Style;
  Include(fontStyle, fsBold);
  Label1.Font.Style := fontStyle;
Run Code Online (Sandbox Code Playgroud)


Too*_*the 11

Delphi具有Inc功能,但它不适用于属性:

Inc(a);     // Increment a with 1
Inc(a, 5);  // Increment a with 5
Run Code Online (Sandbox Code Playgroud)

如果需要经常为字体添加样式,可以编写一个过程:

procedure AddStyle(const AFont: TFont; const AStyle: TFontStyles);
begin
  AFont.Style := AFont.Style + AStyle;
end;
Run Code Online (Sandbox Code Playgroud)

(使用Delphi的更高版本,您可以使用类助手).

  • +1,我只是修复你的AddStyle方法:),你也可以添加一个使用的副本,如"AddStyle(Label1.Font,[fsBold]);" (3认同)

小智 9

这是我可以推荐with声明的少数情况之一:

with label1.Font do Style := Style + [fsBold];
with label2.Font do Style := Style + [fsBold];
Run Code Online (Sandbox Code Playgroud)

通常,问题with在于不清楚什么是成员访问权限,什么不是,但如果范围是使用单个属性的单个语句,那么它就足够清楚了.