带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);