Delphi 如何判断用户是否在框架中使用了选项卡或单击了框架上的组件

Delphi 如何判断用户是否在框架中使用了选项卡或单击了框架上的组件,delphi,Delphi,我对TFrame子体有一个问题,当用户将标签插入到帧中时,帧本身接收焦点,而不是帧上的第一个控件 有没有办法知道用户是否点击了框架内的组件,而不是用户实际点击了框架内的组件 我已经实现了OnNet事件,可以将焦点设置为第一个控件,但这可能会将焦点从用户单击的控件(在框架上)移动。将框架的TabStop属性设置为False,同时为框架内的控件保留TabStop=True。这将改变你问题的性质,也许会完全消除它。换句话说,帧将不再接收焦点,您不必编写额外的代码来设置第一个子控件的焦点。现在,如果要在

我对TFrame子体有一个问题,当用户将标签插入到帧中时,帧本身接收焦点,而不是帧上的第一个控件

有没有办法知道用户是否点击了框架内的组件,而不是用户实际点击了框架内的组件


我已经实现了OnNet事件,可以将焦点设置为第一个控件,但这可能会将焦点从用户单击的控件(在框架上)移动。

将框架的
TabStop
属性设置为False,同时为框架内的控件保留TabStop=True。这将改变你问题的性质,也许会完全消除它。换句话说,帧将不再接收焦点,您不必编写额外的代码来设置第一个子控件的焦点。现在,如果要在帧内的控件接收焦点或被单击时执行某些代码,可以实现该控件的OnEnter或OnClick事件(而不是帧的OnEnter事件)。

帧不应作为制表位获取焦点。您是否正确设置了表单的选项卡顺序?
t frame.TabStop
是否仍为
False
(默认值)?我刚刚做了一个快速测试,在一个新表单上使用一个
TEdit
,在一个
TEdit
上使用一个新的测试
TFrame
,将表单的
ActiveControl
设置为自己的编辑控件,将选项卡顺序设置为表单的TEdit,然后是框架,然后运行它。我可以在两次编辑(一次在窗体上,一次在框架上)之间重复执行tab操作,而在框架上没有任何停顿。您是否尝试过将框架的TabStop属性设置为False,同时为框架内的控件保留TabStop=True?我认为,当用户在帧中按Tab键时,焦点将由TabOrder值最低的子控件接收。。。也许我对你的处境的理解中遗漏了什么。太棒了,太明显了!出于某种原因,我的基本TFrame后代确实有TabStop=True。关闭该选项并在dfms中查找所有引用并修复它们之后,问题就解决了。感谢大家。@user2913735尽管你的问题很简单,但我还是对它投了赞成票。请您考虑退货。(:-D)@Sam:user291375可能还没有足够的代表投票。并不是所有人都相信提高投票率和接受率。@Marjannema如果普通人对彼此有更好的态度,欧洲和美国目前的高失业率不会是悲剧的一半。