从一个日历程序中寻找bcb时间函数及ComboBox的一个方法

来源:互联网 发布:游戏ui网络班 编辑:程序博客网 时间:2024/04/30 19:13

int y = YearOf(Date());
int m = MonthOf(Date());

 

TDateTime dtFirst = EncodeDate(year, month, 1);
int week = DayOfWeek(dtFirst);
week -= 1;

int daySum = DayOfTheMonth(EndOfTheMonth(dtFirst));

 

注:

Date()获取日期

YearOf()获取某日的年份

MonthOf()获取某日的月份

EncodeDate()获取某年某月第N天是系统时间的第几天(1900年1月1日为第一天);

DayOfWeek()获取一周中的第几天,这里第一天是星期日,所以如果要让星期一为第一天,那么week -= 1;

EndOfTheMonth()获取某月的最后一天;

DayOfTheMonth()获取某日为当月的第几天;

 

补充一个方法:

ComboBox->Items->IndexOf(string);

设置string在ComboBox中的索引值;

 

 

 

日历源码:

/*
功能:计算日历中每个单元个的天数
*/
void _fastcall TMain::ShowCalendar(int year, int month)
{
 TDateTime dtFirst = EncodeDate(year, month, 1);

    int week = DayOfWeek(dtFirst); 
    week -= 1; 
    int daySum = DayOfTheMonth(EndOfTheMonth(dtFirst));

    int day = 1;

    for (int i = 1; i < 7; i++)
    {
        for (int j = 0; j < 7; j++)
        {
            if ((i - 1) * 7 + j < week || (i - 1) * 7 + j >= daySum + week)
            {
                sgCalendar->Cells[j][i] = "";
            }
            else
            {
                sgCalendar->Cells[j][i] = IntToStr(day);
                if (EncodeDate(year, month, day) == Date())
                {
                    sgCalendar->Row = i;
                    sgCalendar->Col = j;
                }
                day++;
            }
        }
    }
}