目前,VisualFoxPro在数据库应用系统的开发中得到了广泛的应用,系统的开发技巧和注意事项受到人们的关注,本文叙及的两个编程技巧,实现非常简单,但在实际应用中起到了很好的作用。
1.跟变式组合框
在实际应用系统中,常常采用下拉列表框实现字符字段数据的规范化输入,并且往往一个数据表中会有多个这样的数据字段,而对应这些字段的规范化数据则作为枚举数据统一放在一个枚举数据表里进行管理。这就出现一个问题,对应不同字段的枚举数据有宽有窄,为了存下所有这些数据,枚举数据表的数据字段要足够的宽,但对于目标数据库的控制字段,显然要根据业务对数据的要求和节省空间的考虑,将字段设计成合适的宽度。对VFP来说,若列表数据宽度超出控制字段宽度,则文本框不能显示选定数据,这一点常常被编程者忽视,而造成提交给用户的程序不能正常运行。其实只要在设计下拉列表框时稍加几行代码就能解决这个问题,并且还能实现下拉列表框和文本框自动跟随控制字段的宽度发生变化,使对象宽度始终与字段宽度一致。
假设控制数据表KZB.DBF的控制字段名为A1,实际应用系统中,A1相当于不同数据表中的不同枚举字段。枚举表MJB.DBF将应用系统的所有枚举数据集中管理,枚举表最少包括两个字段:枚举数据和枚举字段标志,这里的枚举数据字段名为CC,枚举字段标志为MJBZ。图1为控制表字段A1宽度为10的情况,图2为控制表字段A1宽度调为26的情况。具体实现方法是:先在表单的数据环境中添加控制表和枚举表,在组合框的InitEvent方法中加入如下代码:
KD=LEN(KZB.A1)
THIS.WIDTH=31+6.3*KD
SELEMJB
CREATCURSORLS(CCC(KD))
APPEFROMMJBFORMJBZ="测试"
&&完成对应该字段的枚举数据筛选。
一般一个系统的枚举字段的枚举数据总计不过几百,在INIT中创建游标是不会影响速度的。在设计列表时,要在组合框的RowSource处标写游标名LS,这种功能的实现只需加写很少的代码,但却在实际应用中起到了很好的作用。
2.椭圆图形菜单
在应用系统中,常用大按钮作为子系统的启动按钮,VFP中的按钮一般为矩形,这里介绍一种制作椭圆图形钮式菜单的方法。
制作方法:先在VFP的表单中填加图形控件SHAPE,关键是将SHAPE的Curvature属性值设为99,这将使控件形状由矩形变成圆或椭圆。之后,将SHAPE的BackStyler设置为"0,透明",BorderWidth属性设置为合适的宽度,如2~3,使放在其底部的图形能很好的与其吻合,椭圆图形的BorderColor属性按合适的颜色进行设置,其它属性按缺省值设置。到此,我们设计好了透明的椭圆图形,目的是用它模拟一个按钮,实现点击椭圆内部发生CLICK事件,而点击其外部不发生CLICK事件。下一步是要在椭圆图形的下面放置一个合适的图片,图片的形状要和椭圆图形一样,同样,用填加控件的方法填加图片控件Picture,图片的BackStyler设置为"0,透明",再设置Picture属性中的图片文件名。调整图片的位置,使椭圆图形与图片具有整体感。为了模拟按钮的CLICK动作,我们利用椭圆图形的MouseDownEvent方法,在其中填加如下代码:
LPARAMETERSnButton,nShift,nXCoord,nYCoord
H=THIS.LEFT+THIS.WIDTH/2
K=THIS.TOP+THIS.HEIGHT/2
A=THIS.WIDTH/2
B=THIS.HEIGHT/2
y1=k-b*SQRT(1-(nXCoord-h)^2/(a^2))
y2=k+b*SQRT(1-(nXCoord-h)^2/(a^2))
IFnYCoord>Y1.AND.nYCoord<Y2
THIS.PARENT.LABEL5.VISIBLE=.T.
&&点中椭圆内部
THIS.PARENT.LABEL6.VISIBLE=.F.
&&点中椭圆外部
*DOFORMSUBFORM1
&&下级表单
ELSE
THIS.PARENT.LABEL5.VISIBLE=.F.
THIS.PARENT.LABEL6.VISIBLE=.T.
ENDI
当用鼠标点击椭圆内部时,表单底部显示"你点中了按钮内部";点击椭圆外部时,表单底部显示"你点中了按钮外部"。此段代码可以实现点击鼠标左键激活下级表单的功能,为保证表单操作的可靠,最好将主表单的WindowType属性设为"1-模式"。
输入您的搜索字词提交搜索表单
以上表单在联想P5/133机上调试通过。
责任编辑:小草