设置TListView为OwnerDraw后图标对齐异常原因排查
Rad Studio 12中TListView OwnerDraw=True后图标底部对齐的成因分析
问题场景
在Rad Studio 12环境下,新建窗体添加TListView,设计时添加5个条目,仅修改以下属性:
- 将
ViewStyle设为vsIcon IconOptions下的AutoArrange设为True
此时列表视图显示正常。但仅将OwnerDraw设为True后,图标对齐位置移至底部。需求是自定义绘制列表项:先绘制填充矩形,再在上方绘制图标,当前图标对齐属于异常行为。
成因分析
这是因为开启OwnerDraw=True后,VCL会完全移交列表项的绘制控制权给开发者,原本内置的图标垂直对齐逻辑不再生效。
具体细节:
- 非自绘模式下,VCL会依据
IconOptions的配置(包括AutoArrange)自动计算图标的位置,保证图标在项区域内按预期对齐(通常是垂直居中)。 - 开启自绘后,默认的自绘流程不会再处理图标位置的对齐计算,会直接将图标绘制在项区域的底部位置,从而出现视觉上的异常偏移。
如果要实现需求中的自定义绘制效果,需要在OnDrawItem事件中手动计算图标的绘制坐标,确保图标位于填充矩形上方的预期位置,而非依赖默认的底部对齐逻辑。
内容的提问来源于stack exchange,提问作者Craig
相关产品推荐
相关产品推荐

