(*
const
  MonthDays: array [Boolean] of TDayTable =
    ((31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31),
     (31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31));
*)(*
function IsLeapYear(Year: Word): Boolean;
begin
  Result := (Year mod 4 = 0) and ((Year mod 100 <> 0) or (Year mod 400 = 0));
end;
*)uses DateUtils;procedure TForm1.Button1Click(Sender: TObject);
begin
  Caption := IntToStr(DaysInMonth(Date));
end;

解决方案 »

  1.   

    zswang: DaysInMonth() 没有实现啊.
    补充一下:const MONTHDAYS: array [1..12] of Byte = (31, 28, 31, 30, 31,
                                            30, 31, 31, 30, 31, 30, 31);
    function TCalendarBox.GetLastDayOfMonth(const AYear, AMonth: Word): Word;
    // 获得某一年某一个月的最后一天.
    begin
      if AMonth < 0 then AMonth := 12;
      Result := MonthDays[AMonth];
      if ((AYear mod 4 = 0) and (AYear mod 100 <> 0) or 
        (AYear mod 400 = 0)) and (AMonth = 2) then
        Inc(Result);
    end;
      

  2.   

    啊, 不对. 
    语句 if AMonth < 0 then AMonth := 12;
    该为: if AMonth < 1 then AMonth := 12
          else if AMonth > 12 then AMonth := 1;
    还有就是那个 TCalendarBox. 不要了, 实在是不好意思.>> 希望 zswang 不要怪我每次都搅混水. ^_