首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当focused属性返回始终为False时,如何确定TCustomControl是否被聚焦?

当focused属性返回始终为False时,如何确定TCustomControl是否被聚焦?
EN

Stack Overflow用户
提问于 2013-04-02 03:30:47
回答 2查看 1.3K关注 0票数 0

我们正在使用修改后的TToolWindow97 = class(TCustomControl)组件。

我只能在TForm.Components上找到它。而且在TForm.Controls上也没有。因此,当TToolWindow97被聚焦时,TForm.ActiveControl为nil且为TToolWindow97.Focused = False。我需要知道它是什么时候聚焦的。

我还试图在TToolWindow97上找到任何有焦点的控件。但它们都返回Focused = False

Focused属性返回always False时,如何确定TToolWindow97 (继承自TCustomControl)是否为焦点

附注:TToolWindow97窗口在图像上有阴影。只有聚焦的TToolWindow97窗口才有-所以焦点是存在的。我可能会把所有的控制都集中在它上面。但它们都返回Focused = False。我也不知道原因。

非常感谢你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-03 23:03:33

1)。当TBToolWindow被聚焦或未被聚焦时,扫描以下句柄:

代码语言:javascript
运行
复制
        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转换为十六进制,并在间谍上找到它们。

4)。看看类。因此,当TTBToolWindow被聚焦时,aHandle的类是TBFloatingWindowParent。

5)。编写代码以通过TBFloatingWindowParent控件查找正确的活动浮动窗口(TTBToolWindow)。

票数 0
EN

Stack Overflow用户

发布于 2013-04-02 04:41:20

工具栏按钮没有焦点。在图像中,可以清楚地看到网格控件具有焦点-它有一个虚线焦点矩形,单元格使用焦点颜色突出显示。

用鼠标指向带有阴影图像的"15“按钮。它处于“悬停”或“热”状态,而不是“焦点”状态。在代码中,状态的名称是bsMouseIn,它存储在FState字段中;该字段具有受保护的可见性,不会通过任何公共属性或方法公开。您可能会对OnMouseEnterOnMouseExit事件感兴趣。

工具栏按钮很少获得焦点。它们应该只用鼠标来操作。要使用键盘操作它们,您需要按下与其相关的快捷键组合。特定的按钮控件TToolbarButton97绝对不会获得焦点,因为它是从TGraphicControl继承下来的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15750352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档