You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

设置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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 14:35:53