gpt4 book ai didi

Delphi 应用程序.HintColor

转载 作者:行者123 更新时间:2023-12-03 15:49:14 25 4
gpt4 key购买 nike

在Delphi 2010(不知道其他版本)中,Application.HintColor在Windows 7上运行时似乎没有效果。在XP上它给出了所需的颜色。有什么解决方法吗?

最佳答案

HintColor 与 VCL 中的其他一些 *Color 属性类似,如果您在主题操作系统上运行主题应用程序,则在绘制控件时它们可能会被忽略。提示有点不同,因为对于他们来说是 Vista 或更高版本,而不是 XP 或更高版本。如果您查看 Controls.pas 中的 THintWindow.Paint,您就可以看到这一点 - 如果是 Vista 并且启用了主题,它会专门绘制 Vista 渐变背景。

这通常是一件好事,因为您希望您的应用程序适合操作系统的外观和用户的偏好。

如果您确实想要覆盖此设置,则需要:

  • 子类THintWindow
  • 让您的应用程序在显示提示时使用这个新的提示类
  • 在这个类中,重写绘画方法以按照您的意愿进行绘制

THintWindow 某处创建一个新的提示类(更多关于下面要实现的内容。)要让应用程序使用新类作为提示,请将事件处理程序分配给 TApplication。 OnShowHint ( the easiest way to do this is via a TApplicationEvents component on your main form ) 并更改 HintInfo 参数的 HintWindowClass field to be your new class .

在新的提示类中,您需要重写 PaintNCPaintNCPaint 将绘制边框,您将需要绘制非主题边框(可能使用 DrawEdge 。)更改 Paint 以使用您的颜色填充背景选择,然后使用 DrawText 绘制文本在提示的矩形中具有适当的文本换行和对齐标志。如果仔细查看 VCL 代码,您可以看到几个硬编码的矩形偏移,并且您可能想模仿这些以在代码中获得与 VCL 使用的相同的矩形。

您可以使用此技术制作各种有趣的提示变体。例如,我最近制作的一个更改了这幅画,因此它画了一个粗体标题,然后在其下面添加了其他信息。

最后:为什么要设置颜色?是为了警告用户某些事情还是提供其他一些反馈?如果是这样,请考虑使用不仅仅是颜色 - 您可以使用此技术更改任何您想要的提示。尝试绘制警告图标或使用格式丰富的文本。我建议您尝试保持一般主题外观,并对主题绘画进行代码调整,而不是完全覆盖它,因为除非有充分的理由,否则您应该尝试保持用户选择的操作系统/外观。

关于Delphi 应用程序.HintColor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2289296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com