| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 814 人关注过本帖
标题:请教一下:不在类中而是在某事件代码中使用dodefault()有何意义?
只看楼主 加入收藏
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1539
专家分:180
注 册:2006-6-3
结帖率:79.38%
收藏
已结贴  问题点数:20 回复次数:15 
请教一下:不在类中而是在某事件代码中使用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

搜索更多相关主题的帖子: bottom 数据表 最大值 
2013-01-24 18:05
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
事件代码就是在类代码

授人以渔,不授人以鱼。
2013-01-24 18:07
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1539
专家分:180
注 册:2006-6-3
收藏
得分:0 
上面例子中如果不写DODEFAULT()也可以吗?通常很少看到
2013-01-24 18:14
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
Click和Refresh之类的,不需要再调用父类代码。

授人以渔,不授人以鱼。
2013-01-24 18:21
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1539
专家分:180
注 册:2006-6-3
收藏
得分:0 
Click和Refresh之类,DODEFAULT() 可写可不写,哪么哪一些事件一定要写呢?请举一些常见的好吗?
2013-01-24 20:03
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
很少需要写的。keypress会用到,init也会。

授人以渔,不授人以鱼。
2013-01-24 20:28
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1539
专家分:180
注 册:2006-6-3
收藏
得分:0 
谢谢!有否用到keypress与init此简单的例子吗?
2013-01-24 21:22
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
有空给你举个例子

授人以渔,不授人以鱼。
2013-01-24 21:26
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1539
专家分:180
注 册:2006-6-3
收藏
得分:0 
好的,先谢了,静盼佳音
2013-01-24 21:44
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1539
专家分:180
注 册:2006-6-3
收藏
得分:0 
好的,先谢了,最好分别举二个例子,并有代码的注释。要求过分了吧,静盼佳音!
2013-01-24 21:46
快速回复:请教一下:不在类中而是在某事件代码中使用dodefault()有何意义?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022820 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved