質問

のデルファイする。 Application.MessageBox、Windows.MessageBoxまたはDialogs.MessageDlgの違いは何ですか? またはコンピュータのメモリを使用する方が効率的である?

役に立ちましたか?

解決

Windows.MessageBoxののあるWinAPIのメッセージボックス、Application.MessageBoxはラッパです。 Dialogs.MessageDlgしかしVCLフォームです。あなたは、メモリやスレッドの安全性を懸念しているのであれば、最初の二つは、より適している可能性があります。 MessageDlg OTOHは(もちろん、私見)を使用することがより柔軟かつ容易である。

他のヒント

Windowsのメッセージボックスは、OS(はい、いいえ、キャンセル...)によってローカライズされ、MessageDlgは手でローカライズすることができます。

なぜあなたは、メッセージボックスで使用されるメモリのわずかな量を気にしていますか? Delphiのアプリを書くときとあなた自身についてしなければならない他の多くのものがあります。いずれにせよ、私の知る限り、これらの承知しているように、すべてのWindowsメッセージボックスAPIの周りの薄いラッパーです。

私の記憶が正しければ、デルファイVCLのメッセージボックスとWindowsのものbewteen一つの重要な違いがあります。

- あなたは(例えばMB_SYSTEMMODAL)サービスされるからアプリケーションメッセージを停止フラグをspecifiyすることができます。デルファイMessageDlgはまだでも、画面上ながら、タイマーイベントを発生させます - これは、あなたのアプリケーションを「凍結」する必要がエラーを表示するのに役立ちます。参照してください。

する

メモリ使用量は、メッセージボックスで、このような問題になることはありません。私はConsts.pasユニットからそれをローカライズすることができるので、私は個人的VCLフォーム(Dialogs.MessageBox)を好みます。また、私はこのように「今後このメッセージを表示しない」のチェックボックスや他のもののように、それにカスタムコントロールを追加することができるという事実から、それが好きです。

彼らはすべて同じことを行う - )(WinAPIの関数メッセージボックスを呼び出します。リソース消費量に差があれば、最小限です。あなたが気にならばそんなにあなたは直接)(メッセージボックスを呼び出すことができます - ちょうど「Windowsが使用しています」が含まれる。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top