![](/img/trans.png)
[英]How to show an item in listbox is selected without user click (C++ FMX, C++ Builder)?
[英]How to set tab order in embedded frames? (C++ FMX, C++ Builder)
我正在尝试为主窗体中框架中的字段设置 Tab 键顺序,但是,编辑框永远不会被激活。 我唯一可以激活顶部编辑字段的是当我使用 SetFocus function 时。 我错过了什么?
相关代码
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Frame31->Edit1->TabOrder = 0;
Frame21->Rectangle1->TabOrder = 1;
Frame22->Rectangle1->TabOrder = 2;
Button1->TabOrder = 3;
}
带有标签的应用截图
组件层次结构
参考
http://docwiki.embarcadero.com/Libraries/Rio/en/FMX.Controls.TControl.TabOrder
编辑
更新了问题以反映应用程序的设计; 在应用程序屏幕截图中包含组件层次结构图像和更新的标签。
TabOrder
每个父母有效。 窗体是框架和按钮的父级。 所以,设置
Frame31->Taborder = 0;
Frame21->Taborder = 1;
Frame22->Taborder = 2;
Button1->TabOrder = 3;
所有TEdit
控件都有单独的父级,因此可以保留默认值
TabOrder = 1;`.
TabStop = True;
如果在任何框架上存在多个TEdit
(或其他控件),则必须指定这些控件之间的TabOrder
。
编辑
我必须为框架的TabStop = False
道歉。 在这种情况下它没有效果。 因此,只需将它们保留为默认True
我可以确认,当您有一个TRectangle
作为TEdit
的父级时, TEdit
将不会被标记。 我无法解释为什么会这样,我也没有立即在 Embarcaderos 质量报告系统上找到任何相关信息。
也许您可以删除矩形,或者直接将TEdit
重新排列为TFrame
的子级,然后将其放在TRectangle
上,这样它在视觉上看起来就像是TRectangle
的一部分。 这样做的缺点是您不能使用TRectangle
移动TEdit
。
我有点晚了,但我遇到了同样的问题。 解决方案是将 Rectangle 的未发布 TabOrder 属性设置为 0。
一切顺利,
阿吉85
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.