thisform.edtjl.enabled=.t. thisform.cmdgr.cmd1.enabled=.t. thisform.refreshthisform.cmdgr.cmd2.enabled=.t. cmd1 的 click 事件代码: thisform.cmdgr.cmd3.enabled=.t. sele student thisform.cmdgr.cmd4.enabled=.t. if not bof() thisform.cmdgr.cmd5.enabled=.t. go top
endif
thisform.txtxh.value=学号 if recno()==reccount()
thisform.txtxm.value=姓名 thisform.cmdgr.cmd3.enabled=.f. thisform.edtjl.value=简历 thisform.cmdgr.cmd4.enabled=.f. thisform.cmdgr.cmd1.enabled=.f. endif thisform.txtxh.value=学号 thisform.cmdgr.cmd2.enabled=.f. thisform.txtxm.value=姓名 endif
thisform.edtjl.value=简历 thisform.cmdgr.cmd3.enabled=.t. thisform.refresh
thisform.cmdgr.cmd4.enabled=.t. cmd4 的 click 事件代码: thisform.cmdgr.cmd5.enabled=.t. sele student thisform.refresh
if not eof() cmd2 的 click 事件代码: go bottom
sele student if not bof() skip -1 endif if bof()
thisform.cmdgr.cmd1.enabled=.
f.
图 1
图 2
thisform.cmdgr.cmd4.enabled=.f. endif thisform.cmdgr.cmd1.enabled=.t. thisform.cmdgr.cmd2.enabled=.t. thisform.cmdgr.cmd5.enabled=.t. thisform.txtxh.value=学号 thisform.txtxm.value=姓名 thisform.edtjl.value= 简历 thisform.refresh
cmd5 的 click 事件代码:
thisform.release 通过运行表单,把光标定位在编辑
框edtjl中就可以完成对表student简历字 段的修改工作,要想让表 student 中学 号、姓名、简历各字段内容变成只读输 出,只需让 Form1 的 init事件代码做如下 改动即可 :
close all use student
thisform.cmdgr.cmd1.enabled=.f. thisform.cmdgr.cmd2.enabled=.f. thisform.cmdgr.cmd3.enabled=.t. thisform.cmdgr.cmd4.enabled=.t. thisform.cmdgr.cmd5.enabled=.t. thisform.txtxh.readonly=.t. thisform.txtxm.readonly=.t. thisform.edtjl.readonly=.t. thisform.refresh
4 、用报表对备注型字段进行输出 操作
在打印输出时,可以在报表设计器里将 备注型字段作为一个普通字段来处理, 为了分别打印输出每位同学的简历信息,
下转第 116 页 图 3
信息科技
Point(int a,int b){
setPoint(a,b);
}
public void setPoint(int a,int b){ x=a; y=b; } }
class Circle extends Point{ int radius; Circle(int a,int b,int
r){ super(a,b); setRadius(r);
}
public void setRadius(int r){ radius=r; }
public double area(){
return 3.14159*radius*radius; } }
以上代码定义了一个 Point (点) 类,包含两个属性 x、y,分别代表点的 横坐标和纵坐标;包含一个构造方法和 一个设置点的坐标的方法setPoint。定义 了一个 Circle(圆形)类,该类从 Point 类继承,添加了 radius 属性,表示圆的 半径;包含了一个返回圆的半径和返回 圆的面积的方法。因为 Circle 类从 Point 类继承,所以 Circle还包含从 Point类继 承得到的 x、y 属性,它们代表了圆心的 横坐标和纵坐标。
这段代码的设计意图是:在平面直 角坐标系中,点可以由横坐标和纵坐标 确定,因此 Point 类定义了两个属性 x、 y,分别表示点的横坐标和纵坐标。而圆 可以由圆心的位置和圆的半径确定,所 以Circle类应该包含圆心的位置、圆的半 径两个属性。又因为已经定义了 Point 类,用于表示点,所以让 Circle 类从 Point 类继承,便可以从 Point 类得到 x、 y 属性,用于保存圆心位置的横坐标和纵 坐标。
这段代码可以正确地编译运行。可 以减少代码编写量,因为 Circle 类从 Point 类继承,就省去了声明两个变量用 于保存圆心的横坐标和纵坐标。
} }
在上述代码中,Point 类的定义保持 不变。而 Circle 不再是继承自 Point 类, Circle类包含一个Point类型的成员变量 center和一个int型属性raidus,center用 于表示圆形的圆心,radius依然用于表示 圆形的半径。Circle类的构造方法相应的 也作了修改,使得我们可以用圆心和半 径初始化圆形对象。
上述代码与我们的思维方式吻合,显 得非常自然。
}
public double area(){
return 3.14159*radius*radius;
参考文献 [1]谢赝白,等.Visual FoxPro 6.0 程序设 计教程.北京:人民邮电出版社.2003 [2]郑尚志,等.Visual FoxPro 6.0 程序设 计教程 .合肥:安徽大学出版社.2002 [3]韩中孝,等.Visual FoxPro数据库系统 项目开发实践.北京:科学出版社.2005 作者简介 王亚军(1978 —)男,安徽涡阳县人,安徽 科技学院计算机系讲师,主要研究数据库及网 络 赵海燕(1977 —)女,安徽砀山县人,安徽科 技学院计算机系助教,主要研究程序设计及计 算机教学 }
public void setRadius(int r){ radius=r; } } class
Circle{ Point center; int radius;
Circle(Point c,int
r){ center=c; setRadius(r);
}
public void setPoint(int a,int b){ x=a; y=b;
但是这段代码并没有正确地使用继 承。在上述代码中,使用Cricle继承Point 类,不太妥当。因为圆形并不是点,所以
参考文献 [1] 张德惠,周元哲.C++面向对象程序设 计[M].第1版.北京:科学出版社.2005. 中国科技信息 2007 年第 14 期 CHINA SCIENCE AND TECHNOLOGY INFORMATION Jul.2007 邵丽萍,邵光亚,张后扬.Java语言程序 它们之间不是“是一个”的关系,不应该 [2] 让Circle类继承自Point类。 设计[M].第2版.北京:清华大学出版正确的做法应该是使用组合。Circle 社. 2004. 崔永红.C++面向对象程序设计[M].第 类包含的属性包括:圆心和半径。因为 [3] 已经定义了 Point 类,我们可以让 Circle 1版.北京:北京出版社.2005. 类包含一个 Point类型的对象用来表示 [4] 刘玉英 主编.程序设计基础—C++[M]. 圆 心 。
使用组合,该将上述代码改写为:
class Point{
int x,y;
Point(int a,int b){
setPoint(a,b);
第 1版.北京:人民邮电出版社.2006. 作者简介 曾煌存, 男, 硕士, 助教。 研究方向 : 信息技术基础教育。 上接第 114 页 在设计报表时我们按学号进行分组,且将组 属性设置为 “每组从新的一页上开 始”,设计的报表如图 2 所示。预览上面 报表可以将备注型字段内容显示出来,也可 将其打印出来,只要联上打印机即可,打 印预览窗口如图 3 所示。 5 、结束语 通过对数据表中备注型字段的介绍,了 解了备注型字段内容的正确输入输出方法。 运用这些方法能有效处理数据表中备注型 字段的输入输出,特别是在表单中使用编辑 框控件输入输出更是可以做到所见即所得。 报表的使用为备注字段内容的打印输出提 供了便捷的手段。对备注型字段内容的有 效处理对管理信息系统的开发具有十分重 要的意义。