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的更高版本,您可以使用类助手).
小智 9
这是我可以推荐with声明的少数情况之一:
with label1.Font do Style := Style + [fsBold];
with label2.Font do Style := Style + [fsBold];
Run Code Online (Sandbox Code Playgroud)
通常,问题with在于不清楚什么是成员访问权限,什么不是,但如果范围是使用单个属性的单个语句,那么它就足够清楚了.