【发布时间】:2012-12-24 15:01:52
【问题描述】:
我正在从事一个个人项目,最近遇到了很多问题,导致很多问题,但是,嘿,这就是 SO 的用途吗? ;)
无论如何,我尝试制作一个透明的 TPanel,这是通过制作自定义组件来实现的。 我制作的应用程序是关于魔兽世界的,我在官方网站上制作了一个天赋计算器,但在 Windows 应用程序中。 天赋是法术/技能,每个天赋都有显示在工具提示中的信息。
所以我有一个带有信息的工具提示,
我有一个天赋网格,当我将鼠标悬停在天赋上时,我想查看信息。 除此之外,我希望信息显示在光标位置附近。
几乎可以工作。定位有效,它显示了正确的信息但是!这就是问题所在。 看看这张图片:
黑色半透明面板是我的工具提示。
您会看到位于名为 pnlTalents 的深灰色面板中的人才(那个小 4x6 网格)
该面板的父面板是覆盖整个表单的浅灰色面板,称为Panel1。
名为TooltipTalent 的工具提示也有父Panel1。
我尝试将pnlTalents 发送到后面并将TooltipTalent 发送到前面,但这根本没有区别。
我什至在位置改变的那一刻尝试了TooltipTalent.BringToFront;。
请注意,工具提示在屏幕顶部带有速度按钮的深灰色面板上没有问题。
我比较了两个面板(顶部的一个和天赋的一个),发现属性没有区别。
我在这里严重用尽了想法。我不知道是什么原因造成的,也不知道如何解决这个问题。
作为最后的手段,我尝试删除另一个覆盖整个表单的透明面板,看看是否有帮助,但问题仍然存在。
我也可以发布我的自定义组件的代码,但这会很多。 如果您想查看代码,请告诉我,我会找到一种方法来显示它:)
谁能帮我解决这个问题? 亲切的问候
【问题讨论】:
-
TToolWindow和THintWindow继承自TWinControl并且应该显示得很好。您的工具提示是来自TControl/TGraphicControl的自定义控件吗?在这种情况下,网格将始终位于顶部。 -
使用所有这些混合,也许您真的会尝试将您的程序基于 FireMonkey (FMX) 库而不是 VCL?
-
@NGLN 网格由 TPanel 组成,我的自定义控件也基于 TPanel。
-
我敢打赌,工具提示可能在 Z 顺序树的某处具有“始终在顶部”标志。使用某些东西来遍历 Windows 窗口的层次结构。像 WinSight、Spy++(我个人使用 TotalCommander 和 Process MANager 插件)。阅读 VCL 如何实现
TCustomForm.FormStyle = fsStayOnTop。另见WS_EX_TOPMOST
标签: delphi z-order delphi-xe3 tpanel