2013-02-15 41 views
2

在德爾福TListView,是否有可能改變SubItemImages的錯誤的水平位置,因爲他們畫得太離譜了?這樣的事情,例如(僞代碼,其只是顯示意向):在Delphi TListView中移動SubItemImages的錯誤水平位置?

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

此屏幕快照示出了錯誤:

enter image description here

+0

澄清:問題不在於僞代碼示例。問題是:我如何移動SubItemImages的水平位置? – user1580348 2013-02-15 23:16:37

+0

這並不清楚(你提到了僞代碼,但是更多的注意到它的格式化僞碼,而不是免責聲明),你的僞代碼可能會誤導這個問題的未來讀者;這就是爲什麼我特別提到了爲什麼它不會在我的答案(它也提供了你正在尋找的信息)不起作用。 – 2013-02-16 03:19:03

+2

您將需要自己繪製子項以獲得該級別的控制權。 – 2013-02-16 08:24:45

回答

3

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 documentation看到,有沒有辦法改變這種形象的定位。通過向每個列的定義發送基礎Windows ListView控件LVCOLUMN記錄(結構)來創建列,該列沒有可分配的位置信息。它有一個標誌將圖像設置爲右對齊(LVCFMT_BITMAP_ON_RIGHT),但沒有別的讓您實際將圖像定位到列中的特定位置。

+0

我曾期待過這樣的評論。因此我明確寫了「PSEUDO-CODE」。 現在,有沒有辦法改變EXISTING SubItemImages的水平位置? – user1580348 2013-02-15 23:11:38

+0

你真的確定嗎? – user1580348 2013-02-15 23:18:43

+0

我回答說,但我已編輯澄清。('SubItemImages'是'TImageList'中的索引列表,'TImageList'也沒有定位座標,'ListView'公共控件似乎也不允許這個定位。 – 2013-02-15 23:32:06