1

ESC在 C++ builder 的表单应用程序中按下键时,如何实现关闭(或退出)功能?

另外,请注意表单将包含许多组件;它不能只是一个空表格。我尝试使用此代码,但每次按 时它都不起作用ESC

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

上面的代码不起作用,因为焦点并不总是在表单上,​​如果您有更多像 EditBox 这样的组件,则必须禁用VK_ESCAPE每个事件并引用所需的函数(当然,这是一个弱解决方案)。

4

2 回答 2

3

将 Form 的 KeyPreview 属性设置为 true。这样,键盘事件在活动控件之前发生在窗体上。

于 2012-08-08T15:39:49.857 回答
3

使用TForm::KeyPreview属性和TForm::OnKeyPress事件是最好的方法,但另一种方法是TButton在表单上放置一个 hidden 并将其Cancel属性设置为 true,然后您可以调用Close()它的OnClick事件。

于 2012-08-08T18:18:46.777 回答