如何在嵌入式框架中设置制表符顺序? (C ++ FMX,C ++ Builder)

问题描述 投票:0回答:1

我正在尝试为主窗体内框架中的字段设置选项卡顺序,但是,永远不会激活编辑框。我只有在使用SetFocus函数时才能激活顶部编辑字段。我想念什么?

相关代码

__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    Frame31->Edit1->TabOrder = 0;
    Frame21->Rectangle1->TabOrder = 1;
    Frame22->Rectangle1->TabOrder = 2;
    Button1->TabOrder = 3;
}

带有标签的应用屏幕截图

enter image description here

组件层次结构

enter image description here

参考

http://docwiki.embarcadero.com/Libraries/Rio/en/FMX.Controls.TControl.TabOrder

编辑

更新的问题以反映应用程序的设计;在应用程序屏幕截图中包含了组件层次结构图像和更新的标签。

c++ firemonkey c++builder tab-ordering
1个回答
1
投票

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的父级时,[T0]将不会被制表。我无法解释为什么会这样,并且我没有在Embarcaderos质量报告系统上立即找到任何有关此的信息。

也许您可以删除矩形,或者直接将TEdit重新排列为TEdit的子元素,然后将其放置在TFrame上,这样看起来就好像是TRectangle的一部分。缺点是您可能会请勿将TRectangleTEdit一起移动。

TRectangle

© www.soinside.com 2019 - 2024. All rights reserved.