Delphi TDateTimePicker更改日历字体

iszxjhcz  于 2023-11-18  发布在  其他
关注(0)|答案(1)|浏览(141)

我需要更改TDateTimePicker控件的字体以使其变大。Font属性仅适用于编辑栏,我将其设置为12px,但需要对日历执行相同的操作。有一个Calendar控件支持此TDateTimePicker控件,我如何访问它?
我试着查看其他属性并搜索.Calendar或其他会暴露底层日历的东西,但没有成功。


的数据

o75abkj4

o75abkj41#

TDateTimePicker是Win32 DTP control周围的一个薄 Package 。VCL不公开对下拉日历的访问。
但是,您可以向TDateTimePicker发送DTM_GETMONTHCAL消息(或使用DateTime_GetMonthCal()函数):
获取日期和时间选择器(DTP)的子月历控件的句柄。
请务必在文档中注意以下事项:
当用户单击下拉箭头时,DTP控件会创建一个子月历控件(DTN_DROPDOWN通知)。当不再需要月历时,它会被销毁(销毁时会发送DTN_CLOSEUP通知)。因此,您的应用程序不能依赖DTP控件的子月历的静态句柄。
因此,您必须在TDateTimePicker.OnDropDown事件中操作日历,例如:

uses
  ..., Winapi.CommCtrl;

procedure TForm1.DateTimePicker1DropDown(Sender: TObject);
var
  CalendarWnd: HWND;
begin
  CalendarWnd := DateTime_GetMonthCal(DateTimePicker1.Handle);
  // use CalendarWnd as needed...
end;

字符串

UPDATE:正如@AmigoJack在评论中指出的那样,您可以向TDateTimePicker发送DTM_SETMCFONT消息(或使用DateTime_SetMonthCalFont()函数):

设置日期和时间选择器(DTP)控件的子月历控件使用的字体。

DateTime_SetMonthCalFont(DateTimePicker1.Handle, DateTimePicker1.Font.Handle, DateTimePicker1.DroppedDown);

相关问题