9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Delphi】何もしないアプリを作る【超初心者向け】

Last updated at Posted at 2024-12-02

はじめに

巷では ノーコード とか ローコード とやらが流行っているようですね。流石にノーコードとまではいきませんが、ローコードの範疇でアプリケーションを作ってみようと思います。

手順

では、早速やっていきましょう。アプリケーションを作るのに必要な Delphi は 『 12.1 Community Edition』 (無償版) で大丈夫です。

何もしないアプリを作る

1. [ファイル | 新規作成 | Windows VCL アプリケーション] でアプリケーションを新規作成します。

image.png

2. [ファイル | すべて保存] で一旦プロジェクトを保存します。適当な場所に保存用フォルダを作って下さい。ここでは EBG というサブフォルダを作って保存しています。

3. まずは今開いているユニットを保存します。

image.png

ファイル名を frmuMain.pas に変更して保存します。これで、このユニット名は frmuMain になります。

4. 次にプロジェクトファイルを保存します。

image.png

ファイル名を ebg.dproj に変更して保存します。これで、このプロジェクト名は ebg になります。実行可能ファイルの名前も ebg.exe になります。

[プロジェクトマネージャ] を確認してみるとこうなっているハズです。

image.png

5.一旦ビルドしてみます。[プロジェクト | ebg をビルド] を実行します。

image.png

何も書いていないので何のエラーも出ませんね。

image.png

6.ファイルを確認してみます。[プロジェクトマネージャ]ebg.exe になっている所を右クリックすると [エクスプローラで表示] があるのでこれを選びます。

image.png

ファイルができていますね。

image.png

Win32 > Debug と辿ると、EXE ができています。

image.png

7. ebg.exe をダブルクリックして実行してみましょう。

image.png

これで、何もしないアプリができました。基本的なウインドウの動きはできますが、本当に何もできません。

続・何もしないアプリを作る

では次に、何もしないけれども便利なアプリケーション にしてみましょう。

1.フォームデザイナを開く

フォームデザイナとコードエディタは右下のタブ (コード / デザイン) で切り替えられます。ショートカットキーだと〔F12〕で切り替わります。

image.png

2.[オブジェクトインスペクタ] でフォームのプロパティを変更します。コントロールが何も貼り付けられていないので、フォーム (Form1) が選択がされていると思います。

image.png

プロパティを次のように書き替えます。

プロパティ 古い値 新しい値
BorderStyle bsSizeable bsNone
Caption Form1 (なし)
Color clBtnFace clWindow
Name Form1 frmMain
WindowState wsNormal wsMaximized

3.[実行 | 実行] で実行すると画面が真っ白なウィンドウで覆われたと思います。終了は 〔Alt〕+〔F4〕 です。

これで便利なアプリケーションを一つ手に入れられましたね。

...???

Windows 11 のアプリケーションのボーダーは半透明です。Windows Vista とかは Aero Glass で透けてましたよね?〔Alt〕+〔PrintScreen〕 でアプリウィンドウだけのスクショを撮ろうとしても背景にある画像や別のウィンドウが透けていませんでしたか?

image.png

ほら、ボーダーに何か見えますね?でも、この EBG.EXE を実行してからだと何も映り込まないのです。

image.png

そして、このEBG.EXE を実行してからだと〔Windows〕 キーでメニューを出したり〔Alt〕+〔Tab〕でアプリケーションを選択できますが...デスクトップは見えない のです。散らかりまくったデスクトップ (にあるショートカットアイコン) を他人に晒す危険性がないのです。

つまりは「EBG = Empty Background」という事でした (英語的に正しいかは知りません ^^;)。

続・続・何もしないアプリを作る

では、もう少しアプリケーションとしての体裁を整えていきましょう。

アイコン

Delphi のデフォルトアイコンになっているので変更しましょう。[プロジェクト | オプション][プロジェクトオプション] を開きます。

左側のツリーを アプリケーション > アイコン と辿り、[ターゲット]すべての構成 | すべてのプラットフォーム に変更します。

