加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – TDateTimePicker VCL样式XE2中的毛刺只发生在Windows

发布时间:2020-12-15 04:28:44 所属栏目:大数据 来源:网络整理
导读:我想这是VCL风格还没有准备好被真正使用的另一个原因. TDateTimePicker控件看起来没有VCL样式.打开任何vcl风格,我得到这个外观: 我可以通过注册一个样式钩子来关闭这个组件类型的vcl样式,但是看起来真的很丑陋. 这是在安装了更新4的Delphi XE2上. 理想情况
我想这是VCL风格还没有准备好被真正使用的另一个原因.

TDateTimePicker控件看起来没有VCL样式.打开任何vcl风格,我得到这个外观:

我可以通过注册一个样式钩子来关闭这个组件类型的vcl样式,但是看起来真的很丑陋.

这是在安装了更新4的Delphi XE2上.

理想情况下,我希望有一个解决方法,或datetime选择器的某些属性,或者datetimepicker的一些子类,我可以做,以强制日期选择器正确绘制和主题.

请注意,正常的组合框正确配置.请注意,这可以很容易地在可以想象的最小的样本项目中重现.是.还有另一种风格的bug.

更新它可能是特定于平台的,与没有Aero的Windows Server 2008 R2上的Windows Common Controls版本相关(Windows服务器组件术语中的“桌面体验”).在其他人无法复制之后才发生这种情况,在几台不同的Windows机器上尝试这样做.在我这样做之后,我发现这个问题只能在Windows Server 2008 R2上复制.我们的一些客户使用Windows Server 2008 R2.如你所知,使用VCL Styles的主要原因在于它使您的应用程序看起来是一样的,无论Windows主题是什么.但是在上述情况下,除了DateTimePicker控件(主题不正确,仅在Windows Server 2008 R2上)外,整个应用程序的主题都是正确的.相同的基于XE2的演示程序在Windows 7上可以正常工作.

工作系统和非工作系统在SysWow64文件夹中都有一个ComCtl32.dll,版本为5.82.7601.17514.但是,当VCL主题关闭时,这些控件的本机布局和外观显然是不同的,并且这会影响到失效的皮肤代码.

Update2:报告为bug:QC Entry 106783

解决方法

好的,我刚刚对 Vcl.Styles.DateTimePickers的 Vcl.Styles.DateTimePickers单元做了一个小的改动.当“Windows Classic”主题是活动的时候解决这个问题.

以这种方式使用此样式钩子

uses
  Vcl.Styles,Vcl.Themes,Vcl.Styles.DateTimePickers;

initialization
 TStyleManager.Engine.RegisterStyleHook(TDateTimePicker,TDateTimePickerStyleHookFix);

这将是结果.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读