我们正在使用修改后的TToolWindow97 = class(TCustomControl)
组件。
我只能在TForm.Components
找到它。 TForm.Controls
上没有它。因此,当TForm.ActiveControl
关注时,TToolWindow97.Focused = False
为零,TToolWindow97
为TToolWindow97
。我需要知道什么时候它是专注的。
我还尝试在Focused = False
找到任何专注的控件。但所有人都返回TToolWindow97
。
当TCustomControl
属性始终返回Focused
时,如何确定False
(继承自TToolWindow97
)是否重点关注?
P.S。 TToolWindow97
窗口在图像上有阴影。只有专注的Focused = False
窗口拥有它 - 所以焦点存在。我可以集中精力控制它。但所有人都返回{{1}}。我不知道为什么。
非常感谢您的帮助!
答案 0 :(得分:4)
工具栏按钮没有焦点。在图像中,很明显网格控件具有焦点 - 它具有点状焦点矩形,并且单元格以焦点颜色突出显示。
带有阴影图像的“15”按钮用鼠标指向。它处于“悬停”或“热”状态,而非“焦点”状态。在代码中,状态名称为bsMouseIn
,并存储在FState
字段中;该字段具有受保护的可见性,不会通过任何公共属性或方法公开。您可能对OnMouseEnter
和OnMouseExit
事件感兴趣。
工具栏按钮很少获得焦点。它们只能用鼠标操作。要使用键盘操作它们,您需要按下相关的快捷键组合。特定的按钮控件TToolbarButton97
绝对不会获得焦点,因为它来自TGraphicControl
。
答案 1 :(得分:0)
1)。当TBToolWindow聚焦时扫描以下句柄而不是:
aHandle := (Sender as TForm).Handle;
aHandle := aVisible.Handle;
aHandle := GetForegroundWindow;
aHandle := GetActiveWindow;
aHandle := Screen.ActiveForm.Handle;
aHandle := Application.ActiveFormHandle;
所以,区别仅在于Screen.ActiveForm.Handle。
2)。安装Microsoft Spy。
3)。将Screen.ActiveForm.Handle转换为HEX并在Spy上找到它们。
4)。看看课程。因此,当TTBToolWindow聚焦时,aHandle的类是TBFloatingWindowParent。
5)。编写代码以通过TBFloatingWindowParent控件查找正确的活动浮动窗口(TTBToolWindow)。