image.png

次のような画面になったら、[アートワークジェネレータ] ボタンを押します。

image.png

[アートワークジェネレータ] の初期画面はこうなっていると思うので、値を変更します。

image.png

項目 古い値 新しい値
テキスト Aa  (全角SP)
形状 楕円形 四角形 (角丸)

image.png

[完了] ボタンを押すとアイコンが生成されます。

image.png

[プロジェクトオプション][保存] ボタンを押して閉じます。[プロジェクト | ebg をビルド] を実行すると、アイコンが白い角丸に変わったはずです。

アイコンキャッシュの関係で元のアイコンが表示されているかもしれませんが、コンテキストメニュー (右クリックメニュー) でプロパティを表示してみると現在のアイコンが見れます。

image.png

終了

〔Alt〕+〔F4〕 での終了は乱暴なので、ポップアップメニューから終了できるようにしましょう。

[ツールパレット] から TPopupMenu を探してフォームデザイナに貼り付けてください。

image.png

ドラッグで持って行ってもいいですし、ダブルクリックしてもいいです。ツールバーに [コンポーネントツールバー] を表示させているのなら、そちらからでも OK です。

image.png

フォームに貼り付けた TPopupMenu (PopupMenu1) をダブルクリックするとメニューエディタが開きます。

image.png

その状態で [オブジェクトインスペクタ] を見ると、新規作成されたメニューアイテム (青くハイライトされている) が選択されています。

image.png

プロパティ 古い値 新しい値
Caption (なし) &Exit
Name Exit1 miExit

Caption に入れた文字列をベースに Name が自動で設定されます (例だと Exit1)。

[オブジェクトインスペクタ][イベント] タブに移り、OnClick の右側をダブルクリックして OnClick のイベントハンドラを作成します。これは名前の通り、このメニューアイテムがクリックされた時の処理です。

image.png

自動で生成されたイベントハンドラ TfrmMain.miExitClick() にアプリケーションを終了するコードを書きます。

image.png

procedure TfrmMain.miExitClick(Sender: TObject);
begin
  Close;
end;

VCL フォームアプリケーションはメインフォーム (この場合、frmMain) が閉じられるとアプリケーションが終了するのでこのような処理になります。

[オブジェクトインスペクタ] でフォーム (frmMain) の [プロパティ]
タブを選択し、 PopupMenu プロパティで PopupMenu1 を選択します。

image.png

[実行 | 実行]ebg.exe を実行すると、また真っ白なフォームで覆われますが、任意の場所を右クリックするとポップアップメニューが出てきます。

image.png

この Exit をクリックすると ebg.exe が終了します。

〔メニュー〕 キーを押して E を押しても終了させる事ができます。メニューアイテムのキャプションが &Exit となっていて、環境によっては Exit のように E に下線が引かれていたと思いますが、これは アクセラレーターキー と呼ばれるもので、そのキーを押すとその項目が実行される事を意味しています。

メニューを表示させずに直接実行させたいのであれば、ShortCut プロパティにショートカットキー (キーコンビネーション) を登録します。

ショートカットキーが有効なのはウインドウがアクティブな時、つまり一度は ebg.exe をマウスクリックするなりしなくてはならないのと、ebg.exe がアクティブかどうかが判断しづらい時にショートカットキーを押して誤爆する可能性も考えてショートカットキーは設定してください。

背景色変更

背景色変更機能も付けましょう。真っ白だと目が痛い事がありますからね。

フォームデザイナに TColorDialog を貼り付けます。探すのが面倒な時はツールパレットの右上のボックスに数文字入力すると絞り込めますよ。

image.png

image.png

フォームに貼り付けた TPopupMenu (PopupMenu1) をダブルクリックするしてメニューエディタが開きます。

image.png

Exit をクリックしてハイライト状態にして〔Insert〕 キーを 2 回押します (右クリックしてメニューアイテム操作メニューを出す事もできます)。これで 2 つ分の (空白の) メニューアイテムが作られました。

