【发布时间】:2012-01-04 04:53:51
【问题描述】:
我的应用调用中的 MainMenu 选项:
TStyleManager.SetStyle('Ruby Graphite');
它几乎在任何地方都能正确更改我的 XE2(更新 3)应用程序中的样式。问题来了:
我有一个带有 3 个 TabSheets 的 TPageControl,每个 TabSheets 都包含一个 TFrame。上述调用正确地将 当前可见 TabSheet 的组件的样式更改为“Ruby Graphite”。
但是,当我单击以切换到 另一个 选项卡表时,它的所有组件都是不可见的,直到我将鼠标移到它们上方。当我返回到原来的 TabSheet 时,它的组件现在也是不可见的,直到我将鼠标悬停在它们上面。
我尝试在框架本身上显式调用 .Refresh 和 .Repaint,但这并没有使它们上的组件可见。
奇怪的是执行:
TStyleManager.SetStyle('Windows');
将样式返回标准,所有组件都可见。
TTabSheet 位于面板上的面板上,如果这很重要的话。而且,我正在使用一些线程化的第 3 方组件(不在这些框架中)。我相信我已经禁用了它们。
关于如何在从 Windows 更改样式后强制以前隐藏的选项卡上的可视组件变为可见的任何建议?
编辑:链接到显示刷新问题的短屏视频:http://tinyurl.com/sostyle。
我有时还发现单击右上角的图标(如最大化)时,软件没有响应。有一些奇怪的事情发生在我的头上。到目前为止,我还无法从应用程序的 40,000 行代码中将其归结为一个小例子。
【问题讨论】:
-
我无法重现您的问题,您能否提供有关如何将框架附加到标签页的更多信息?或者也许提供一个最小的代码来重现这个问题?
-
我无法在一个小的独立程序中重现它。它只发生在我的大型应用程序中,很难剥离。我会继续努力的。谢谢你的尝试,RRUZ。万一看到它以任何方式发生,这里有一个简短的屏幕记录:tinyurl.com/sostyle
标签: delphi