不知道你在文本框中輸入日期時是不是感到不方便?反正我是,我經(jīng)常會把"mm-dd-yy"輸成"yy-mm-dd",經(jīng)常會看到“無效的日期”的提示。當你把程序交付給用戶使用時,這種不方便一定會影響用戶對程序的評價。這個煩人問題困擾我很長時間了,今天無意中查看VFP的示例,在其中發(fā)現(xiàn)了一個示例,可以很好的解決這個問題,現(xiàn)在把他寫下來,與狐友們分享。
Vfp版本:9.0正式版
操作系統(tǒng):windows 2000 專業(yè)版
在這個示例中使用了VFP自帶的類,這個類位于 home()+’ffc\_datetime.vcx’中,類名為_olecalendae
新建一個數(shù)據(jù)表 test.dbf,,具有兩個字段 姓名 c(10) ,生日 d()
隨便添加一個記錄,
新建一表單:如圖

將數(shù)據(jù)表tese.dbf添加到數(shù)據(jù)環(huán)境中。
上邊的文本框與“姓名”字段綁,下邊的文本框與“生日”字段綁定。
代碼:
|
“選擇日期”按鈕
|
#DEFINE C_CALCAPTION_LOC "選擇日期"
oCalForm = Create('form')
oCalForm.NewObject("oleCalendar","_olecalendar",HOME()+"FFC\_datetime.vcx")
WITH oCalForm.oleCalendar
.date_column = "test.生日"&&得當前日期, 并將生日字段與olecalendar控件綁定
.RefreshDisplay()&&使日歷控件顯示當時日期
.BackColor = THISFORM.BackColor
.Visible = .T.
ENDWITH
WITH oCalForm
.AutoCenter = .T.
.BorderStyle = 2
.MaxButton = .F.
.MinButton = .F.
.Height = oCalForm.oleCalendar.Height
.Width = oCalForm.oleCalendar.Width
.Caption = C_CALCAPTION_LOC
ENDWITH
oCalForm.Show(1)
THISFORM.Refresh
|
|
“退出”按鈕
|
thisform.Release
|
運行表單
點擊“日期選擇”按鈕會出現(xiàn)下面的效果。

現(xiàn)在可以選擇日期,選擇后關閉小窗口,生日文本中框中的日期值會變成你選擇的日期。
注意:數(shù)據(jù)表中一定要有記錄。
_oleCalendar類位于Home()+'FFC'目錄下的_datetime.vcx類庫里,拖入到窗口中,右擊,點“生成器”,在窗口中的“Field name to bind calendar”處填寫要將Calendar綁定的數(shù)據(jù)庫字段名,這樣使用時選擇好時間,會自動地更新該字段。
例: 數(shù)據(jù)庫名稱為table1,里面有一個logdate來與calendar綁定,如果該字段為空,Calendar初始化的時候會提示錯誤,所以在此之前先插入一條記錄。
INSERT INTO table1 VALUES(DATE()) &&新增一個當天日期記錄 frmCalendar = CREATEOBJECT('Form') &&創(chuàng)建一個表單 frmCalendar.newobject('oleCalendar','_oleCalendar','c:\foxpro\ffc\_datetime.vcx') &&表單中新加入一個calendar對象 WITH frmCalendar.oleCalendar .date_column = 'table1.logdate' &&指定與Calendar綁定的字段 .refreshDisplay() &&使用date_column中的日期來更新calendar的顯示 .backcolor = thisform.BackColor .visible = .T. .Height = 130 .width = 307 ENDWITH
WITH frmCalendar .autocenter = .T. .Borderstyle = 2 .Maxbutton = .F. .MinButton = .F. .Height = 130 .width = 307 ENDWITH
frmCalendar.show(1) thisform.Refresh()
|