二:月份值本来就是从0开始的
edit1.text:=inttostr(m+1);

解决方案 »

  1.   

    第一个问题:
    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了
      

  2.   

    在onclick事件中,得到的时间是正确的,刚开始得到的MonthCalendar1.BoldDays也是正确的,但是,当月份到了下个月的时候,MonthCalendar1.BoldDays方法就不好使了,
    我要得 是每个月都能正确的粗体显示,WHAT SHOULD I DO?
    如果可以,我的信箱是[email protected]
      

  3.   

    //当然是每个月都能正确的粗体显示,如下设置粗体和得到月分放到不同的事件中
    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;