Calendar 控件位于 MSACAL70.OCX 中(在 \WINDOWS\SYSTEM 目錄中; 在幫助文件中錯(cuò)誤的描述為 MSACAL.OCX)。幫助文件名為 MSACAL70.HLP。該控件提供了在你的應(yīng)用程序中包含日歷的能力。該控件的一個(gè)顯而易見(jiàn)的用處是當(dāng)用戶在日期型字段上右擊鼠標(biāo)時(shí)顯示一個(gè)日歷讓用戶選擇一個(gè)日期值。
方法和事件
Calendar 控件中的方法主要用于編程地控制日期,包括 NextDay,NextWeek,NextMonth,PreviousDay,PreviousWeek 和 PreviousMonth。當(dāng)然也可以提供按鈕或其它方法來(lái)調(diào)用這些方法,但由于用戶可以在日歷中單擊各種控件來(lái)修改日期,所以我沒(méi)有在這方面作過(guò)多的探索。
除 Click,DblClick 和 KeyPress 這樣的常用事件,Calendar 控件還有 AfterUpdate,BeforeUpdate,NewMonth 和 NewYear 事件,這些事件允許你在用戶改變了某些東西后,執(zhí)行一些可能需要的特殊的處理。我想你會(huì)用到的最常用的事件是 DblClick,該事件可用于當(dāng)用戶選擇了一個(gè)日期后,釋放或隱藏 Calendar 控件.
屬性
Calendar 控件的屬性比它的方法和事件更有趣。你可能想設(shè)置一些屬性,如顏色(BackColor,DayFontColor,GridFontColor,GridLinesColor,TitleFontColor),字體 (DayFont,GridFont,and TitleFont),和控件的其它初始顯示屬性(DayLength,F(xiàn)irstDay,GridCellEffect,MonthLength,ShowDateSelectors,ShowDays,ShowHorizontalGrid,ShowTitle,and ShowVerticalGrid),這些屬性可以通過(guò)右擊菜單從 Calendar 控件屬性表中進(jìn)行訪問(wèn)。Value 屬性包含在日歷控件中選定的日期,Day,Month 和 Year 屬性包含日期的相關(guān)部分的值。
通常,你會(huì)設(shè)置控件的 Value 來(lái)指定一個(gè)日期(例如,在控件的 Init 事件中),該日期是被高亮顯示的默認(rèn)日期,在用戶選定一個(gè)日期后,可以從 Value 中讀取用戶選擇的日期值。
示例
我創(chuàng)建了一個(gè)包含日歷控件和一些按鈕的容器類(源代碼中的 ACTIVEX.VCX 類庫(kù)中的 SFCalendaron 類) 和一個(gè) SFDateSpinner 類(源代碼中的 CONTROLS.VCX 類庫(kù)中) ,適用于在用戶從右擊菜單選擇"日歷"時(shí)實(shí)例化 SFCalendar。
SFDateSpinner 類是一個(gè)容器類,擁有一個(gè)文本框和數(shù)碼器(只有上下鍵頭是可訪問(wèn)的)。數(shù)碼器用于增加和減少文本框中的日期值,文本框的 KeyPress 方法中的代碼模仿快速填充日期按鍵。當(dāng)用戶在文本框上右擊時(shí),調(diào)用 ShortcutMenu 方法來(lái)顯示一個(gè)快捷菜單(采用硬編碼并封閉于控件的該方法中)。如果用戶從菜單中選擇了 "日歷",會(huì)調(diào)用 ShowCalendar 方法。該方法從 cCalendarClass 屬性(該屬性的默認(rèn)值是 SFCalendar )是指定的類中,實(shí)例化一個(gè)對(duì)象。NEWOBJ.PRG 用于確保存該類所在的類庫(kù)是打開的。
SFCalendar 控件接收一個(gè)對(duì)象參數(shù),因此它可以在對(duì)象釋放前修改對(duì)象的值為用戶選擇值。當(dāng)用戶雙擊一個(gè)日期或選擇 保存 或 退出 按鈕時(shí),該對(duì)象被釋放。
方法和事件
Calendar 控件中的方法主要用于編程地控制日期,包括 NextDay,NextWeek,NextMonth,PreviousDay,PreviousWeek 和 PreviousMonth。當(dāng)然也可以提供按鈕或其它方法來(lái)調(diào)用這些方法,但由于用戶可以在日歷中單擊各種控件來(lái)修改日期,所以我沒(méi)有在這方面作過(guò)多的探索。
除 Click,DblClick 和 KeyPress 這樣的常用事件,Calendar 控件還有 AfterUpdate,BeforeUpdate,NewMonth 和 NewYear 事件,這些事件允許你在用戶改變了某些東西后,執(zhí)行一些可能需要的特殊的處理。我想你會(huì)用到的最常用的事件是 DblClick,該事件可用于當(dāng)用戶選擇了一個(gè)日期后,釋放或隱藏 Calendar 控件.
屬性
Calendar 控件的屬性比它的方法和事件更有趣。你可能想設(shè)置一些屬性,如顏色(BackColor,DayFontColor,GridFontColor,GridLinesColor,TitleFontColor),字體 (DayFont,GridFont,and TitleFont),和控件的其它初始顯示屬性(DayLength,F(xiàn)irstDay,GridCellEffect,MonthLength,ShowDateSelectors,ShowDays,ShowHorizontalGrid,ShowTitle,and ShowVerticalGrid),這些屬性可以通過(guò)右擊菜單從 Calendar 控件屬性表中進(jìn)行訪問(wèn)。Value 屬性包含在日歷控件中選定的日期,Day,Month 和 Year 屬性包含日期的相關(guān)部分的值。
通常,你會(huì)設(shè)置控件的 Value 來(lái)指定一個(gè)日期(例如,在控件的 Init 事件中),該日期是被高亮顯示的默認(rèn)日期,在用戶選定一個(gè)日期后,可以從 Value 中讀取用戶選擇的日期值。
示例
我創(chuàng)建了一個(gè)包含日歷控件和一些按鈕的容器類(源代碼中的 ACTIVEX.VCX 類庫(kù)中的 SFCalendaron 類) 和一個(gè) SFDateSpinner 類(源代碼中的 CONTROLS.VCX 類庫(kù)中) ,適用于在用戶從右擊菜單選擇"日歷"時(shí)實(shí)例化 SFCalendar。
SFDateSpinner 類是一個(gè)容器類,擁有一個(gè)文本框和數(shù)碼器(只有上下鍵頭是可訪問(wèn)的)。數(shù)碼器用于增加和減少文本框中的日期值,文本框的 KeyPress 方法中的代碼模仿快速填充日期按鍵。當(dāng)用戶在文本框上右擊時(shí),調(diào)用 ShortcutMenu 方法來(lái)顯示一個(gè)快捷菜單(采用硬編碼并封閉于控件的該方法中)。如果用戶從菜單中選擇了 "日歷",會(huì)調(diào)用 ShowCalendar 方法。該方法從 cCalendarClass 屬性(該屬性的默認(rèn)值是 SFCalendar )是指定的類中,實(shí)例化一個(gè)對(duì)象。NEWOBJ.PRG 用于確保存該類所在的類庫(kù)是打開的。
SFCalendar 控件接收一個(gè)對(duì)象參數(shù),因此它可以在對(duì)象釋放前修改對(duì)象的值為用戶選擇值。當(dāng)用戶雙擊一個(gè)日期或選擇 保存 或 退出 按鈕時(shí),該對(duì)象被釋放。