3

在 DelphiTListView中,是否可以移动 SubItemImages 的错误水平位置,因为它们画得太左了?像这样的东西,例如(伪代码,它只是表明意图):

x := MyListView.Items[i].SubItemImages[2].HorizontalPosition;
MyListView.Items[i].SubItemImages[2].HorizontalPosition := x + 2;

此屏幕截图显示了该错误:

在此处输入图像描述

4

1 回答 1

3

No.TListItem.SubItemImages是整数,整数没有水平位置。

property SubItemImages[Index: Integer]: Integer read GetSubItemImage 
  write SetSubItemImage;

您可以通过查看 VCL 源代码(在本例中为ComCtrls单元)找到这一点。相关代码在TListItem.GetSubItemImage(下图来自XE3的代码,但与之前版本的Delphi中的代码相同)。

function TListItem.GetSubItemImage(Index: Integer): Integer;
begin
  Result := TSubItems(FSubItems).ImageIndex[Index];
end;

据我从MSDN 文档中可以看出,无法更改该图像的位置。这些列是通过向底层 WindowsListView控件发送LVCOLUMN每个列定义的记录(结构)来创建的,其中没有可分配的位置信息。它有一个标志来设置图像右对齐 ( LVCFMT_BITMAP_ON_RIGHT),但没有其他东西可以让您将图像实际定位到列中的特定位置。

于 2013-02-15T23:02:17.420 回答