Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Delphi XE5、Firemonkey中定位自定义列表框项组件_Delphi_Firemonkey_Delphi Xe5 - Fatal编程技术网

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

在Delphi XE5、Firemonkey中定位自定义列表框项组件,delphi,firemonkey,delphi-xe5,Delphi,Firemonkey,Delphi Xe5,我已经定制了一个Firmeonkey列表框项目的样式,现在它可以由4个tlable组成。每个标签都与alNone对齐。 每当我需要添加任何项目时,我都会在代码中设置它们的位置。我观察到,当我的列表有滚动条时,如果第一个组件不可见,即,如果我在列表框中再次添加所有项目,我当时已经向下滚动了足够多,则第一个项目或未显示的项目中的TLabel位置会扭曲 对于设置位置,我使用以下代码: (tmpListBoxItem.FindStyleResource('txtCol2') As TLabel)

我已经定制了一个Firmeonkey列表框项目的样式,现在它可以由4个tlable组成。每个标签都与alNone对齐。 每当我需要添加任何项目时,我都会在代码中设置它们的位置。我观察到,当我的列表有滚动条时,如果第一个组件不可见,即,如果我在列表框中再次添加所有项目,我当时已经向下滚动了足够多,则第一个项目或未显示的项目中的TLabel位置会扭曲

对于设置位置,我使用以下代码:

    (tmpListBoxItem.FindStyleResource('txtCol2') As TLabel).Position.X  :=
    (tmpListBoxItem.FindStyleResource('txtCol2') As TLabel).Position.X  +      (tmpListBoxItem.FindStyleResource('txtCol2') As TLabel).Width;
任何建议,我如何克服这个问题

问候,,
Padam Jain

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

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

这意味着您需要一个地方来存储要设置的值

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