请教一下:不在类中而是在某事件代码中使用dodefault()有何意义?
一般在类中子类去调用父类时用dodefault(),但有程序中在某个事件中用了dodefault(),括号内没有参数。它起到什么作用?例1
在VFP中如何从数据表中获取一个字段的最大值
在添加记录时,某一个数据字段自动生成,就是在其最大值的基础上加1
首先定义一变量zmax,存放最大值
在表单的refresh事件中输入以下代码:
sele nj
i=recn()
calculate max(证书编号) to zmax
if zmax=0
zmax=210922000000
go bottom**激活表
else
go i**激活表
endif
在添加按钮的click事件中输入以下代码:
dodefault()
thisform.pageframe1.page1.txt姓名.setfocus
thisform.pageframe1.page1.txt证书编号.enabled=.f.
thisform.pageframe1.page3.txt证书编号.enabled=.f.
if this.caption='保存'**(保存和添加按钮为一个按钮)
thisform.pageframe1.page1.txt证书编号.value=zmax+1
*zmax=zmax+1
*this.refresh()
thisform.refresh() **一定要刷新表单
endif
例2。
图片的处理。在VFP中,可以利用备注型字段来进行图片的存贮,这一功能可以用来保存人员的像片。首先,在数据表中加入备注型字段,假设字段名是photo。然后,在表单中加入Image控件,名为Image1,加入命令按钮控件,Caption设为“更换图片”。
修改表单的Refresh方法程序,代码如下所示:
LOCAL lcFile
IF FILE(Member.Photo) && 检测图片文件是否存在
lcFile = Member.Photo
ELSE
lcFile = ''
ENDIF
Thisform.Image1.picture = lcFile && 在表单控件中显示图片
DODEFAULT() && 执行默认的Refresh方法程序
“更改图片”命令按钮的Click事件程序如下所示:
LOCAL lcFileName
lcFileName = GETPICT("BMP,JPG,GIF", This.Caption, "选择")
IF !EMPTY(lcFileName)
Thisform.Image1.picture = lcFileName
REPLACE member.photo WITH lcFileName
Thisform.Refresh()
例3
ID编号的自动生成。一种办法是用数据表保存下一次的ID编号,新建数据时读取该编号,并对该编号进行加一操作,做为下一次的ID编号进行保存。本人采用程序生成的办法,来直接生成新的ID编号,程序代码如下:
LOCAL lnNew_ID
lnNew_ID = 0
SELECT Member
GO BOTTOM && 读取最末位记录的ID编号加1做为新ID
lnNew_ID = person_id + 1
LOCATE FOR person_id = lnNew_ID
DO WHILE !EOF() && 对新ID进行检测,若重复则加1后再检测
lnNew_ID = lnNew_ID + 1
GO TOP
CONTINUE
ENDDO
DODEFAULT() && 执行默认的新建操作
REPLACE person_id WITH lnNew_ID && 用新ID替换新记录的ID
Thisform.Refresh && 刷新屏幕,显示新ID