1

我有一个在 Turbo Delphi 中开始的项目,我最近将其更新到 D2009,并且我注意到表单设计器中的一些怪癖。所有旧表单都应用了 Win98 样式。例如,按钮是灰色的,带有锋利的方形边缘。但是我在升级后创建的任何新表单都以 WinXP 样式显示其控件。如果我从旧表单复制控件并将其粘贴到新表单,则样式会更改。在运行时,所有窗体的所有控件都以 XP 样式显示。

知道是什么导致我的旧表格以旧样式显示吗?我查看了属性列表,但没有任何东西跳出来。但显然有一些东西,它是持久的,因为保存和重新加载不会改变它。有谁知道这个属性在哪里以及如何修复它?

4

5 回答 5

2

您应该启用运行时主题。

你检查过了吗?

Project | Options | Application | [  ]  Enable Run Time Themes
于 2008-12-24T18:50:54.263 回答
1

查看旧形式和新形式的uses子句,可能会有不同的地方。我知道在delphi 7中你必须添加xpman(或类似的东西)才能获得windows皮肤。

于 2008-12-24T19:09:50.247 回答
0

你检查过dfm文件吗?有时有些东西没有在属性列表中显示。

于 2008-12-24T19:25:06.410 回答
0

也许您的 dfm 中有一个杂散的 Ctl3D (sp?) 设置?

于 2008-12-25T23:59:52.783 回答
0

使用D2007,

我的运行时包有同样的问题。他们可以使用 D5 或 D7 创建。

要解决此问题:只需将“XP Theme ManiFest”添加到您的罪魁祸首包“res”文件中。

D2007 清单示例:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity
    type="win32"
    name="CodeGear RAD Studio"
    version="11.0.2902.10471" 
    processorArchitecture="*"/>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        publicKeyToken="6595b64144ccf1df"
        language="*"
        processorArchitecture="*"/>
    </dependentAssembly>
  </dependency>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="asInvoker"
          uiAccess="false"/>
        </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
于 2016-01-16T08:38:12.700 回答