我可以更改组件的TScrollbar的默认颜色吗?

时间:2014-03-03 10:45:36

标签: delphi delphi-xe2

我正在制作一个背景为黑色的应用程序,当然,组件tscrollbar比它显示的(网格,面板等等)让我成为系统的默认颜色。 有没有办法改变它们?也许拿起一些系统信息...... 我正在使用XE2,使用VCL。 谢谢。

2 个答案:

答案 0 :(得分:2)

没有直接改变scrollbars的颜色这样的事情。你唯一的选择是绘制自己的滚动条。为此,您必须绘制处理WM_NCPAINT消息的滚动条(拇指,滑块和箭头)的每个元素,同时您必须跟踪用户与滚动条的交互以正确更新滚动条,这样做完成处理WM_NCHITTEST,WM_NCCALCSIZE ,WM_NCLBUTTONDOWN,WM_NCLBUTTONUP,WM_VSCROLL,WM_HSCROLL等。因此,您最好选择避免所有这些工作是使用Delphi XE2中引入的VCL样式,通过这种方式您可以修改VCL样式文件以根据需要绘制滚动条。现在,如果你想要艰难的过境,你可以尝试TSysScrollingStyleHook类,它是VCL Style Utils项目的一部分,可以告诉你如何绘制滚动条。

答案 1 :(得分:1)

您需要创建一个响应Windows WM_NCPAINT的自定义组件,这是非客户区绘制消息。

有一些可用的C源代码here涵盖了您可能觉得有用的滚动条的自定义绘图。