image.png

上の空白 (空のメニューアイテム) をクリックしてプロパティを変更します。

プロパティ 古い値 新しい値
Caption (なし) &Change Color...
Name ChangeColor1 miChangeColor

[オブジェクトインスペクタ][イベント] タブに移り、OnClick の右側をダブルクリックして OnClick のイベントハンドラを作成します。実はメニューデザイナの方をダブルクリックしても OnClick のイベントハンドラが生成されます。

image.png

image.png

自動で生成されたイベントハンドラ TfrmMain.miChangeColorClick() に色を変更するコードを書きます。

image.png

procedure TfrmMain.miChangeColorClick(Sender: TObject);
begin
  if ColorDialog1.Execute then
    Color := ColorDialog1.Color;
end;

二番目のメニューアイテムを選択し、プロパティを変更します。

image.png

プロパティ 古い値 新しい値
Caption (なし) -

ハイフンはセパレーターとして機能します。

[実行 | 実行]ebg.exe を実行し、任意の場所を右クリックするとポップアップメニューが出てきます。

image.png

Change Color... をクリックすると色選択ダイアログが出てきます。

メニューアイテムの ... は即実行される機能ではなく、次に何らかの画面がある事を意味します。

image.png

色を選択して [OK] ボタンを押すと背景色が変更されます。気分に合わせて背景色を変えるのもいいかと思います。

image.png

続・続・続・何もしないアプリを作る

お好きにカスタマイズしてみてください。

  • 64 bit アプリもビルドしてみたり (チョー簡単)
  • 壁紙を表示できるようにしたり
  • 設定を保存できるようにしたり
  • 時計を表示できるようにしたり

全ソースコード

短いので載せておきます。

ebg.dpr
program ebg;

uses
  Vcl.Forms,
  frmuMain in 'frmuMain.pas' {frmMain};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TfrmMain, frmMain);
  Application.Run;
end.
frmuMain.dfm
object frmMain: TfrmMain
  Left = 0
  Top = 0
  BorderStyle = bsNone
  ClientHeight = 480
  ClientWidth = 640
  Color = clWindow
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -12
  Font.Name = 'Segoe UI'
  Font.Style = []
  PopupMenu = PopupMenu1
  WindowState = wsMaximized
  TextHeight = 15
  object PopupMenu1: TPopupMenu
    Left = 308
    Top = 228
    object miChangeColor: TMenuItem
      Caption = '&Change Color...'
      OnClick = miChangeColorClick
    end
    object N1: TMenuItem
      Caption = '-'
    end
    object miExit: TMenuItem
      Caption = '&Exit'
      OnClick = miExitClick
    end
  end
  object ColorDialog1: TColorDialog
    Left = 384
    Top = 228
  end
end
frmuMain.pas
unit frmuMain;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus;

type
  TfrmMain = class(TForm)
    ColorDialog1: TColorDialog;
    PopupMenu1: TPopupMenu;
    miChangeColor: TMenuItem;
    miExit: TMenuItem;
    N1: TMenuItem;
    procedure miExitClick(Sender: TObject);
    procedure miChangeColorClick(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  frmMain: TfrmMain;

implementation

{$R *.dfm}

procedure TfrmMain.miExitClick(Sender: TObject);
begin
  Close;
end;

procedure TfrmMain.miChangeColorClick(Sender: TObject);
begin
  if ColorDialog1.Execute then
    Color := ColorDialog1.Color;
end;

end.

アイコンの生成は別途行う必要があります。

おわりに

結局、自分で書いたコードは 3 行でしたね (^^;A

念のために断っておくと、Windows ではデスクトップの何もない所を右クリックして [表示 | デスクトップアイコンの表示] でデスクトップに散らばったファイルを非表示にする事ができますし、背景色も [個人用設定] で変更できます。

しかしながら、この ebg.exe をタスクバーに固定しておいた方が圧倒的に便利なんですよね。何回もクリックしなくていいので。

9
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
9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?