在 DelphiTListView
中,是否可以移动 SubItemImages 的错误水平位置,因为它们画得太左了?像这样的东西,例如(伪代码,它只是表明意图):
x := MyListView.Items[i].SubItemImages[2].HorizontalPosition;
MyListView.Items[i].SubItemImages[2].HorizontalPosition := x + 2;
此屏幕截图显示了该错误:
在 DelphiTListView
中,是否可以移动 SubItemImages 的错误水平位置,因为它们画得太左了?像这样的东西,例如(伪代码,它只是表明意图):
x := MyListView.Items[i].SubItemImages[2].HorizontalPosition;
MyListView.Items[i].SubItemImages[2].HorizontalPosition := x + 2;
此屏幕截图显示了该错误:
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
),但没有其他东西可以让您将图像实际定位到列中的特定位置。