Delphi TListView-当鼠标位于项目上方时,不要绘制蓝色矩形。怎么用?
当鼠标移动到TListView项目上方时,会出现蓝色轮廓(见图)。我该如何移除它 我知道的唯一方法是手动绘制所有项目。。。但也许有更简单的方法?已尝试HotTrack=False,没有帮助:(Delphi TListView-当鼠标位于项目上方时,不要绘制蓝色矩形。怎么用?,delphi,drawing,tlistview,custom-draw,Delphi,Drawing,Tlistview,Custom Draw,当鼠标移动到TListView项目上方时,会出现蓝色轮廓(见图)。我该如何移除它 我知道的唯一方法是手动绘制所有项目。。。但也许有更简单的方法?已尝试HotTrack=False,没有帮助:( 该绘制由特殊的资源管理器主题完成。通过调用SetWindowTheme(句柄'explorer',nil)将其添加到控件中TCustomListView.CreateWnd中的。如果使用默认主题,则不会获得热跟踪。可以通过还原资源管理器窗口主题来实现这一点。例如,在插入器类中: type TListV
该绘制由特殊的资源管理器主题完成。通过调用
SetWindowTheme(句柄'explorer',nil)将其添加到控件中TCustomListView.CreateWnd中的
。如果使用默认主题,则不会获得热跟踪。可以通过还原资源管理器窗口主题来实现这一点。例如,在插入器类中:
type
TListView = class(ComCtrls.TListView)
protected
procedure CreateWnd; override;
end;
....
procedure TListView.CreateWnd;
begin
inherited;
SetWindowTheme(Handle, nil, nil);
end;
当然,您还将丢失explorer主题添加的所有其他内容
据我所知,没有任何通知消息允许您抑制资源管理器主题热跟踪绘制。该绘制由特殊的资源管理器主题完成。通过调用SetWindowTheme(句柄,'explorer',nil)将其添加到控件中TCustomListView.CreateWnd中的
。如果使用默认主题,则不会获得热跟踪。可以通过还原资源管理器窗口主题来实现这一点。例如,在插入器类中:
type
TListView = class(ComCtrls.TListView)
protected
procedure CreateWnd; override;
end;
....
procedure TListView.CreateWnd;
begin
inherited;
SetWindowTheme(Handle, nil, nil);
end;
当然,您还将丢失explorer主题添加的所有其他内容
据我所知,没有任何通知消息允许您取消浏览器主题热跟踪绘制。为什么要违反平台的标准操作方式?蓝色矩形对用户来说是一个非常重要的提示。它告诉用户,如果单击此处,然后单击,将选择什么。我使用自定义backgr为项目设置颜色,当鼠标移动到项目上时,该背景消失。啊,好吧,你很好,你保持了它的功能,只是以不同的方式实现它。为什么你想违背平台的标准做法?蓝色矩形对用户来说是一个非常重要的提示。它告诉用户如果他点击那里然后。我为项目使用自定义背景色,当鼠标移动到项目上时,背景消失。啊,好的,对你来说很好,你保持了它的功能,只是以不同的方式实现它。嗯…更改整个控件主题有点过火:)我想我需要自己实现完整的项目绘制。看起来我不需要重新发明轮子,所以这个问题有代码来绘制项目:以防其他人会寻找这个:)嗯。。。更改整个控件主题有点过火:)我想我需要自己实现完整的项目绘制。看起来我不需要重新发明轮子,所以这个问题有代码来绘制项目:以防其他人会寻找此:)