- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在Windows平台的Delphi XE5 Update 2中编写Firemonkey HD程序。我有一个选项卡控件,表单上有一个 tabitem,并且 tabitem 中有一些编辑框。我相应地设置了 Taborder(0,1,2,..),当我输入 Edit1 并点击 Tab 时,Edit1 失去焦点,但 Edit2 没有获得焦点。
我尝试将编辑框放在主窗体和面板中,它们可以正常工作,当我在 edit1 中并点击选项卡时,它会转到 edit2 等,但在选项卡控件中的 tabitem 上却不会。
有谁知道这个问题的解决方法或者可能是我错过的设置?
感谢您的帮助
最佳答案
这是该问题的实际修复方法,我也在 http://vldgeorgiev.wordpress.com/2014/04/01/delphi-tab-key-and-taborder-not-working 中对此进行了描述。
它位于 FMX.TabControl.pas
单元中 TTabItem 的源代码中。
有一个名为 TTabItem.DoAddObject
procedure TTabItem.DoAddObject(const AObject: TFmxObject);
var
ControlTmp: TControl;
begin
if Assigned(FContent) and not AObject.Equals(FContent) and not AObject.Equals(ResourceLink) then
begin
FContent.AddObject(AObject);
...
end;
虽然应该如此
procedure TTabItem.DoAddObject(const AObject: TFmxObject);
var
ControlTmp: TControl;
begin
if Assigned(FContent) and not AObject.Equals(FContent) and not AObject.Equals(ResourceLink) then
begin
FContent.AddObject(AObject);
AddToTabList(AObject); // This line is missing in the original source
...
end;
问题在于,当表单的 KeyDown
方法处理 Tab 键时,它会调用 AdvanceTabFocus
方法,该方法会检查 FTabList
中的任何子键成分。由于 TTabItem 的原始 DoAddObject
方法缺少一行,因此它从未将子控件添加到该列表中,因此 AdvanceTabFocus 方法无法找到下一个控件。相反,它将焦点设置到窗体上的第一个控件。
要使用此修复,请将修改后的 FMX.TabControl.pas 单元复制到项目文件旁边,或者编译 DCU 并将它们放置在 Delphi 安装文件夹的 Lib... 子文件夹中。如果您没有资源,那么您就不走运了。
顺便说一句,设置 TabOrder 数字并不总是足够的。您必须右键单击并使用“Tab order...”,甚至在表单文本中手动重新排序控件(使用 Alt-F12)
关于Delphi firemonkey tabstop 选项卡控件中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21782843/
Update: A solution was found using Ingo Karkat's troubleshooting I was able to identify where my set
我设置了IsTabStop至 False ,但是 Tab仍然导航到扩展器。 任何想法我做错了什么? 最佳答案 它看起来像是 Expander 模板中的一个错误: http://socia
我们有一个表单和文本框。所有控件的 tabindex 都设置正确并且 TabStop = true。当某些文本框获得焦点并且当我按下 Tab 键时,焦点不会设置在下一个文本框上。 注意:控件位于面板及
我在表单上放置了一个 LinkLabel,默认情况下它具有 TabStop=true。我将 TabStop 更改为 false 并关闭表单。然后再次打开表单 - TabStop 为 true。 会发生
我正在Windows平台的Delphi XE5 Update 2中编写Firemonkey HD程序。我有一个选项卡控件,表单上有一个 tabitem,并且 tabitem 中有一些编辑框。我相应地设
我有一个带有 3 个组框的 WinForm,一个带有组合框,两个带有单选按钮。我将所有这些控件及其子控件设置为“TabStop = false”,但是当我使用 TAB 循环时,最后两个组框中当前选中的
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 关于您编写的代码问题的问题必须在问题本身中描述具体问题 — 并且包括有效代码 以重现它。参见 SSC
我知道使用 isDialogMessage() 函数我们可以将焦点从一个控件切换到另一个控件。我的疑问是 是否可以覆盖控件应从第一个按钮聚焦到第三个按钮。 如果可能如何自定义 WS_TABSTOP 属
当我在组合框中切换时,它们会触发两个制表位。 标签 #1 内部内容被选中: 标签 #2 整个控件被选中: 组合框 XAML 我尝试将 IsTabStop=False 和 Focusable=Fals
如果焦点在点击事件或制表位上触发,如何确定 jQuery 上的焦点事件?我有这个焦点事件,如果焦点由制表位触发,我将执行某些操作,如果是点击,我将不执行。 伪代码 $('a').focus(funct
我有一个 WPF 应用程序,它在垂直堆栈面板中有一系列按钮,类似于 DVR 菜单的外观。我想出了如何制作动画,当加载每个新菜单页面时,按钮/控件都{unfade,fall,deblur,whateve
我每天使用 MacVim 记下一些笔记。第二行在日期后缩进 8 个空格(制表位),如下所示。 Dec 15th (Sun): John got a minor injury while
我尝试将 Panel.TabStop 属性切换为 true 但它不会影响任何东西。 如何在面板中启用TabStop? 最佳答案 TabStop 属性对 Panel 控件没有影响,因为它是一个容器对象。
我正在用 C# 构建一个电子邮件客户端,允许用户发送 HTML 电子邮件。我有一些通用的格式化功能,包括插入项目符号列表和编号列表的选项。我想允许用户在控件中使用 Tab 键,但也可以使用 Tab 键
我创建了一个扩展 GroupBox 的自定义控件。此控件支持折叠和展开,我使用 GroupBoxRenderer 和 ButtonRenderer 使其看起来像一个典型的 GroupBox,在角落里有
Python 的 len() 和像 string.ljust() 这样的填充函数不是制表位感知的,即它们像对待任何其他单角字符一样对待 '\t' ,并且不要将 len() 舍入到最接近的制表位倍数。示
我有一个我目前正在处理的项目,其中编码标准是使用 2 个空格缩进。但是,在其他项目中,我使用 4 个空格缩进。 有没有一种简单的方法可以告诉 vim 某个目录中的所有文件都应该有 2 个空格的制表位?
我正在使用 Delphi7,我正在尝试实现一个 LinkLabel,就像您可以在 Windows Vista 及更高版本的控制面板下找到的那样。 更改悬停时的光标/颜色非常简单,我唯一需要做的就是使
我在 NSTextView 中观察到奇怪的行为。 假设有多行(通过按 Enter 键分隔),当我持续按 Tab 键时,整个段落会变成项目符号行。 我确实设置了 tabStops 并使标尺能够看到 ta
通常,人们在 vim 中使用 gg=G 来自动切换 C/C++/Java 代码或实际上任何类型的代码。 但是,我在 vim 的默认设置中将 tabstop 变量更改为 tabstop=2,这样每当我按
我是一名优秀的程序员,十分优秀!