Delphi の Tapplication クラスの詳細説明 TApplication は、TComponent を継承し、Forms ユニット内で宣言されるクラスです。そして、Forms にはパブリック オブジェクト Application があります。そのメソッドとプロパティには、Windows オペレーティング システムでのアプリケーションの作成、実行、破棄など、確立された基本的な操作とプロパティが含まれているため、Delphi で Windows アプリケーションを作成する際のユーザーと Windows 環境の間のインターフェイスが簡素化されます。 TApplication は、次の 4 つの機能をカプセル化します。 1. Windows メッセージ処理。 2. メニューの高速化とキーボード処理。 3. 例外処理。 4. 状況に応じたオンライン ヘルプ。以下では、TApplication で一般的に使用されるプロパティ、メソッド、およびイベントを紹介します。 1. 属性 1. 1 属性 Active 属性 Active は、アプリケーションがアクティブであり、フォーカスがあるかどうかを示します。定義は次のとおりです: PRperty Active: ブール値。Active は読み取り専用のプロパティです。 Active は、アプリケーションがアクティブな場合は True、それ以外の場合は False です。 TApplication-tion のコンストラクターは、Active を True に設定します。ウィンドウまたはアプリケーションにフォーカスがある場合、そのアプリケーションはアクティブです。別のアプリケーションのウィンドウがアクティブになると、現在のアプリケーションは非アクティブになります。アプリケーションが閉じられると、TApplication のデストラクターは Active を False に設定します。 アプリケーションでは、タイマー (TTimer) を使用して属性 Active の値をチェックし、現在のアプリケーションがアクティブであるかどうかを判断し、適切な処理を行うことができます。指定された操作は、イベント OnActive およびイベント OnDeactive でも定義できます。 1.2 プロパティ DialogHandle プロパティ DialogHandle は、Delphi アプリケーションが非 Delphi ダイアログ ボックスを使用するためのメカニズムを提供します。定義は次のとおりです: property DialogHandle: HWnd; API 関数 CreateDialog を使用して非モーダル ダイアログ ボックスを作成する場合は、DialogHandle を使用する必要があり、対応する操作を実行するにはアプリケーション メッセージ ループ内のメッセージを表示する必要があります。たとえば、モードレス ダイアログ ボックスがアクティブ化メッセージ (WM_NCACTIVATE) を受信すると、そのハンドルを DialogHandle に割り当てることができ、ダイアログ ボックスが非アクティブ化メッセージを受信すると、DialogHandle は 0 に設定されます。 1.3 属性 ExeName 属性 ExeName には、実行可能なアプリケーションのファイル名とパス情報が含まれます。次のように定義されます。 property ExeName: string; ExeName は読み取り専用のプロパティです。 ExeName を使用して、アプリケーション実行可能ファイルのファイル名を取得します。 これは非常に便利な属性です。たとえば、CD 上のアプリケーション f:/media/myapp.exe を実行する場合、ディレクトリ f:/media/data/ 内のファイルにアクセスするか、アプリケーションが配置されているドライブ文字を確認する必要がある場合があります。 このとき、Delphi が提供する関数 ExtractFilePath および ExtractFileName を使用して属性 ExeName を解析し、必要な情報を取得できます。 1.4 属性ハンドル 属性ハンドルは、アプリケーションのメイン ウィンドウのハンドルへのアクセスを提供します。定義は次のとおりです: property Handle: HWND; Handle プロパティは、親ウィンドウ ハンドルを必要とする Windows API 関数を呼び出すときに使用する必要があります。たとえば、アプリケーション内のダイナミック リンク ライブラリ (DLL) は、ポップアップして最前面に表示できるように、親ウィンドウ ハンドルを必要とする場合があります。 Application.Handle を使用してアプリケーションの複数のウィンドウを形成し、アプリケーション内でこれらのウィンドウを最小化、復元、有効化または無効化できるようにします。注: VCL フォームを使用するダイナミック リンク ライブラリを作成する場合、メイン実行プログラムのメイン ウィンドウのハンドルをダイナミック リンク ライブラリの Application.Handle プロパティに割り当てる必要があります。これにより、ダイナミック リンク ライブラリの形式がメイン アプリケーションの一部になります。 EXE アプリケーションでは Application.Handle に値を決して割り当てないでください。 1.5 HelpFile 属性 HelpFile 属性は、アプリケーションがヘルプ コンテンツを表示するために使用するファイル名を指定します。定義は次のとおりです: property HelpFile: string; HelpFile を使用すると、アプリケーションは標準の Windows ヘルプ システムを使用してヘルプ ファイルを保持できます。 Windows は、HelpFile プロパティで指定されたヘルプ ファイルを表示します。アプリケーションでこれを実現するには、実行時に HelpFile プロパティにファイル名の値を指定するか、設計時に [プロジェクト|オプション] ダイアログ ボックスの [アプリケーション] ページでヘルプ ファイルを指定する必要があります。デフォルトでは、HelpFile は空の文字列 ('') であり、アプリケーションのヘルプ メソッドはヘルプを表示しようとするすべての試みを無視します。 HelpFile にコンテンツが含まれている場合、ヘルプ トピック メソッドは Windows ヘルプ システムを起動し、ファイル名に基づいてオンライン ヘルプを提供します。 注: アクティブなウィンドウのヘルプ ファイルが指定されている場合は、そのファイルがアプリケーションのヘルプ ファイルよりも優先して表示されます。 1.6 属性ヒント 属性ヒントは、[ヘルプ ヒント] ボックスに表示されるテキスト文字列を指定します。定義は次のとおりです: property Hint: string; TApplication.Hint プロパティは、マウスが移動するコントロールまたはメニュー項目のヒント値です。この属性には、アクション、エラー、またはその他の情報をユーザーに提供する文字列値を割り当てることもできます。したがって、Hint プロパティを使用すると、プロンプト情報をコントロールから別の表示領域に転送できます。たとえば、OnHint イベント ハンドラーを通じてステータス バーにプロンプトを表示します。このとき、Hint属性が読み取られます。アクションを実行しているときのアプリケーションの状態を簡単に説明します。このとき、Hint属性が設定されます。 OnHint イベントが発生すると、ヘルプ プロンプトが表示されます。したがって、TApplication の Hint プロパティにステータス バーのタイトルが割り当てられている場合でも、たとえば、ステータス バー コントロールのタイトルに Hint プロパティの現在の文字列値が表示される場合、それは OnHint イベントに起因するものである必要があります。ヒント文字列は、短いヒントと長いヒントの 2 つの部分で構成されます。短いプロンプトは簡潔なポップアップ プロンプトに使用され、長いプロンプトと短いプロンプトは垂直バー「|」で区切られ、ステータス バーに詳細なプロンプト情報を表示するために使用されます。ユニット Controls で提供される文字列関数 GetShortHint および GetLongHint を使用して、Hint 属性から短いヒントと長いヒントを取得できます。 注: アプリケーションが Hint プロパティを設定してイベントの発生に関する情報をユーザーに提供する場合、デフォルトでは、マウスがコントロール上に移動すると、Hint 文字列が Hint プロパティの値にリセットされることに注意してください。コントロールの。 1.7 プロパティ HintHidePause プロパティ HintHidePause は、マウスがコントロールまたはメニュー項目から離れる前にヘルプ プロンプトが非表示になるまでの時間間隔を指定します。次のように定義されます: property HintHidePause: Integer; HintHidePause を使用して待機時間をミリ秒単位で指定します。このプロパティは TApplication のコンストラクターで 2500 ミリ秒 (2.5 秒) に設定されます。コントロールまたはメニュー項目のヘルプ ヒントは、Hint プロパティで指定されます。 注: デフォルトでは、HintHidePause の値は HintPause 属性の値の 3 ~ 5 倍にあらかじめ決められている必要があります。 1.8 プロパティ MainForm プロパティ MainForm は、アプリケーションのメイン フォームを一意に識別します。これは次のように定義されます: property MainForm: TForm; MainForm プロパティで指定されたフォームは、アプリケーションのメイン ウィンドウと同じである必要はありません。 MainForm プロパティの値は、CreateForm メソッドによって作成されるすべてのフォームの中で最初のフォームである必要がありますが、そのフォームはアプリケーションのメイン ウィンドウでなくてもかまいません。新しいプロジェクトを作成すると、MainForm 属性値が自動的に Form1 に設定されます。設計時に、[プロジェクト] | [オプション] ダイアログ ボックスの [フォーム] ページで、複数のフォームの 1 つを MainForm として指定できます。 MainForm プロパティは読み取り専用であるため、実行時に変更できません。メイン フォームは、アプリケーション テーマによって作成される最初のフォームです。メイン フォームを閉じるとアプリケーションは終了します。アプリケーションでは、Application.MainForm.Close メソッドを呼び出してアプリケーションを終了できます。Application.MainForm.Top や Application.MainForm.Left などのプロパティの値を取得して、現在の位置とサイズを決定できます。アクティブなウィンドウ。 1.9 プロパティ ShowMainForm プロパティ ShowMainForm は、アプリケーションの起動時にメイン フォームを表示するかどうかを決定します。これは次のように定義されます: property ShowMainForm: Boolean; アプリケーションは ShowMainForm プロパティを使用して、メイン フォームを表示するかどうか、またいつ表示するかを制御します。 TApplication のコンストラクターは ShowMainForm を True に設定します。デフォルトでは、MainForm プロパティで指定されているように、メイン フォームが表示されます。 アプリケーションの起動時にメイン フォームを非表示にする必要がある場合は、メイン プロジェクト ファイルで Application.Run を呼び出す前に ShowMainForm を False に設定し、メイン フォームの Visible プロパティ値が False であることを確認する必要があります。これは、オートメーション サービスの開始時にサーバー プログラムのメイン フォームを非表示にするなど、OLE オートメーション サーバーの多くの実装で役立ちます。 また、アプリケーション起動時にフラッシュ画像(Flash)を表示してアプリケーション環境の準備を行い、メインフォームの表示を無効にする必要がある場合も、ShowMainForm属性を使用することで実現できます。たとえば、Delphi が起動すると、メイン フォームの表示が無効になります。 1.10 属性 Terminated Terminated 属性は、プログラムを終了する Windows メッセージ WM_QUIT をプログラムが受信したかどうかを報告します。定義は次のとおりです。 プロパティ Terminated: ブール値 Terminated は読み取り専用プロパティです。このプロパティは主に、アプリケーションが Windows メッセージの処理を停止する必要がないように、ProcessMessages メソッドを呼び出すときに使用されます。 ProcessMessages メソッドがメッセージ WM_QUIT を受信すると、Terminated が True に設定されます。 Delphi アプリケーションは、メイン フォームまたはアプリケーションが閉じられているか、Terminate メソッドが呼び出されているため、常にメッセージ WM_QUIT を受け取ります。 アプリケーションが多くのシステム リソースを消費する非常に集中的な操作を実行する場合は、Application-on.ProcessMessages メソッドを定期的に呼び出し、プロパティ Application.Terminated をチェックして、アプリケーションを終了するために操作を終了する必要があるかどうかを判断する必要があります。 。 1.11 UpdateFormatSettings プロパティ UpdateFormatSettings プロパティは、ユーザーがシステム構成を変更したときにアプリケーションがフォーマット設定を自動的に更新するかどうかを指定します。次のように定義されます: property UpdateFormatSettings: Boolean; UpdateFormatSettings プロパティを使用すると、アプリケーションは形式設定の自動更新を制御できます。 TApplication のコンストラクターは、このプロパティを True に設定します。 UpdateFormatSett-ings プロパティは、アプリケーションがメッセージ WM_WININICHANGE を受信したときにチェックされます。ローカル Windows 設定であるデフォルトの形式設定を使用することをお勧めします。 UpdateFormatSe-ttings を False に設定すると、Delphi アプリケーションの実行中に形式設定が変更されないようにすることができます。 1.12 UpdateMetricSettings 属性 UpdateMetricSettings 属性は、プロンプト ウィンドウのフォントやアイコン タイトルなどの関連設定を更新するかどうかを示します。定義は次のとおりです: property UpdateMetricSettings: Boolean; UpdateFormatSettings プロパティは、システムのプロンプト ウィンドウのフォントやアイコン タイトルなどの設定の変更が、アプリケーションの関連設定の変更に反映されるかどうかを示します。 TApplication のコンストラクターは、UpdateMetricSettings の初期値を True に設定します。 2. メソッド 2.1 メソッド BringToFront メソッド BringToFront は、アプリケーション内で最後にアクティブだったウィンドウをデスクトップ上のすべてのウィンドウの前面に設定します。その定義は次のとおりです。 プロシージャ BringToFront; BringToFront メソッドを使用して、メイン フォームに属する最新のアクティブ ウィンドウを検索し、それを前面に表示します。 BringToFront メソッドは、最前面のウィンドウになる前に、ウィンドウが表示されているか (Visible)、有効か (Enabled) かをテストして確認することもできます。 たとえば、アプリケーションがメールを受信するとき、特殊なハンドラーをアクティブにして Windows デスクトップの最前面に表示する必要がある場合があります。現時点では、Application.BringToFront メソッドを呼び出してこれを実現できます。 2.2 CreateFormメソッド CreateFormメソッドは、新規フォーム(フォーム)を作成するために使用します。これは次のように定義されます:procedure CreateForm(FormClass: TFormClass; var Reference); Delphi アプリケーションは常に CreateForm メソッドを呼び出します。したがって、プログラマが CreateForm メソッドを直接呼び出す必要はほとんどありません。一般的な Delphi プロジェクトには、プロジェクトのメイン コード部分に CreateForm メソッドへの呼び出しが 1 つ以上含まれており、フォーム デザイナーの使用時にフォームの作成を自動的に制御します。実行時に CreateForm メソッドを呼び出して、フォームを動的に作成することもできます。 CreateForm メソッドは、FormClass パラメーターに基づいて新しい指定されたフォームを作成し、そのフォームを変数パラメーター Reference に割り当てます。 新しく作成されたフォームの所有者は、オブジェクト Application です。 アプリケーションは、デフォルトで、CreateForm を呼び出して作成された最初のフォームをプロジェクトのメイン フォームとして設定します。 2.3 メソッド HandleException HandleException メソッドは、アプリケーション例外のデフォルトのハンドルを提供します。これは次のように定義されます。アプリケーションで OnException イベント ハンドラーを使用すると、カスタム コードで他の例外操作を制御できます。アプリケーション コードで、例外がすべての try ブロックをスキップした場合、アプリケーションは自動的に HandleE-xception メソッドを呼び出し、エラーが発生したことを示すダイアログ ボックスを表示します。例外オブジェクトが EAbort でない場合、Han-dleException は OnException ハンドル (存在する場合) を呼び出します。そうでない場合は、ShowException が呼び出され、エラーを促すダイアログ ボックスが表示されます。 2.4 メソッド UnhookMainWindow UnhookMainWindow メソッドは、HookMainWindow メソッドによってメインフォームにハングしたプログラムを解放するために使用します。定義は次のとおりです: type TWindowHook = function(var Message: TMessage): Boolean of object;procedure UnhookMainWindow(Hook: TWindowHook); フック ウィンドウを解放するには、UnhookMainWindow を使用します。ダイアログボックスのプロシージャをパラメータHookに指定します。 TwindowHook 型は、HookMainWindow メソッドを呼び出すためのパラメータです。このパラメータは、Delphi 以外のダイアログ ボックスでダイアログ プログラムを呼び出すためのメソッド ポインタです。ダイアログ プログラムは、ダイアログ ボックスのメッセージを処理するという点でウィンドウ プログラムに似ていますが、構文が異なります。 3. イベント 3.1 イベント OnActivate OnActivate イベントは、アプリケーションがアクティブになるときに発生します。定義は次のとおりです: type TNotifyEvent = プロシージャ (Sender: TObject) of object; property OnActivate: TNotifyEvent; OnActive イベントを使用して、アプリケーションがアクティブになったときの特別な処理を指定します。 Windows アプリケーションは、最初に実行されるとき、またはフォーカスが別の Windows アプリケーションから現在のアプリケーションに戻されるときにアクティブになります。 3.2 イベント OnDeactivate OnDeactivate イベントは、アプリケーションが非アクティブになったときに発生します。 type TNotifyEvent = プロシージャ (Sender: TObject) of object; property OnDeactivate: TNotifyEvent; OnDeactive イベントは、アプリケーションが非アクティブになる直前にトリガーされ、イベント ハンドラーで指定された特別な処理を完了します。現在のアプリケーションの OnDeactive イベントは、ユーザーが現在のアプリケーションから別のアプリケーションに移行するときに発生します。 3.3 イベント OnException イベント OnException は、アプリケーションでハンドルレス例外が発生したときに発生します。 type TExceptionEvent = プロシージャ (Sender: TObject; E: Exception) of object; property OnException: TExceptionEvent; OnException イベントを使用すると、アプリケーションでハンドラのない例外が発生したときのデフォルトのアクションを変更できます。 TApplication.HandleException メソッドでは、OnException イベント ハンドラーが自動的に呼び出されます。 OnException イベントは、メッセージ処理中に発生する例外を処理するためにのみ使用されます。 Application.Run の実行前または実行後に例外が発生しても、OnException イベントは発生しません。 アプリケーション コードの try ブロックで例外が無視された場合、アプリケーションは自動的に HandleException メソッドを呼び出します。例外オブジェクトが EAbort でない限り、HandleException は OnException ハンドル (存在する場合) を呼び出します。そうでない場合は、ShowException が呼び出されて、エラーを促すダイアログ ボックスが表示されます。 TExceptionEvent 型は OnException イベントの型であり、アプリケーションで例外を処理するメソッドを指します。パラメータ Sender は例外をスローするオブジェクトで、パラメータ E は例外オブジェクトです。 3.4 イベント OnHelp OnHelp イベントは、アプリケーションがヘルプ要求を受信したときに発生します。定義は次のとおりです: type THelpEvent = function (Command: Word; Data: Longint; var CallHelp: Boolean): Boolean of object; property OnHelp: THelpEvent; 要求があったときに特殊な処理を完了するイベント ハンドラーを作成します。助けのために。 HelpContext メソッドと HelpJump メソッドは、自動的に OnHelp イベントを発生させます。イベントの発生後に VCL が WinHelp を呼び出せるようにするには、CallHelp を True に設定します。VCL が WinHelp を呼び出さないようにするには、CallHelp を False に設定します。 Delphi アプリケーションのヘルプ関連のメソッドはすべて、OnHelp イベントを経由します。 WinHelp は、OnHelp イベントの CallHelp パラメータが True を返した場合、または OnHelp イベントが有効なハンドルに割り当てられていない場合にのみ呼び出されます。 3.5 イベント OnHint マウス ポインタがコントロールまたはメニュー項目内を移動し、コントロールまたはメニュー項目がヘルプ プロンプトを表示できる場合、イベント OnHint が発生します。定義は次のとおりです: type TNotifyEvent = プロシージャ (Sender: TObject) of object; property OnHint: TNotifyEvent; OnHint で記述されたイベント ハンドラは、OnHint イベントが発生したときに指定された操作を実行できます。ユーザーがマウス ポインターをコントロール上に置き、コントロールの Hint プロパティの値が空の文字列 ('') ではない場合、OnHint イベントが発生します。 OnHint イベントは通常、コントロールまたはメニュー項目の Hint プロパティの値をパネル コントロール (TStatusBar など) のタイトルとして表示するために使用され、パネルがステータス バーとして使用されます。 OnHint イベントが発生すると、通常、Hint 属性はヘルプ ヒントおよび他の場所に表示される長いヒントとして指定されます。 3.6 イベント OnIdle OnIdle イベントは、アプリケーションがアイドル状態になると発生します。定義は次のとおりです: type TIdleEvent = プロシージャ (Sender: TObject; var Done: Boolean) of object; property OnIdle: TIdleEvent OnIdel を使用して、アプリケーションがアイドル状態のときに指定された操作を完了するイベント ハンドラを作成します。アプリケーションは、コードを実行していないときはアイドル状態になります。たとえば、アプリケーションはユーザー入力を待機している間はアイドル状態になります。 TIdelEvent タイプは OnIdel イベントのタイプで、アプリケーションがアイドル状態のときに実行されるメソッドを指します。オブジェクト TIdelEvent には、デフォルトで True に設定される変数 Done があります。 Done が True の場合、OnIdel が返されたときに Windows API 関数 WaitMessage が呼び出されます。 WaitMessage を使用すると、アプリケーションのメッセージ キューに新しいメッセージが表示されるまで、他のアプリケーションが制御フォーカスを取得します。 Done パラメータが False で、アプリケーションがビジー状態ではない場合、アプリケーションは他のアプリケーションが制御フォーカスを取得することを許可しません。アプリケーションがアイドル状態になると、OnIdel イベントは 1 回だけ発生し、Done パラメーターが True に設定されるまで次の OnIdel イベントは発生しない可能性があります。アプリケーションによって Done を False に設定すると、システム全体のパフォーマンスに影響を与える可能性がある不規則な CPU 時間カウントが排除されます。 3.7 イベント OnMessage は、アプリケーションが WINDOWS メッセージを受信したときに生成されます。このイベントは次のように定義されます: type TMessageEvent = process (var Msg: TMsg; var Handled: Boolean) of object; このイベントは、WINDOWS メッセージを受信するために使用されます。プログラムによって WINDOWS に送信されるすべてのメッセージを受信できます。このイベントは、アプリケーションがメッセージを受信したときに生成されます。変数 Msg は WINDOWS メッセージ タイプです。