Windows の概要
Windows アプリケーションの開発:インデックス への移動
Windows プラットフォームには、アプリケーションの作成とビルドに役立つ方法がいくつか用意されています。以下は、最も一般的な Windows アプリケーションです。
- GUI アプリケーション
- コンソール アプリケーション
- サービス アプリケーション
- パッケージと DLL
目次
GUI アプリケーション
グラフィカル ユーザー インターフェイス アプリケーション(GUI アプリケーション)は、ウィンドウ、メニュー、ダイアログ ボックスなどのアプリケーションを使いやすくするグラフィカルなコンポーネントを使って、設計されます。GUI アプリケーションをコンパイルすると、スタートアップ コードを含む実行可能ファイルが、ソース ファイルから作成されます。この実行可能ファイルは、通常、プログラムの基本的な機能を備えています。単純なプログラムは、多くの場合、実行可能ファイルだけで構成されます。実行可能ファイルから DLL、パッケージなどのサポート ファイルを呼び出すことで、アプリケーションを拡張できます。
RAD Studio の IDE には、次の 2 つのアプリケーション UI モデルがあります。
- シングル ドキュメント インターフェイス(Single Document Interface:SDI)
- マルチ ドキュメント インターフェイス(Multiple Document Interface:MDI)
シングル ドキュメント インターフェイス
SDI アプリケーションでは、通常、ドキュメント ビューは 1 つだけです。「SDI アプリケーション」を参照してください。
マルチ ドキュメント インターフェイス
MDI アプリケーションでは、1 つの親ウィンドウの中で、複数のドキュメント ウィンドウ(子ウィンドウ)を開けます。これは、表計算やワード プロセッサのようなアプリケーションでは一般的です。「MDI アプリケーション」を参照してください。
MDI アプリケーションの設計は、SDI アプリケーションよりも、多くの準備を必要とし、より複雑です。MDI アプリケーションは、クライアント ウィンドウ内に複数の子ウィンドウを生成します。つまり、メイン フォームが複数の子フォームを含みます。たとえば、Vcl.Forms.TForm オブジェクトの FormStyle プロパティを設定して、フォームが子フォーム(fsMDIChild)であるのか、メイン フォーム(fsMDIForm)であるのかを指定する必要があります。ベスト プラクティスは、子フォームの基底クラスを 1 つ決定し、このクラスから各子フォームを派生させることです。それ以外の場合は、子のフォーム プロパティをリセットする必要があります。多くの場合、MDI アプリケーションのメイン メニューにはウィンドウ ポップアップがあります。これには、カスケード、タイルなど、さまざまなスタイルで複数のウィンドウを表示する項目があります。子ウィンドウが最小化されると、そのアイコンは MDI の親フォームに配置されます。
コンソール アプリケーション
コンソール アプリケーションは、コンソール ウィンドウで動作する、グラフィカル インターフェイスを持たない、32 ビット プログラムです。このアプリケーションを使用するのは、一般に必要なユーザー入力があまりなく、機能セットも限定されている場合です。コード内に {$APPTYPE CONSOLE} と記述されたアプリケーションはすべて、専用のコンソール ウィンドウを開きます。
サービス アプリケーション
サービス アプリケーションはクライアント アプリケーションの要求に応じて、その要求を処理し、クライアント アプリケーションに情報を返します。サービス アプリケーションは通常、バックグラウンドで実行され、ユーザー入力をあまり必要としません。サービス アプリケーションには、Web サーバー、FTP サーバー、電子メール サーバーなどがあります。
パッケージと DLL の作成
ダイナミック リンク ライブラリ(DLL)は、コンパイル済みのコードのモジュールで、実行可能ファイルと連携してアプリケーションに機能を提供します。
パッケージは、Delphi アプリケーションか IDE、またはその両方で使用される、特別な DLL です。パッケージには、実行時型と設計時型という 2 つの型があります。実行時パッケージは、プログラムの実行中に、そのプログラムに機能を提供するためのものです。設計時パッケージは、IDE の機能を拡張します。
ほとんどのアプリケーションでは、パッケージは DLL より柔軟性が高く、作成が簡単です。ただし、以下の状況では、パッケージよりも DLL の方がうまく機能します。
- コード モジュールが Delphi アプリケーション以外から呼び出される場合
- Web サーバーの機能を拡張している場合
- サードパーティの開発者が使用するコード モジュールを作成している場合
- プロジェクトが OLE コンテナである場合
DLL ファイル間で Delphi の RTTI(実行時型情報)を渡す、または DLL から実行可能ファイルに RTTI を渡すことはできません。オブジェクトを 1 つの DLL からもう 1 つの DLL または実行可能ファイルに渡す場合、渡されるオブジェクトと共に is または as 演算子を使用できません。これは、is および as 演算子が RTTI を比較する必要があるからです。ライブラリからオブジェクトを渡す必要がある場合は、DLL の代わりにパッケージを使用してください。パッケージは、RTTI を共有できます。同様に、Web サービスは Delphi の RTTI に依存しているため、Web サービスでは DLL の代わりにパッケージを使用してください。