不知道你在文本框中輸入日期時是不是感到不方便?反正我是,我經(jīng)常會把"mm-dd-yy"輸成"yy-mm-dd",經(jīng)常會看到“無效的日期”的提示。當(dā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.生日"&&得當(dāng)前日期, 并將生日字段與olecalendar控件綁定 .RefreshDisplay()&&使日歷控件顯示當(dāng)時日期 .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)在可以選擇日期,選擇后關(guā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()) &&新增一個當(dāng)天日期記錄
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()