2013-03-01 37 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

相关问题