1

ESCC++ ビルダーのフォーム アプリケーションでキーが押されたときに閉じる (または終了する) 関数を実装するにはどうすればよいですか?

また、フォームには多くのコンポーネントがあることに注意してください。空のフォームだけにすることはできません。このコードを使用しようとしましたが、 を押すたびに機能しませんESC

void __fastcall TForm1::FormKeyPress(TObject *Sender, System::WideChar &Key) {
if (Key == VK_ESCAPE) {
    this->Close();
}}

フォーカスが常にフォームにあるとは限らないため、上記のコードは機能しません。また、EditBox のようなコンポーネントがさらにある場合は、VK_ESCAPEすべてのイベントで無効にして目的の関数を参照する必要があります (もちろん、これは弱い解決策です)。

4

2 に答える 2

3

TForm::KeyPreviewプロパティとイベントを使用するのTForm::OnKeyPressが最善のアプローチですが、別の方法TButtonとして、フォームに非表示を設定し、そのプロパティをtrueに設定してから、そのイベントCancelを呼び出すことができます。Close()OnClick

于 2012-08-08T18:18:46.777 に答える
3

Form の KeyPreview プロパティを true に設定します。このようにして、アクティブなコントロールの前に、フォーム上でキーボード イベントが発生します。

于 2012-08-08T15:39:49.857 に答える