在Delphi XE5、Firemonkey中定位自定义列表框项组件
我已经定制了一个Firmeonkey列表框项目的样式,现在它可以由4个tlable组成。每个标签都与alNone对齐。 每当我需要添加任何项目时,我都会在代码中设置它们的位置。我观察到,当我的列表有滚动条时,如果第一个组件不可见,即,如果我在列表框中再次添加所有项目,我当时已经向下滚动了足够多,则第一个项目或未显示的项目中的TLabel位置会扭曲 对于设置位置,我使用以下代码:在Delphi XE5、Firemonkey中定位自定义列表框项组件,delphi,firemonkey,delphi-xe5,Delphi,Firemonkey,Delphi Xe5,我已经定制了一个Firmeonkey列表框项目的样式,现在它可以由4个tlable组成。每个标签都与alNone对齐。 每当我需要添加任何项目时,我都会在代码中设置它们的位置。我观察到,当我的列表有滚动条时,如果第一个组件不可见,即,如果我在列表框中再次添加所有项目,我当时已经向下滚动了足够多,则第一个项目或未显示的项目中的TLabel位置会扭曲 对于设置位置,我使用以下代码: (tmpListBoxItem.FindStyleResource('txtCol2') As TLabel)
(tmpListBoxItem.FindStyleResource('txtCol2') As TLabel).Position.X :=
(tmpListBoxItem.FindStyleResource('txtCol2') As TLabel).Position.X + (tmpListBoxItem.FindStyleResource('txtCol2') As TLabel).Width;
任何建议,我如何克服这个问题
问候,,
Padam JainFiremonkey样式会随着组件在屏幕上的出现和消失而反复“应用”和“释放” 仅仅设置一次样式对象的属性并期望记住这些值是不够的。您需要做的是侦听OnApplyStyleLookup事件或重写自定义组件的ApplyStyle方法,并使用上面的方法再次设置属性 这意味着您需要一个地方来存储要设置的值 对于您的情况,我建议您将TListBoxItem子类化,以便可以添加合适的属性或字段,并将代码放入ApplyStyle中