如何解决C ++ Builder 10.4,FMX:表单TabOrder问题
在控制字段之间切换的 Tab 功能似乎不适用于C ++ Builder 10.4(带有修补程序1、2和3),如果包含某些taborder字段的表单控件获得了另一个父级以编程方式控制表单。
通过创建一个多设备应用程序可以很容易地重现该内容,该应用程序在表单上只有2个TLayout
-控件和2个TEdit
-控件:
复制步骤:
- 创建一个新的多设备应用程序,空白应用程序。这将创建一个带有空白表单的
Unit1
。 - 对于生成的
Unit1
,只需将一个TLayout
从组件面板拖放到表单中,然后调整其大小以匹配表单的左半部分即可。 - 在表单(Layout2)上放置另一个
TLayout
控件,并调整此布局的大小以匹配表单的右半部分。 - 在Layout1(Edit1和Edit2)上拖放2个
TEdit
控制字段。 - 对于Layout1,将
TabOrder
属性设置为0,并确保将属性TabStop
设置为True
。 - 对于Layout2,将
TabOrder
属性设置为1,并确保将属性TabStop
设置为True
。 - 对于Edit1,将
TabOrder
属性设置为0,确保将属性TabStop
设置为True
,并将文本设置为“ edit1”。 - 对于Edit2,将
TabOrder
属性设置为1,确保将属性TabStop
设置为True
,并将文本设置为“ edit2”。 - 构建并运行项目:出现带有2个编辑字段的表单,使用 Tab 您可以在这些字段之间切换。还行吧!如果
Layout1
属性TabOrder
的值保持为-1,则 Tab 仍然有效,但仅在用鼠标单击选择了1个编辑字段之后。 - 现在,在
TForm1
程序Layout2
的构造函数中,作为Layout1
的父级:
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.fmx"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Layout1->Parent = Layout2;
}
- 再次构建并运行项目。现在,窗体上的编辑字段的位置已按预期更改为右侧。但是 Tab 功能就消失了!
为什么?如果在C ++ Builder 10.2中执行相同的步骤,则在将Layout1
的父级设置为Layout2
之后, Tab 功能将继续工作。
“施耐德信息系统有限公司”所要求的Unit1.fmx的内容:
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 480
ClientWidth = 640
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop]
OnShow = FormShow
DesignerMasterStyle = 0
object Layout1: TLayout
Position.X = 8.000000000000000000
Position.Y = 8.000000000000000000
Size.Width = 305.000000000000000000
Size.Height = 409.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
object Edit1: TEdit
Touch.InteractiveGestures = [LongTap,DoubleTap]
TabOrder = 0
Text = 'edit1'
Position.X = 64.000000000000000000
Position.Y = 72.000000000000000000
end
object Edit2: TEdit
Touch.InteractiveGestures = [LongTap,DoubleTap]
TabOrder = 1
Text = 'edit2'
Position.X = 64.000000000000000000
Position.Y = 112.000000000000000000
end
end
object Layout2: TLayout
Position.X = 328.000000000000000000
Position.Y = 8.000000000000000000
Size.Width = 305.000000000000000000
Size.Height = 409.000000000000000000
Size.PlatformDefault = False
TabOrder = 1
end
end
解决方法
是的! 安装“ C ++ Builder 10.4.1”后,它可以工作! 因此,这是10.4中的错误。
我必须采取更多措施来构建和测试我关心的所有现有软件,但我很高兴TAB键功能似乎已经解决! :)
我必须做一个完整的deïnstall并安装RadStudio。同样,第三方软件也必须再次集成到IDE中。大量的工作。我一直在想为什么这是必要的,而无法用10.4版中的“ GetIt”补丁更新解决。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。