我正在使用C++Builder XE4 32位VCL平台。我正在为Windows操作系统写作。
我有一个MainForm,上面有很多组件。 当我按下键盘箭头键并触发窗体的OnShortCut
事件时,如何确定哪个组件具有程序焦点?
我有不同的行动,必须根据哪个组件具有重点来采取。
void __fastcall TMainForm::FormShortCut(TWMKey &Msg, bool &Handled)
{
//determine which component has the focus.
}
使用全局Screen->ActiveControl
属性:
指示哪个控件当前在屏幕上具有输入焦点。
阅读
ActiveControl
以了解活动窗体中的哪个窗口控件对象当前从键盘接收输入。
void __fastcall TMainForm::FormShortCut(TWMKey &Msg, bool &Handled)
{
TWinControl *ctrl = Screen->ActiveControl;
if (ctrl == Control1)
{
// do something...
}
else if (ctrl == Control2)
{
// do something else...
}
// and so on...
}
或者,您可以使用窗体自己的ActiveControl
属性:
指定具有窗体焦点的控件。
使用
ActiveControl
获取或设置具有焦点在窗体上的控件。在应用程序中的给定时间,只有一个控件可以具有焦点。如果窗体没有焦点,则窗体上的控件
ActiveControl
,当窗体获得焦点时,该控件将获得焦点。
void __fastcall TMainForm::FormShortCut(TWMKey &Msg, bool &Handled)
{
TWinControl *ctrl = this->ActiveControl;
if (ctrl == Control1)
{
// do something...
}
else if (ctrl == Control2)
{
// do something else...
}
// and so on...
}