Al *_*l C 6 delphi datetimepicker
当用户点击DateTimePicker,设置为下拉日历时,我希望各种日期(通过我创建的代码选择)以某种方式突出显示 - 彩色背景,粗体字体,彩色字体,无关紧要.我只想要标记某些日期.......我怎么办?
And*_*and 12
是的,你可以这样做.首先,您必须初始化控件:
const
DTM_GETMCSTYLE = DTM_FIRST + 12;
DTM_SETMCSTYLE = DTM_FIRST + 11;
...
SendMessage(DateTimePicker1.Handle,
DTM_SETMCSTYLE,
0,
SendMessage(DateTimePicker1.Handle, DTM_GETMCSTYLE, 0, 0) or MCS_DAYSTATE);
Run Code Online (Sandbox Code Playgroud)
(uses CommCtrl
).
然后你只需要回复MCN_GETDAYSTATE
通知.您可以创建自己的TDateTimePicker
后代,也可以使用"拦截器类".
type
TDateTimePicker = class(ComCtrls.TDateTimePicker)
protected
procedure WndProc(var Message: TMessage); override;
end;
...
procedure TDateTimePicker.WndProc(var Message: TMessage);
var
i: integer;
begin
inherited;
case Message.Msg of
WM_NOTIFY:
with PNMDayState(Message.LParam)^ do
if nmhdr.code = MCN_GETDAYSTATE then
begin
// The first visible day is SystemTimeToDateTime(stStart);
// cDayState is probably three, because most often three months are
// visible at the same time. Of course, the second of these is the
// 'currently displayed month'.
// Each month is represented by a DWORD (32-bit unsigned integer)
// bitfield, where 0 means not bold, and 1 means bold.
// For instance, the following code will select all days:
for i := 0 to cDayState - 1 do
PMonthDayState(Cardinal(prgDayState) + i*sizeof(TMonthDayState))^ := $FFFFFFFF;
end;
end;
end;
Run Code Online (Sandbox Code Playgroud)
另一个例子:假设当前显示包含三个月,并且您只想选择"当前显示月份"中的天数,即中间月份.假设您希望每隔三天选择一次,从选定日期开始.
然后你想使用位域
Month Bitfield
0 00000000000000000000000000000000
1 01001001001001001001001001001001
2 00000000000000000000000000000000
Run Code Online (Sandbox Code Playgroud)
哪个是
Month Bitfield
0 $00000000
1 $49249249
2 $00000000
Run Code Online (Sandbox Code Playgroud)
十六进制.所以你也是
for i := 0 to cDayState - 1 do
if i = 1 then
PMonthDayState(cardinal(prgDayState) + i*sizeof(TMonthDayState))^ := $49249249
else
PMonthDayState(cardinal(prgDayState) + i*sizeof(TMonthDayState))^ := $00000000;
Run Code Online (Sandbox Code Playgroud)
截图http://privat.rejbrand.se/datetimepick.png
归档时间: |
|
查看次数: |
6219 次 |
最近记录: |