在c ++ builder中实现keypress上的close函数

时间:2012-08-08 10:57:26

标签: c++ winforms c++builder keypress vcl

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

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

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

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

2 个答案:

答案 0 :(得分:3)

将Form的KeyPreview属性设置为true。这样,键盘事件就会在活动控件之前出现在表单上。

答案 1 :(得分:3)

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