不知道你在文本框中输入日期时是不是感到不方便?反正我是,我经常会把"mm-dd-yy"输成"yy-mm-dd",经常会看到“无效的日期”的提示。当你把程序交付给用户使用时,这种不方便一定会影响用户对程序的评价。这个烦人问题困扰我很长时间了,今天无意中查看VFP的示例,在其中发现了一个示例,可以很好的解决这个问题,现在把他写下来,与狐友们分享。
Vfp版本:9.0正式版
操作系统:windows 2000 专业版
在这个示例中使用了VFP自带的类,这个类位于 home()+’ffc\_datetime.vcx’中,类名为_olecalendae
新建一个数据表 test.dbf,,具有两个字段 姓名 c(10) ,生日 d()
随便添加一个记录,
新建一表单:如图

将数据表tese.dbf添加到数据环境中。
上边的文本框与“姓名”字段绑,下边的文本框与“生日”字段绑定。
代码:
“选择日期”按钮
|
#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
|
运行表单
点击“日期选择”按钮会出现下面的效果。

现在可以选择日期,选择后关闭小窗口,生日文本中框中的日期值会变成你选择的日期。
注意:数据表中一定要有记录。
_oleCalendar类位于Home()+'FFC'目录下的_datetime.vcx类库里,拖入到窗口中,右击,点“生成器”,在窗口中的“Field name to bind calendar”处填写要将Calendar绑定的数据库字段名,这样使用时选择好时间,会自动地更新该字段。
例: 数据库名称为table1,里面有一个logdate来与calendar绑定,如果该字段为空,Calendar初始化的时候会提示错误,所以在此之前先插入一条记录。
INSERT INTO table1 VALUES(DATE()) &&新增一个当天日期记录 frmCalendar = CREATEOBJECT('Form') &&创建一个表单 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()
|