delphi DateTimePicker 宽度如何与Delphi自带Style同步


本文整理自网络,侵删。

 


解决办法1:把自带 style 的 client 项关闭



解决办法2:

网上一搜,Stack Overflow 给出了方案――去掉自动绘制 style,去提取 style 的相关元素来设置 CalColors 属性。


尝试一下,效果基本能接受了。记在这里备查。


http://stackoverflow.com/questions/10335310/style-properties-for-tdatetimepicker

uses

  Winapi.CommCtrl,

  Vcl.Styles,

  Vcl.Themes,

  uxTheme;


Procedure SetVclStylesColorsCalendar( DateTimePicker: TDateTimePicker);

Var

  LTextColor, LBackColor : TColor;

begin

   uxTheme.SetWindowTheme(DateTimePicker.Handle, '', '');//disable themes in the calendar

   //get the vcl styles colors

   LTextColor:=StyleServices.GetSystemColor(clWindowText);

   LBackColor:=StyleServices.GetSystemColor(clWindow);


   DateTimePicker.Color:=LBackColor;

   //set the colors of the calendar

   DateTimePicker.CalColors.BackColor:=LBackColor;

   DateTimePicker.CalColors.MonthBackColor:=LBackColor;

   DateTimePicker.CalColors.TextColor:=LTextColor;

   DateTimePicker.CalColors.TitleBackColor:=LBackColor;

   DateTimePicker.CalColors.TitleTextColor:=LTextColor;

   DateTimePicker.CalColors.TrailingTextColor:=LTextColor;

end;


procedure TForm2.DateTimePicker1DropDown(Sender: TObject);

var

  hwnd: WinAPi.Windows.HWND;

begin

  hwnd := SendMessage(TDateTimePicker(Sender).Handle, DTM_GETMONTHCAL, 0,0);

  uxTheme.SetWindowTheme(hwnd, '', '');//disable themes in the drop down window

end;

procedure TForm2.FormCreate(Sender: TObject);

begin

  SetVclStylesColorsCalendar(DateTimePicker1);

end;

 

来源:https://www.cnblogs.com/codingnote/archive/2014/10/24/4047264.html

相关阅读 >>

Delphi树的一些操作

Delphi动态建立panel无法更改颜色?

Delphi捕捉屏幕

Delphi 中 findwindow 和 findwindowex 的语法和用法

Delphi根据网络链接截取域名

Delphi 如何把程序钉到windows7任务栏(修正版)

Delphi直接实现分享图片功能

Delphi tparallel.for 老外得示例代码

Delphi memo 控件光标定位

Delphi的流操作的语法

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...