我的应用程序在侧面板中有一个大图形区域,有一些控件(滑块,按钮,文本编辑控件)。图形区域了解一些键盘命令。
我的问题是,当侧面板中的控件处于焦点时,主图形区域将不会接收任何键盘命令,因此这会使用户感到困惑。但是,对于某些控制,这是有意的,例如,文本编辑控件。
我想要的是在尽可能早的时候(我称之为“贪婪”焦点)自动返回图形区域的焦点 - 例如当文本编辑完成时(Enter键),或者当用户从组合框中选择了一个项目时。
我正在寻找一个干净而强大的策略来处理问题,使用Windows API或Borland Vcl。
如果您想分享您的想法,我将不胜感激。
答案 0 :(得分:0)
我还没有完全解决这个问题,但是在表单级别截取的一个非常有用的消息是CM_DIALOGKEY
(仅限Borland Vcl)。它会被发送给通常用于在UI中导航的每个键。也就是说,光标键,制表符和shift-tab,Enter和可能的其他。
我为CM_DIALOGKEY
添加了一个事件处理程序,它将焦点返回到图形区域,并将按键转发到该组件。这样,用户仍然可以通过键盘控制UI元素(对于文本输入很重要),但是光标键由图形区域处理。
答案 1 :(得分:0)
我知道你的意思我和一些BIG应用程序有类似的问题虱子CAD / CAM ...
我的解决方案简单,强大,我使用它多年。
1.对该gfx区域的所有击键处理
2.创建非聚焦功能(最好是成员但不需要)
我正在使用它:
//---------------------------------------------------------------------------
void main_unfocus()
{
Main->bt_unfocus->Visible=true;
Main->bt_unfocus->SetFocus();
Main->bt_unfocus->Visible=false;
}
//---------------------------------------------------------------------------
主要是表格指针
4.现在何时调用main_unfocus?
希望有所帮助