第一个问题: MonthCalendar1.BoldDays必需在MonthCalendar1GetMonthInfo中使用,原因很简单: procedure BoldDays(Days: array of LongWord; var MonthBoldInfo: LongWord); 这个方法的每二个参数var MonthBoldInfo是要回传给TMonthCalendar继续处理的 你可以试试下面的代码也许就会明白: procedure TForm1.MonthCalendar1GetMonthInfo(Sender: TObject; Month: Cardinal; var MonthBoldInfo: Cardinal); begin MonthBoldInfo:=9; //等同于 MonthCalendar1.BoldDays([1,4],MonthBoldInfo); end; 第二个题: OnGetMonthInfo这个事件是在月份变化前就被激发了的,所以用你的做法得到的永远是上一次选的月份 把你的代码放到OnClick事件里就Ok了
在onclick事件中,得到的时间是正确的,刚开始得到的MonthCalendar1.BoldDays也是正确的,但是,当月份到了下个月的时候,MonthCalendar1.BoldDays方法就不好使了, 我要得 是每个月都能正确的粗体显示,WHAT SHOULD I DO? 如果可以,我的信箱是[email protected]
//当然是每个月都能正确的粗体显示,如下设置粗体和得到月分放到不同的事件中 procedure TForm1.MonthCalendar1GetMonthInfo(Sender: TObject; Month: Cardinal; var MonthBoldInfo: Cardinal); begin MonthCalendar1.BoldDays([1,4],monthboldinfo); end;procedure TForm1.MonthCalendar1Click(Sender: TObject); var y,m,d:WORD; begin decodedate(MonthCalendar1.date,y,m,d); edit1.text:=inttostr(m); end;
MonthCalendar1.BoldDays必需在MonthCalendar1GetMonthInfo中使用,原因很简单:
procedure BoldDays(Days: array of LongWord; var MonthBoldInfo: LongWord);
这个方法的每二个参数var MonthBoldInfo是要回传给TMonthCalendar继续处理的
你可以试试下面的代码也许就会明白:
procedure TForm1.MonthCalendar1GetMonthInfo(Sender: TObject;
Month: Cardinal; var MonthBoldInfo: Cardinal);
begin
MonthBoldInfo:=9; //等同于 MonthCalendar1.BoldDays([1,4],MonthBoldInfo);
end;
第二个题:
OnGetMonthInfo这个事件是在月份变化前就被激发了的,所以用你的做法得到的永远是上一次选的月份
把你的代码放到OnClick事件里就Ok了
我要得 是每个月都能正确的粗体显示,WHAT SHOULD I DO?
如果可以,我的信箱是[email protected]
procedure TForm1.MonthCalendar1GetMonthInfo(Sender: TObject;
Month: Cardinal; var MonthBoldInfo: Cardinal);
begin
MonthCalendar1.BoldDays([1,4],monthboldinfo);
end;procedure TForm1.MonthCalendar1Click(Sender: TObject);
var
y,m,d:WORD;
begin
decodedate(MonthCalendar1.date,y,m,d);
edit1.text:=inttostr(m);
end;