War*_* P 9 delphi delphi-xe2 vcl-styles
我想这也是为什么VCL样式还没有准备好真正使用的另一个原因.
没有VCL样式,TDateTimePicker控件看起来很好.打开任何vcl样式,我得到这样的外观:

我可以通过注册一个样式钩子来关闭这个组件类型的vcl样式,但这看起来很丑陋.
这是在安装了更新4的Delphi XE2上.
理想情况下,我希望有一个解决方法,或日期时间选择器的一些属性,或datetimepicker的一些子类,我可以做,以强制日期时间选择器正确绘制和主题.
请注意,正常的组合框正确主题.请注意,这可以在可以想象的最小样本项目中轻松再现.是.这是另一种风格的错误.
更新它可能是特定于平台的,与没有Aero的Windows Server 2008 R2上的Windows公共控件版本相关(Windows服务器组件术语中的"桌面体验").在其他人无法重现它之后,我才想到它,在几台不同的Windows机器上试试这个.在我这样做之后,我发现该问题仅在Windows Server 2008 R2上重现.我们的一些客户使用Windows Server 2008 R2.如您所知,使用VCL样式的一个主要原因是,无论Windows主题是什么,它都会使您的应用看起来一样.但是在上面的例子中,整个应用程序主题正确,除了DateTimePicker控件,它是错误的主题,并且只在Windows Server 2008 R2上.相同的基于XE2的演示应用程序在Windows 7上运行良好.
工作和非工作系统都在SysWow64文件夹中有一个ComCtl32.dll,版本读数为5.82.7601.17514.但是,很明显,当VCL主题关闭时,这些控件的原生布局和外观会有所不同,这会影响失败的外观代码.
Update2:报告为错误:QC Entry 106783
RRU*_*RUZ 13
好的,我只是对Vcl.Styles.DateTimePickers单元进行了一些小改动, 它是vcl-styles-utils的一部分.解决"Windows经典"主题处于活动状态时的此问题.
以这种方式使用此样式挂钩
uses
Vcl.Styles,
Vcl.Themes,
Vcl.Styles.DateTimePickers;
initialization
TStyleManager.Engine.RegisterStyleHook(TDateTimePicker, TDateTimePickerStyleHookFix);
Run Code Online (Sandbox Code Playgroud)
这将是结果.

| 归档时间: |
|
| 查看次数: |
1299 次 |
| 最近记录: |