在Delphi XE5,Firemonkey中定位自定义列表框项目组件

时间:2014-08-08 11:45:02

标签: delphi firemonkey delphi-xe5

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

我在下面的代码中设置位置:

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

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

此致 Padam Jain

1 个答案:

答案 0 :(得分:0)

当组件出现并从屏幕上消失时,Firemonkey样式会反复“应用”并“释放”。

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

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

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