2013-03-01 34 views
0

當鼠標移動到TListView項目上方時,會出現藍色輪廓(請參見圖片)。我將如何刪除它?TListView - 當鼠標懸停在物品上時,不要繪製該藍色矩形。怎麼樣?

我知道的唯一方法就是手動完成所有項目的繪製......但也許有一個更簡單的方法?試圖HotTrack =假,不利於:(

Item3 has this blue outline

+0

爲什麼你想違背平臺的標準做事方式?該藍色矩形對用戶來說是非常重要的提示。它告訴他如果他點擊那裏然後選擇什麼。 – 2013-03-01 09:11:14

+0

我使用項目的自定義背景顏色,並將鼠標移動到項目上時,此背景消失。 – djsoft 2013-03-01 10:50:44

+0

好吧,對你好,你保持它的功能只是以不同的方式實施它。 – 2013-03-01 10:53:58

回答

3

這幅畫是由特殊的探險主題所做的事被添加到由TCustomListView.CreateWndSetWindowTheme(Handle, 'explorer', nil)呼叫控制。如果使用默認主題那麼您將無法獲得熱跟蹤您可以通過恢復瀏覽器窗口的主題,發生例如在中介類:。

type 
    TListView = class(ComCtrls.TListView) 
    protected 
    procedure CreateWnd; override; 
    end; 
....  
procedure TListView.CreateWnd; 
begin 
    inherited; 
    SetWindowTheme(Handle, nil, nil); 
end; 

當然,你也將失去一切的探險主題增加。

據我所知,沒有任何通知消息允許你壓制資源管理器主題熱追蹤繪畫。

+1

嗯......改變整個控制主題有點矯枉過正:)我想我需要實現完整的項目,然後繪製自己。 – djsoft 2013-03-01 10:54:33

+1

它看起來像我不必重新發明車輪,這個問題有代碼來繪製項目:http://stackoverflow.com/questions/5519742/drawing-a-checkbox-in-a-tlistview如果有人否則會尋找這:) – djsoft 2013-03-01 11:41:42

相關問題