2012-10-23 80 views

回答

9

您可以使用ListView_SetIconSpacing

uses commctrl; 
.. 
ListView_SetIconSpacing(ListView1.Handle, 36, 36); 
ListView1.Arrange(arAlignTop); // refresh view 

參考文檔,值必須包括圖標大小,否則圖標相互重疊。

您可以通過發送「-1」的CX和CY和返回值重置視圖是當前間隔,因此,例如,與一定量的下降空間,你可以這樣做:

var 
    Spacing: DWORD; 
begin 
    Spacing := ListView_SetIconSpacing(ListView1.Handle, WORD(-1), WORD(-1)); 
    ListView_SetIconSpacing(ListView1.Handle, 
          LoWord(Spacing) - 10, HiWord(Spacing) - 6); 
    ListView1.Arrange(arAlignTop); 
+0

+1,而我甚至不知道我們在Delphi :-D有宏觀的... –

+0

@Marjan,那麼這是在commctrl.pas一個襯墊。 :) AFAIK我們有許多/最常用的宏,比如RGB()。謝謝。 –

+0

謝謝。唯一的問題是,選擇邊界是否與下一個圖標重疊,我想唯一的解決方法是定製繪圖? http://i.imgur.com/2nZvk.png – hikari