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 edit1.gettextlen 获取编辑框字符数

Delphi 字符串截取

Delphi setpriorityclass 设置当前程序的优先级

Delphi模仿“千千静听”滚动标题栏,非常简单!

Delphi webbrowser通过遍历id查找元素是否存在

Delphi 查找指定目录,指定扩展名的所有文件名

Delphi 调用dll文件中的form

Delphi ifileoperation替换shfileoperation

Delphi 2009 中的泛型

Delphi 修改窗口标题

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



打赏

取消

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

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

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

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

评论

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