繁体   English   中英

如何在嵌入框架中设置标签顺序? (C++ FMX、C++ 生成器)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM