12

C++ のような他の言語では、追加のスタイル/フラグを追加するために plus-equals または or-equals タイプの操作を行う演算子があります。Delphiに同等のものはありますか?

現在、次のようなコードがあります。

label1.Font.Style := label1.Font.Style + [fsBold];
label2.Font.Style := label2.Font.Style + [fsBold];

しかし、可能であれば、代入演算子の両側でラベル名を複製せずに、もう少し単純化してより簡潔なものにしたいと思います。次の行に沿ったものですlabel1.Font.Style += [fsBold];label1.Font.Style := self + [fsBold];

これはできますか?それともあまりない?

4

4 に答える 4

14

インクルードはあなたが探しているものです。残念ながら、Label.Font.Style はプロパティであり、var によって渡されずに割り当てられる必要があるという問題に遭遇します。ただし、これを行うことができます:

var
  fontStyle: TFontStyles;
begin
  fontStyle := Label1.Font.Style;
  Include(fontStyle, fsBold);
  Label1.Font.Style := fontStyle;
于 2012-07-21T18:33:00.763 に答える
12

withこれは、次のステートメントを推奨できる数少ないケースの 1 つです。

with label1.Font do Style := Style + [fsBold];
with label2.Font do Style := Style + [fsBold];

通常、with何がメンバー アクセスで何がそうでないかが不明なのが問題ですが、スコープが 1 つのプロパティを使用する 1 つのステートメントである場合は、十分に明確です。

于 2012-07-21T18:28:02.153 に答える
11

Delphi には Inc 関数がありますが、プロパティでは機能しません。

Inc(a);     // Increment a with 1
Inc(a, 5);  // Increment a with 5

フォントに頻繁にスタイルを追加する必要がある場合は、次の手順を記述できます。

procedure AddStyle(const AFont: TFont; const AStyle: TFontStyles);
begin
  AFont.Style := AFont.Style + AStyle;
end;

(Delphi の新しいバージョンでは、クラス ヘルパーを使用できます)。

于 2012-07-21T18:21:12.367 に答える
0

タイプをサブクラスTLabel化し、次のようなメソッドを作成します。

procedure TMyLabel.AddStyle(const AStyle: TFontStyles);
begin
 Self.Font.Style := Self.Font.Style + AStyle;
end;

次に、クラスをbplパッケージに入れてエディターにインストールできます。その後、すべてのラベルをカスタマイズしたラベルに置き換えることができます。大規模なプロジェクトの場合、メモ帳 ++.pasを使用して、および ( text! ).dfmファイル内のすべての宣言を置き換えることをお勧めします。複雑に聞こえるかもしれませんが、1 時間もかからない作業です。幸運を!

于 2012-07-21T18:31:20.520 に答える