如何处理嵌套在FMX框架

时间:2015-08-18 08:47:12

标签: delphi firemonkey delphi-xe5

我遇到了StyleLookupTTabControl嵌套在FMX Frame中的错误。如果具有控件的框架嵌套在HorzScrollBox中,并且在创建表单时框架的位置在窗体的可见区域之外,则控件的外观不接受样式。换句话说,如果在显示表单时控件是可见的,则控件将被涂上必要的样式外观 - 否则。不是。

重现错误:

  1. 创建一个新的网格都市应用程序。
  2. 创建一个Frame并在其上放置一个TTabControl。将Align的{​​{1}}设置为TabControl。比方说,添加4个TTabItems。
  3. 打开详细信息表单,并将其宽度设置为值>你的Screen.Width(我2500就足够了)。
  4. 复制粘贴任何列(布局),例如2次,并使用最合适的布局在其中嵌套框架。您将在设计时看到正常的tabitems表示。设置样式设置。您将看到以下图片:
  5. enter image description here

    完成。运行该项目。你会得到这个bug。 在运行时,TabItem的外观如下所示:

    enter image description here

    如果在运行时手动设置StyleLookup,则外观可能不会更改,也不会更改为设置为每个其他项目(例如,虽然您将相同的StyleLookup分配给所有TabItems,但是设置为1st和3rd,而不设置为2nd和4th)。另一个有趣的发现。如果您有其他表单包含alClient TabControls(嵌套没有框架并且更接近表单的左边框),例如Form2,则会得到以下内容。如果您在运行时首先显示错误的Form1,您将看到该错误,但如果您关闭此表单并显示Form2,您会看到正确的TabItems。关闭Form2并在之后显示Form1(有缺陷)将以错误的形式为您提供TabControl的正确外观。 它与我之前报道的错误有一些共同之处:Incorrect selection of items in an FMX TListbox (Grid Metropolis UI).它仍未完全解决。 昨天还有一个question,但这与VCL帧的确切问题有关,并且该解决方案不适合FMX。

    追加。

    方式是部分设置样式是在父窗体单元中为TTabControl设置OnPainting事件处理程序(它不能在框架单元中设置)并写下这样的内容:

    TabControl

    但是你仍然遇到问题 - 选项卡没有正确绘制 - 请参阅非活动标签的下边缘。

    The lower edge of inactive tabs is cut

    或者甚至喜欢这样:

    enter image description here

    附加2

    我刚刚在设计时遇到了在框架中放置框架并为TabItems指定样式后出现的错误。 TabControl如图1所示。 3。

0 个答案:

没有答案