gpt4 book ai didi

delphi - TDateTimePicker 的 BoldDays?

转载 作者:行者123 更新时间:2023-12-01 18:04:50 27 4
gpt4 key购买 nike

我正在使用 Delphi7,我想将 TDateTimePicker 控件的某些天加粗。

我读到,它最初是 TMonthCalendar 的后代,因此应该是可能的。

我还找到了一些示例代码,但它是用 C# 编写的: http://social.msdn.microsoft.com/Forums/en/winforms/thread/03527023-694d-41ab-bffb-18c59fca1fda

请注意,我不想使用任何第三方 DateTimePicker 控件,我想继续使用标准控件。

最佳答案

你既对又错:-)

参见: http://www.experts-exchange.com/Programming/System/Windows__Programming/MFC/Q_23927552.html

你说得对,XP下不能设置BoldDays。但你错了,因为在 Vista/Win7 下你可以!

修改后的代码如下:

procedure TForm1.DateTimePicker1DropDown(Sender: TObject);
const
DTM_GETMCSTYLE = (DTM_FIRST + 12);
DTM_SETMCSTYLE = (DTM_FIRST + 11);
MCS_NOTRAILINGDATES = $0040;
MCS_SHORTDAYSOFWEEK = $0080;
MCS_NOSELCHANGEONNAV = $0100;
var
monthCalHandle: THandle;
boldDates: array[0..2] of integer;
style, prevstyle: LResult;
begin
style := SendMessage(DateTimePicker1.Handle, DTM_GETMCSTYLE, 0, 0);
style := style or MCS_DAYSTATE; //or MCS_NOSELCHANGEONNAV or MCS_WEEKNUMBERS;
prevstyle := SendMessage(DateTimePicker1.Handle, DTM_SETMCSTYLE, 0, style);

monthCalHandle := SendMessage(dateTimePicker1.Handle, DTM_GETMONTHCAL, 0, 0);

boldDates[0]:=$5a5a5a;
boldDates[1]:=$5a5a5a;
boldDates[2]:=$5a5a5a;
SendMessage(monthCalHandle, MCM_SETDAYSTATE, 3, integer(@boldDates));
end;

注意:请务必将 vista list 添加到文件中,否则它将无法工作!

这些常量来自更新后的 commctrl.h 文件,可在此处找到: http://www.koders.com/cpp/fid6A6537D52B537D0920D7A760D2073F7B65ADE310.aspx?s=WM_CAP_DRIVER_CONNECT

感谢您的帮助,您引导我找到了解决方案! :-)

关于delphi - TDateTimePicker 的 BoldDays?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4223237/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com