首页 > 其他分享 >DateTimePicker如何与Delphi自带Style同步

DateTimePicker如何与Delphi自带Style同步

时间:2023-05-22 17:12:05浏览次数:62  
标签:LBackColor Style CalColors Delphi Vcl style DateTimePicker

原文出处:DateTimePicker如何与Delphi自带Style同步 - 封三郎 - 博客园 (cnblogs.com)

Delphi 的 DateTimePicker 组件有一个CalColors属性,可以设置 DropDown 打开的日历节目的风格。但如果不使用 Delphi 自带的 Style,在这里设置属性看不到期望的效果。

而使用了 delphi 自带的style,效果又存在瑕疵——日历面板大小有问题。 如果把自带 style 的 client 项关闭,大小倒是对了,之前设置的MonthBackColor属性在边框上也体现出来了,但是和窗体的风格又不统一了。 网上一搜,Stack Overflow 给出了方案——去掉自动绘制 style,去提取 style 的相关元素来设置 CalColors 属性。 尝试一下,效果基本能接受了。记在这里备查。 http://stackoverflow.com/questions/10335310/style-properties-for-tdatetimepicker
unit Unit15;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ImgList, Vcl.StdCtrls, Vcl.ComCtrls;

type
  TForm15 = class(TForm)
    DateTimePicker1: TDateTimePicker;
    procedure DateTimePicker1DropDown(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form15: TForm15;

implementation


{$R *.dfm}

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 TForm15.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 TForm15.FormCreate(Sender: TObject);
begin
  SetVclStylesColorsCalendar( DateTimePicker1);
end;

end.

 

标签:LBackColor,Style,CalColors,Delphi,Vcl,style,DateTimePicker
From: https://www.cnblogs.com/kenlewis/p/17421122.html

相关文章

  • delphi cxGrid做一个空白的出/入库单
    效果图: 实现的原理:1.在数据库建一个表,然后绑定到cxgrid上面.数据表各字段的数据类型,按你的业务需求来设置,同时要允许空值,因为我们必须让它们保持空值,这样在绑定到cxgrid时,才会是空白的,然后再弄个自增的主键ID.下面这张图是我研究时截的图,不想改了,凑合着用吧2.绑......
  • delphi cxgrid截图
    效果图: 点击GetImage,会在程序目录下生成一个表格截图的图片文件,打开后如下图:以下是代码:procedureTForm4.SpeedButton1Click(Sender:TObject);vargridView:TcxGridDBTableView;focusedItem:TcxCustomGridTableItem;focusedRect:TRect;aBitmap:TBitm......
  • DCC32命令行方式编译delphi工程源码
    本文链接地址:http://blog.csdn.net/sushengmiyan/article/details/10284879作者:苏生米沿 一、首先找到这个可执行文件,熟悉delphi的人应该很容易就找到,打开你安装delphi的目录,如我的路径C:\ProgramFiles\Delphi_2007\bin\DCC32.EXE二、拷贝一份出来,我将其放在了我的测试目录下......
  • 报表控件FastReport VCL v2023.2 - 将Delphi 产品整合到单一系统
    FastReport 是功能齐全的报表控件,可以帮助开发者可以快速并高效地为.NET,VCL,COM,ActiveX应用程序添加报表支持,由于其独特的编程原则,现在已经成为了Delphi平台最优秀的报表控件,支持将编程开发中的报表信息输出为TXT、PDF等多种文件格式,是编程开发人员必备的报表工具。FastReportVC......
  • Delphi GUI程序与FireMonkey教程
    首先,必须向原作者及译者表示最深的感谢,下面是下载地址:https://bbs.2ccc.com/attachments/2023/changfenglee_2023517104121.rar通过这本书,做为Delphi新老开发者,都能利用Delphi开发出跨平台的应用,笔者强列推荐! ......
  • delphi实现modbus通信
    -------------------------------------------------------------基础单元----start-----------------------------------------------------------------------------{********************************************************************}{*单元名称:UntM......
  • OneDelphi界面美化
    使用OneDelphi已经有一段时间了,中间件的功能很强大,主要特点:●oneDelphi由OneServer中间件,OneClient控件包组成,自由免费,全源码...●oneDelphi是一个MVC+传统DATASET双架构中间件...●oneFastClient是一个快速开发传统EXE的开发包。OneDelphi的官方QQ群:814696487主界面:优化UI......
  • delphi 写的图片合成工具---品一套图大师 v1.1.0
    在石材行业,套效果图是一个非常重要而经常要面临的工作,如果自身不懂得PS,那就需要经常去麻烦别人,而且客户可能没有办法一直在等你的效果图...基于以上的种种原因,所以就开发了这个工具,只需把图片拉到这工具,点点这个点点那,不到1分钟就可以做出漂亮的效果图~ 软件主界面: 需要套......
  • delphi Format格式化函数
    delphiFormat格式化函数Format是一个很常用,却又似乎很烦的方法,本人试图对这个方法的帮助进行一些翻译,让它有一个完整的概貌,以供大家查询之用: 首先看它的声明:functionFormat(constFormat:string;constArgs:arrayofconst):string;overload; 事实上Format方法有......
  • Delphi-Delphi通过管道执行外部命令行程序(cmd)并获取返回结果
     相关资料:https://www.shuzhiduo.com/A/gGdXxNGmd4/     Delphi通过管道执行外部命令行程序(cmd)并获取返回结果实例代码:unitUnit1;interfaceusesWinapi.Windows,Winapi.Messages,System.SysUtils,System.Variants,System.Classes,Vcl.Graphics,Vcl.......