带TMONTH日历的粗体天数 我用TMunTalk控件编写了一个C++ Builder VCL表单应用程序,名为TunthCalase.

带TMONTH日历的粗体天数 我用TMunTalk控件编写了一个C++ Builder VCL表单应用程序,名为TunthCalase.,c++,c++builder,monthcalendar,C++,C++builder,Monthcalendar,我想设定一些控制的日子是大胆的 这是我目前的代码: TMonthCalendar->BoldDays([1,8], MonthBoldInfo); 但是,我得到以下错误: E2193 Too few parameters in call to '_fastcall TCommonCalendar::BoldDays(unsigned int *,const int,unsigned int &)' 我能帮点忙吗 以下是文档的链接: 我看不出我的代码和文档之间有什么区别。但我仍然

我想设定一些控制的日子是大胆的

这是我目前的代码:

TMonthCalendar->BoldDays([1,8], MonthBoldInfo);
但是,我得到以下错误:

E2193 Too few parameters in call to '_fastcall TCommonCalendar::BoldDays(unsigned int *,const int,unsigned int &)'
我能帮点忙吗

以下是文档的链接:

我看不出我的代码和文档之间有什么区别。但我仍然会犯错误

谢谢

更新

我正在尝试以下代码:

unsigned int arr[2] = {1,8};
TMonthCalendar->BoldDays(arr, 1, MonthBoldInfo);
但我得到了以下错误:

[BCC32错误]Assessment2.cpp(361):使用“unsigned long”初始化的E2357引用需要“unsigned int”类型的左值 完整解析器上下文 Assessment2.cpp(359):解析:void _fastcalltformmain::TMonthCalendarGetMonthInfo(TObject*,unsigned long,unsigned long&)

[BCC32错误]Assessment2.cpp(361):参数“MonthBoldInfo”中的E2342类型不匹配(需要“unsigned int&”,获得“unsigned long”) 完整解析器上下文 Assessment2.cpp(359):解析:void _fastcalltformmain::TMonthCalendarGetMonthInfo(TObject*,unsigned long,unsigned long&)

更新

我想从向量中检索某个月的所有日期,然后通过TMonthCalendar控件将日期设置为粗体

这是我的密码:

vector<appointment> appointmentsOnMonth = calCalendar.getAllAppointmentsOnMonth(TMonthCalendar->Date);
if (appointmentsOnMonth.size() > 0)
{
    unsigned int arr[appointmentsOnMonth.size()];
    for (int i = 0; i < appointmentsOnMonth.size(); i++)
    {
        int dayOfAppointment = DayOf(appointmentsOnMonth[i].getAppDateTime());
        arr[i] = dayOfAppointment;
    }
    TMonthCalendar->BoldDays(arr, 1, reinterpret_cast<unsigned int&>(MonthBoldInfo));
}
vector AppointsonMonth=CalCalCalendar.GetAllAppointsonMonth(TMonthCalendar->Date);
if(任命SonMonth.size()>0)
{
未签名的int-arr[AppointsonMonth.size()];
对于(int i=0;iBoldDays(arr,1,重新解释演员阵容(MonthBoldInfo));
}
DayOfAppoition变量工作正常,并获取应以粗体显示的天数的整数值。我在寻求一些帮助,请显示这些天作为大胆的日子

我发现一些错误与unsigned int arr[]和显示粗体天数有关。 这是:

[BCC32错误]评估2.cpp(366):需要E2313常量表达式 [BCC32错误]Assessment2.cpp(372):E2034无法将“int[1]”转换为“unsigned int*”


我认为这是因为静态数组需要编译时常量,因此第二个代码永远不会编译。是否有办法?< /P> < P> C++中的前两个参数Borddays:/(代码)>在Delphi中由一个单独的数组参数组成。开放数组由数据指针和指向的数据的最大索引组成。在C++中,不能使用<代码> [1,8] < /Cord>语法。这是Delphi语法。在C++中,使用<代码> ARAYOFFACTIONS()/<代码>或<代码> OpenARAYE()<代码>宏,如:

TMonthCalendar->BoldDays(ARRAYOFCONST((1,8)), MonthBoldInfo);
或:

或者,只需使用自己的数组手动声明参数值:

unsigned int arr[2] = {1,8};
TMonthCalendar->BoldDays(arr, 1, MonthBoldInfo);
更新:OnGetMonthInfo事件的
MonthBoldInfo
参数是一个
无符号长时间&
,但是
BoldDays()
采用一个
无符号整数&
。通过引用传递值时,数据类型需要匹配。你有两个选择:

1) 使用中间变量:

unsigned int arr[2] = {1,8};
unsigned int days;
TMonthCalendar->BoldDays(arr, 1, days);
MonthBoldInfo = days;
2) 使用类型转换:

unsigned int arr[2] = {1,8};
TMonthCalendar->BoldDays(arr, 1, reinterpret_cast<unsigned int&>(MonthBoldInfo));
话虽如此,
OnGetMonthInfo
事件用于检索所有年份中给定月份的粗体天数,即重复事件,因此像您这样使用
TMonthCalendar::Date
属性是没有意义的。您应该使用提供的
Month
参数:

vector<appointment> appts = calCalendar.getAllAppointmentsOnMonth(Month);

谢谢你,雷米。我已经尝试了你的代码,但是遇到了一些问题。我已经更新了我原来的帖子。请看一看。谢谢雷米。你能看看我最新的问题吗。
vector<appointment> appts = calCalendar.getAllAppointmentsOnMonth(TMonthCalendar->Date);
if (!appts.empty())
{
    vector<unsigned int> arr(appts.size());
    for (vector<appointment>::iterator i = appts.begin(); i != appts.end(); ++i)
    {
        arr[i] = DayOf(i->getAppDateTime());
    }
    TMonthCalendar->BoldDays(&arr[0], arr.size()-1, reinterpret_cast<unsigned int&>(MonthBoldInfo));
}
vector<appointment> appts = calCalendar.getAllAppointmentsOnMonth(Month);
vector<appointment> appts = calCalendar.getAllAppointmentsOnMonthOfYear(Month, Year);