当前位置: 首页 > 知识库问答 >
问题:

为什么Android FireMonkey应用程序中的控件不能跨越多个列或行?

马哲
2023-03-14

我有一个FireMonkey应用程序,带有GridPanelLayout,与客户端对齐。它有6列16行。控件包括图示符、编辑和按钮。TEDIT跨越多列,TButton跨越多列和多行。这些控件当前都与客户端对齐。

当我在Windows上编译和运行时,一切看起来和行为都符合预期。然而,在Android设备上(我尝试了两个,Android 6.0.1和Amazon FireOS),没有一个控件跨越超过一列或一行。它们每个只有一个单元格大。TEdits不是跨越6个通道,而是跨越1个通道;TButton不是跨越2个通道和2行,而是跨越1个通道和1行。

为什么控件不会在Android上跨越多个列或行?

共有1个答案

燕和裕
2023-03-14

当帧/表单被子类化或帧放置在另一个帧/表单上时,VCL和FireMonkey都无法正确存储TGridBoard/TGridPanelLayoutControlCollection

此错误适用于VCL和FMX。早在2011年就已向旧QC报告,但从未修复(例如:#92298,#123225)。

示例:将带有按钮的RidPanelLayout拖放到框架上:

object GridPanelLayout1: TGridPanelLayout
    (...)   
    ControlCollection = <
      item
        Column = 0
        ColumnSpan = 2
        Control = Button1
        Row = 0
        RowSpan = 2
      end>
    object Button1: TButton
      Align = Client
      Size.Width = 421.000000000000000000
      Size.Height = 257.000000000000000000
      Size.PlatformDefault = False
      TabOrder = 0
      Text = 'Button1'
    end
end 

当您稍后对框架进行子类化时,IDE倾向于为它从基类继承的组件存储大量冗余属性。通常在第一次按F9之后,ClonSpanRowSpan属性会无缘无故地被删除。在子类上,它看起来像这样:

inherited GridPanelLayout1: TGridPanelLayout
    (...)
    ControlCollection = <
        item
            Column = 0
            Control = Button1
            Row = 0
        end>
    inherited Button1: TButton
        Size.Width = 210.500000000000000000
        Size.Height = 128.500000000000000000
    end
end

请注意Size属性是如何更改的。此外,重新定义了ControlCollection项,但完全缺少列span和行span属性。这就是原因。

这个bug适用于您,因为在FMX中,特定平台的专用视图被实现为主视图的子类。

版本管理系统有助于检测冗余属性何时潜入DFM文件。在上面的示例中,当您的子类不更改继承的GridPanelLayout1块时,完全删除它是合法的。此外,我建议您在不打开表单设计器窗口的情况下构建项目,因为它通常会损坏您的DFM文件并在每个机会重新添加冗余属性。

 类似资料:
  • 问题内容: 当将多个列与以下数据框一起使用时,Pandas Apply函数存在一些问题 和以下功能 当我尝试使用以下功能时: 我收到错误消息: 我不明白此消息,我正确定义了名称。 非常感谢你在此问题上的任何帮助 更新资料 谢谢你的帮助。我确实在代码中犯了一些语法错误,索引应该放在’‘。但是,使用更复杂的功能仍然会遇到相同的问题,例如: 问题答案: 似乎你忘记了你的字符串。 在我看来,顺便说一句,以

  • 我有这个项目。然后我做以下步骤: 转到 预期结果:错误消息(在浏览器中呈现) 白标签错误页 此应用程序没有 /error的显式映射,因此您将此视为一种退回。星期二八月27 16:59:23CEST 2019有一个意外的错误(类型=未找到,状态=404)。没有可用的消息 如何更改附加的代码,使文件索引代替此错误。是否呈现xhtml? 更新1:如果我去,我得到这个错误: 白标签错误页此应用程序没有/E

  • 我在运行钢筋应用程序时遇到了类似的问题 基本上,我想从以下位置运行演示代码:https://github.com/hukl/fancyapi 当我在根目录中时,我会: ERL如何找到fancyapi代码?

  • 我试图在中制作一个简单的,用户可以在其中注册并创建他们的帐户。我在Hibernate中使用数据库和。下面是代码。 实体类: 控制器: 存储库: buisness服务类: application.properties文件: 在单击submit之后,控件似乎永远不会进入控制器,因为---2--永远不会输出到控制台,即使表单中的操作与请求映射相同。 显示的错误是: 出现意外错误(Type=不支持的媒体类

  • 问题内容: 我正在尝试使列范围可用。具体来说,我正在寻找一个嵌套在另一个内部的方法,当用户单击以查看嵌套表时,它应该展开以向下推动下面的行并填充空白处。这类似于您在MS Access中可以嵌套表的情况,单击行上的“展开”按钮将向您显示嵌套表中的相应条目。 如果有人知道使用进行列跨度的方法,您能指出我正确的方向吗?或者,如果您知道执行此操作的其他方法,则欢迎您提出建议。该应用程序是使用Swing构建

  • fReceiveBuffer是否存在一个视频帧? 哦,这里是我的FFMPEG初始化代码,需要打开相关视频解码器:http://paste.ubuntu.com/12529760//