[DELPHI] フォームにプロパティを追加する






トップページへ

用途は少ないかもしれませんが、フォームにプロパティを追加する場合の覚え書きです。

なお、Delphi(楽天市場で探すamazonで探す)のバージョンによっては見た目、動作に違いが出る可能性があります。また参考にされる場合は自己責任でお願いします。

 

1. プロパティなので Public宣言 に記述します。

  public
    { Public 宣言 }
  end;

2. ここでは UserDir (String型) という名称のプロパティを追加します。もちろん Integer など名称は型は自由に宣言できます。

  public
    { Public 宣言 }
    property UserDir: String;
  end;

3. 画像のように UserDir のある行の上で右クリックすると、「カーソル位置のクラスを補完」と表示されるのでそれをクリック

タップ(クリック)で拡大します

 

4. するとソースコードの末尾に SetUserDir(const Value: String) 手続きが追加され、さらにPrivate宣言とPublic宣言にUserDirに対する指定子「read/write」が追加されます。

procedure TForm1.SetUserDir(const Value: String);
begin
  FUserDir := Value;
end;

end.
  private
    FUserDir: String;
    procedure SetUserDir(const Value: String);
    { Private 宣言 }
  public
    { Public 宣言 }
    property UserDir: String read FUserDir write SetUserDir;
  end;

5. FUserDir という名称を GetUserDir に変えます。

  public
    { Public 宣言 }
    property UserDir: String read GetUserDir write SetUserDir;
  end;

6. 文字列 GetUserDir の中で右クリックして、再度「カーソル位置のクラスを補完」をクリック

 

7. ソースコードに GetUserDir という関数が追加され、Private宣言にも追加されます。

  private
    FUserDir: String;
    procedure SetUserDir(const Value: String);
    function GetUserDir: String;
 
    { Private 宣言 }
  public
...

function TForm1.GetUserDir: String;
begin

end;

8. GetUserDir関数に Result := Self.FUserDir; を追加します。

function TForm1.GetUserDir: String;
begin
  Result := Self.FUserDir;
end;

以上で終わりです。

 

最終的に下記のようになっていれば、フォームにプロパティを追加することができました。

  private
    { Private 宣言 }
    FUserDir: String;
    procedure SetUserDir(const Value: String);
    function GetUserDir: String;
  public
    { Public 宣言 }
    property UserDir: String read GetUserDir write SetUserDir;
  end;
...
function TForm1.GetUserDir: String;
begin
  Result := Self.FUserDir;
end;

procedure TForm1.SetUserDir(const Value: String);
begin
  FUserDir := Value;
end;

 

プロパティの用途は

フォーム上に表示する必要がないものの、フォームに関連した変数を定義する必要がある場合です。

また、メリットとして

Form1.u

と入力すれば UserDir が補完リストに表示される点です。

※エディタで「コード補完」が有効の時です。

 

この記事の作業が面倒ならば、変数をPrivateかPublicで宣言すれば代用できます。






関連記事
[Delphi] Indyをバージョンアップする

[Delphi]StringReplaceのヘルプの誤記載

Delphi メニュー

[Delphi] BOM無しUTF-8で保存

[Delphi]起動時に「Setup.exeの実行時にエラーが発生しました」と表示