LoginSignup
3
1

More than 5 years have passed since last update.

Delphi IDE の便利な機能 - 名前のリファクタリング

Posted at

アプリケーションを作るとき、コンポーネントなどの名前が、デフォルトの Form1 とか Button1 のままだと、コードの可読性がいまいち
たとえば pushButton とか、意味をもたせたいですよね

でも、ある程度作ってからだと、修正がめんどくさいなぁ... と思った貴方
痒いところに手が届く仕組みが IDE には用意されています

その1 オブジェクトインスペクタを使う

設計画面のオブジェクトインスペクタで、対象のコンポーネントを選択して、name プロパティの値を変更します
この操作で何が変わるかというと

  • 宣言されている名称が変わる
  • イベントの名称が変わる

しかし、自身で記述したコードの箇所は変わってくれない
なので、このやり方の使いどころは、画面設計を行っているとき、詳細なコードを書き始める前ですね

簡単な例で確認してみます (FireMonkey で作っていますが VCL でも同様です)
単純にフォームにボタンを1つ貼り、ボタンの Click イベントにクリックされたら、ボタン上に表示されている文字が変わるというコードを書いたプロジェクトがあります
設計画面のオブジェクトインスペクタ上で Button1 の Name プロパティの値を Button1 から pushButton に書き換えます

Before

before.png

After

after.png

コード側はどうなるかを見てみましょう

Before

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.Controls.Presentation, FMX.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { private 宣言 }
  public
    { public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.Text := '押したよ';
end;

end.

After

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.Controls.Presentation, FMX.StdCtrls;

type
  TForm1 = class(TForm)
    pushButton: TButton;                         // <<<---- 修正される
    procedure pushButtonClick(Sender: TObject);  // <<<---- 修正される
  private
    { private 宣言 }
  public
    { public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.pushButtonClick(Sender: TObject); // <<<---- 修正される
begin
  Button1.Text := '押したよ';  // <<<---- ここは変わらない
end;

end.

その2 リファクタリング機能を使う

IDE にはリファクタリングという「コードによる目的の動作を変えずに、コードを再構成し、変更するために使用する技術」が備わっています
ここでは「名前のリファクタリング」の手順を紹介します

名前のリファクタリングの手順です

コード上で対象となる名前を選択して、マウスを右クリックし、「リファクタリング| xx の名前変更」を選びます
ref1.png

ダイアログが現れますので、新しい名前を設定して [OK] ボタンをクリックします
ref2.png

左上のルービックキューブのようなアイコンをクリックすると名称の変換が行われます
ref3.png

変換後のコードを見てみましょう (設計画面側は、その1と同じなので省略)

After

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.Controls.Presentation, FMX.StdCtrls;

type
  TForm1 = class(TForm)
    pushButton: TButton;                         // <<<---- 修正される
    procedure pushButtonClick(Sender: TObject);  // <<<---- 修正される
  private
    { private 宣言 }
  public
    { public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.pushButtonClick(Sender: TObject);  // <<<---- 修正される
begin
  pushButton.Text := '押したよ';                     // <<<---- 修正される
end;

end.

おわりに

名前のリファクタリング機能ですが、若干制限がありますので注意ください
Delphi の場合は、ジェネリックスの型パラメータの名前は変更できないという制限があります

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1