【问题标题】:Positioning of custom list box item components in Delphi XE5, FiremonkeyDelphi XE5、Firemonkey中自定义列表框项组件的定位
【发布时间】:2014-08-08 11:45:02
【问题描述】:

我已经自定义了 Firmeonkey 列表框项的样式,现在它可以包含 4 个 TLable。每个标签都具有 Alignment 为 alNone。 每当我需要添加任何项目时,我都会在我的代码中设置它们中的每一个的位置。我观察到,当我的列表有滚动条并且当时第一个组件不可见(即我已经向下滚动足够多)时,如果我在列表框中再次重新添加所有项目,那么 TLabels 的位置首先项目(或未显示的项目)被扭曲。

我使用以下代码设置位置:

    (tmpListBoxItem.FindStyleResource('txtCol2') As TLabel).Position.X  :=
    (tmpListBoxItem.FindStyleResource('txtCol2') As TLabel).Position.X  +      (tmpListBoxItem.FindStyleResource('txtCol2') As TLabel).Width;

任何建议,我该如何克服这个问题。

问候, 耆那教教父

【问题讨论】:

    标签: delphi firemonkey delphi-xe5


    【解决方案1】:

    随着组件在屏幕上出现和消失,Firemonkey 样式被反复“应用”和“释放”。

    仅仅设置样式对象的属性一次并期望这些值被记住是不够的。您需要做的是要么监听 OnApplyStyleLookup 事件,要么覆盖自定义组件的 ApplyStyle 方法,然后使用上面的方法再次设置属性。

    这意味着您需要在某个地方存储要设置的值。

    对于您的情况,我建议您将 TListBoxItem 子类化,以便您可以添加合适的属性或字段并将您的代码放入 ApplyStyle。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-12
      • 2013-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-18
      相关资源
      最近更新 更多