delphi – 如何获取使用Windows 7在树视图控件中绘制父节点的图
发布时间:2020-12-15 10:08:41 所属栏目:大数据 来源:网络整理
导读:我正在一个自定义控件中混合使用两个窗口控件(listview和treeview).在某些方面,我需要绘制使用 Windows 7(启用主题)的图像来标识父节点,我正在使用 DrawThemeBackground 功能与TVP_GLYPH部分和GLPS_CLOSED状态(我尝试所有的部件和状态相关TREEVIEW类没有运气
我正在一个自定义控件中混合使用两个窗口控件(listview和treeview).在某些方面,我需要绘制使用
Windows 7(启用主题)的图像来标识父节点,我正在使用
DrawThemeBackground 功能与TVP_GLYPH部分和GLPS_CLOSED状态(我尝试所有的部件和状态相关TREEVIEW类没有运气),但结果图像始终是old()或( – ).
此图片显示问题 我想绘制箭头图像(黑色圆圈内部)而不是()符号(橙色圆圈内). 这是我用来绘制图像的示例代码. uses UxTheme; procedure TForm40.Button1Click(Sender: TObject); var iPartId : integer; iStateId: integer; hTheme : THandle; begin hTheme := OpenThemeData(Handle,VSCLASS_TREEVIEW); iPartId := TVP_GLYPH; iStateId:= GLPS_CLOSED; //iPartId := TVP_TREEITEM; //iStateId:= TREIS_NORMAL; if hTheme <> 0 then try //if (IsThemeBackgroundPartiallyTransparent(hTheme,iPartId,iStateId)) then // DrawThemeParentBackground(Handle,PaintBox1.Canvas.Handle,nil); DrawThemeBackground(hTheme,iStateId,Rect(0,31,31),nil); finally CloseThemeData(hTheme); end; end; 我检查了一些像Andreas Rejbrand和this这样的application这样的工具,但是我找不到我想要的图像. 我的问题是:如何获得箭头图像? UPDATE 感谢Stigma发布的答案,我发现了Explorer :: Treeview类的部件和状态值的额外资源. > 解决方法
首先,在普通的ListView或TreeView的情况下,可以简单地在其句柄上调用
SetWindowTheme 来应用正确的样式.其MSDN页面的示例如下:
SetWindowTheme(hwndList,L"Explorer",NULL); 由于我们正在谈论一个自定义控件,我不太确定这适用于此.但是由于 我认为卢克的评论是正确的.你可能只需要传递“Explorer :: Treeview”,而不是简单的样式.所以,除了几年没有碰到Delphi / Pascal: hTheme := OpenThemeData(Handle,'Explorer::Treeview'); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |