论文部分内容阅读
摘要:Visual FoxPro是一个功能强大的数据库管理系统,它以其独到的特点和优势赢得了开发者的青睐。本文指出了Visual FoxPro程序设计中应避免的几个问题,并对此给出了具体的处理方法。
关键词:数据;控件;事件;程序
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)05-10ppp-0c
1 引言
Visual FoxPro中文版是为数据库管理和应用程序开发而设计的功能强大的面向对象的环境。对于组织信息、查询、创建集成的关系型数据库系统与为最终用户编写功能全面的数据管理应用程序,Visual FoxPro可以提供管理数据需要的所有工具,它不仅支持客户/服务模式,而且具有与其他软件共享和交换数据的能力,提供了新的对象和事件处理模式,利用面向对象编程(OOP)的功能使用户能够方便、快捷地建立和修改应用程序,并与其他的数据库管理系统具有更快速、更有效、更灵活的特点。因此,利用Visual FoxPro中文版数据库管理系统(DBMS)来开发数据库系统软件,受到广大软件研制人员的青睐。但是,Visual FoxPro 不是一个十全十美的数据库开发平台,也有美中不足之处。特别是内容极其复杂,技术难点多,软件设计人员要熟练而合理地运用这一新的可视化开发工具,并不是一件容易的事情,往往在软件设计中要走不少弯路,对一些重要内容与技术要通过较多的软件研制实践才能培养起较强的实际应用能力,在实践中积累经验,常常会遇到程序代码正确、测试通过,但没有达到系统运行要求的模块。实质上Visual FoxPro程序设计中应该避免出现这些问题。下面提出几个在教学实践中积累起来的Visual FoxPro 程序设计中应避免的问题及其处理方法,供大家借鉴。
1 表单中控件制作次序不当,造成鼠标点击失效的问题
图2
事件是某个特定时刻所发生的事情,它是引起对象从一种状态转换到另一种状态的现实世界中的事件的抽象。事件是瞬间完成的,设有特定时间,是引起对象状态转换的控制信息。在Visual FoxPro中,可以编写相应的代码对此事件进行响应。在多数情况下,事件是通过用户的交互操作产生的。如果在程序设计中,事件选择不当,会使程序运行达不到预定的目的。如图2,Text5的值来自Text1-Text4数值的运算,Text4数值的运算,Text5项为连动数据项,即在程序运行时Text1-Text4项中某一项值改变了,Text5项中显示值根据计算也立即发生相应的变化。Text1~Text4项中数据宽度根据实际情况进行了限制,如Text1项可输入数值最大为9999,为了程序运行时实现连动数据项数据实时显示,在Text1~Text4的文本框中失去焦点时执行过程代码,来得到Text5项的数值。如果把程序代码
V1=val(thisform.text1.value)*val(thisform.text2.value )
V1=v1 val(thisform.text3.value)*val(thisform.text4.value)
Thisform.text5.value=str(v1)
Thisform.refresh
放入Text1~Text4各自的InterActiveChange事件,结果出现这些文本框中输入数值只能输入一位数值,如Text1输入栏不能输入两位到四位的数值。而Text1文本框的InputMask属性值确实已设置为9999,产生这一现象的原因就是控件的事件选择有问题。如果将上述过程代码放入Text1~Text4各自的Valid事件,问题就不复存在。事实上,Valid事件在控件失去焦点发生,InteractiveChange事件在使用键盘或鼠标更改控件的值时发生,并且在每次交互地更改文本框中的值时,都要发生事件,即当用户在文本框中输入数字时,每单击一次都会引发Interactive Change事件。因此,在处理实际问题时,要根据具体情况,选取适当的事件时机,编写完成特定功能的程序代码。
3 隐含的数据不具备完整性问题
数据是计算机管理和操作的对象,设计程序就是用一系列指令存储数据并操作数据。Visual FoxPro使用户能够方便使用和管理数据,Visual FoxPro中的数据都有一定的数据类型,每一种数据类型决定了这一类型数据的取值方式和运算方式。数据的完整性是指数据的有效性、一致性和兼容性,用Visual FoxPro开发的程序必须保证管理和操作的数据具备完整性,程序设计人员需编写相应的代码或利用系统提供的功能实现数据的完整性约束条件及完整性检验。程序设计人员如果没有周全考虑到这一问题,尽管有些数据的处理在程序运行中没有表现出明显的错误,但由于存在着隐含的数据不具备完整性问题,影响了程序的严密性和软件的整体质量。如图3所示。
图3
程序要求输入起止日期,设计时就要考虑起止日期输入栏中输入的数据具备完整性,输入的数据不符合实际的,要求或允许用户重新输入。处理方法:
(1)要求Textl文本框输入栏输入的起始年份不小于2004,在Text2的GotFocus事件中编写过程代码为:
if val(thisform.text1.value)<2004
messagebox(“请重新输入,年份必须不小于2004”,1 48 256,“出错信息”)
thisform.text1.value=“ ”
thisform.text1.setfocus
thisform.refresh
endif
(2)由于月份介于1-12,这样在Text3的GotFocus事件的过程代码为:
if val(thisform.text2.value)>12 or val(thisform.text2.value)<1
messagebox(“请重新输入月份1-12”,1 48 256,“出错信息”)
thisform.text2.value=“ ”
thisform.text2.setfocus
endif
对于text5的要求一样,只要在Text6的GotFocus事件编写相似的过程代码。
(3)对于Text3文本框输入栏输入的某一日,必须考虑到两点,一是介于1-31,二是某年某月是否有这一日,这一要求可在Text4的GotFocus事件的过程代码中编写为:
if val(thisform.text5.value)>31 or val(thisform.text5.value)<1
messagebox(“请重新输入日期”,1 48 256,“出错信息”)
thisform.text5.value=“ ”
thisform.text5.setfocus
endif
thisform.refresh
Text6的要求与Text3一样,可在“确定”按钮的GotFocus事件中编写相应的过程代码。另外,在这过程代码中考虑到起始日期要比终止日期早。否则有提示信息。要求用户重输入起止日期。
3.4 图3中文本框的初始值以字符型放在表单的Init事件中,Text1与Text4的InputMask属性设置为9999,其余文本框的InputMask属性设为99,所有文本框的Format属性设为x,按起始日期、终止日期输入的年、月、日、“确定”与“取消”命令按钮的顺序设置好Tab键次序。
4 结束语
Visual FoxPro程序设计中应避免的问题不仅仅只涉及到这些,处理方法也不唯一。本文的目的是Visual FoxPro程序设计人员在程序设计中积累经验,少走弯路,使程序运行正常。管理和操作的数据具有完整性。Visual FoxPro以及应用程序能发挥最佳性能.
参考文献:
[1]李雁翎.Visual Foxpm应用基础与面向对象程序设计教程[M].北京:高等教育出版社,2002.
[2]任明汉.编程中值得注意的几个问题[N].电脑报,2001.2:2-3.
[3]史济民,汤观全.Visual Foxpro及其应用系统开发[M].北京: 清华大学出版社,2002.
收稿日期:2007-12-27
关键词:数据;控件;事件;程序
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)05-10ppp-0c
1 引言
Visual FoxPro中文版是为数据库管理和应用程序开发而设计的功能强大的面向对象的环境。对于组织信息、查询、创建集成的关系型数据库系统与为最终用户编写功能全面的数据管理应用程序,Visual FoxPro可以提供管理数据需要的所有工具,它不仅支持客户/服务模式,而且具有与其他软件共享和交换数据的能力,提供了新的对象和事件处理模式,利用面向对象编程(OOP)的功能使用户能够方便、快捷地建立和修改应用程序,并与其他的数据库管理系统具有更快速、更有效、更灵活的特点。因此,利用Visual FoxPro中文版数据库管理系统(DBMS)来开发数据库系统软件,受到广大软件研制人员的青睐。但是,Visual FoxPro 不是一个十全十美的数据库开发平台,也有美中不足之处。特别是内容极其复杂,技术难点多,软件设计人员要熟练而合理地运用这一新的可视化开发工具,并不是一件容易的事情,往往在软件设计中要走不少弯路,对一些重要内容与技术要通过较多的软件研制实践才能培养起较强的实际应用能力,在实践中积累经验,常常会遇到程序代码正确、测试通过,但没有达到系统运行要求的模块。实质上Visual FoxPro程序设计中应该避免出现这些问题。下面提出几个在教学实践中积累起来的Visual FoxPro 程序设计中应避免的问题及其处理方法,供大家借鉴。
1 表单中控件制作次序不当,造成鼠标点击失效的问题

图2
事件是某个特定时刻所发生的事情,它是引起对象从一种状态转换到另一种状态的现实世界中的事件的抽象。事件是瞬间完成的,设有特定时间,是引起对象状态转换的控制信息。在Visual FoxPro中,可以编写相应的代码对此事件进行响应。在多数情况下,事件是通过用户的交互操作产生的。如果在程序设计中,事件选择不当,会使程序运行达不到预定的目的。如图2,Text5的值来自Text1-Text4数值的运算,Text4数值的运算,Text5项为连动数据项,即在程序运行时Text1-Text4项中某一项值改变了,Text5项中显示值根据计算也立即发生相应的变化。Text1~Text4项中数据宽度根据实际情况进行了限制,如Text1项可输入数值最大为9999,为了程序运行时实现连动数据项数据实时显示,在Text1~Text4的文本框中失去焦点时执行过程代码,来得到Text5项的数值。如果把程序代码
V1=val(thisform.text1.value)*val(thisform.text2.value )
V1=v1 val(thisform.text3.value)*val(thisform.text4.value)
Thisform.text5.value=str(v1)
Thisform.refresh
放入Text1~Text4各自的InterActiveChange事件,结果出现这些文本框中输入数值只能输入一位数值,如Text1输入栏不能输入两位到四位的数值。而Text1文本框的InputMask属性值确实已设置为9999,产生这一现象的原因就是控件的事件选择有问题。如果将上述过程代码放入Text1~Text4各自的Valid事件,问题就不复存在。事实上,Valid事件在控件失去焦点发生,InteractiveChange事件在使用键盘或鼠标更改控件的值时发生,并且在每次交互地更改文本框中的值时,都要发生事件,即当用户在文本框中输入数字时,每单击一次都会引发Interactive Change事件。因此,在处理实际问题时,要根据具体情况,选取适当的事件时机,编写完成特定功能的程序代码。
3 隐含的数据不具备完整性问题
数据是计算机管理和操作的对象,设计程序就是用一系列指令存储数据并操作数据。Visual FoxPro使用户能够方便使用和管理数据,Visual FoxPro中的数据都有一定的数据类型,每一种数据类型决定了这一类型数据的取值方式和运算方式。数据的完整性是指数据的有效性、一致性和兼容性,用Visual FoxPro开发的程序必须保证管理和操作的数据具备完整性,程序设计人员需编写相应的代码或利用系统提供的功能实现数据的完整性约束条件及完整性检验。程序设计人员如果没有周全考虑到这一问题,尽管有些数据的处理在程序运行中没有表现出明显的错误,但由于存在着隐含的数据不具备完整性问题,影响了程序的严密性和软件的整体质量。如图3所示。

图3
程序要求输入起止日期,设计时就要考虑起止日期输入栏中输入的数据具备完整性,输入的数据不符合实际的,要求或允许用户重新输入。处理方法:
(1)要求Textl文本框输入栏输入的起始年份不小于2004,在Text2的GotFocus事件中编写过程代码为:
if val(thisform.text1.value)<2004
messagebox(“请重新输入,年份必须不小于2004”,1 48 256,“出错信息”)
thisform.text1.value=“ ”
thisform.text1.setfocus
thisform.refresh
endif
(2)由于月份介于1-12,这样在Text3的GotFocus事件的过程代码为:
if val(thisform.text2.value)>12 or val(thisform.text2.value)<1
messagebox(“请重新输入月份1-12”,1 48 256,“出错信息”)
thisform.text2.value=“ ”
thisform.text2.setfocus
endif
对于text5的要求一样,只要在Text6的GotFocus事件编写相似的过程代码。
(3)对于Text3文本框输入栏输入的某一日,必须考虑到两点,一是介于1-31,二是某年某月是否有这一日,这一要求可在Text4的GotFocus事件的过程代码中编写为:
if val(thisform.text5.value)>31 or val(thisform.text5.value)<1
messagebox(“请重新输入日期”,1 48 256,“出错信息”)
thisform.text5.value=“ ”
thisform.text5.setfocus
endif
thisform.refresh
Text6的要求与Text3一样,可在“确定”按钮的GotFocus事件中编写相应的过程代码。另外,在这过程代码中考虑到起始日期要比终止日期早。否则有提示信息。要求用户重输入起止日期。
3.4 图3中文本框的初始值以字符型放在表单的Init事件中,Text1与Text4的InputMask属性设置为9999,其余文本框的InputMask属性设为99,所有文本框的Format属性设为x,按起始日期、终止日期输入的年、月、日、“确定”与“取消”命令按钮的顺序设置好Tab键次序。
4 结束语
Visual FoxPro程序设计中应避免的问题不仅仅只涉及到这些,处理方法也不唯一。本文的目的是Visual FoxPro程序设计人员在程序设计中积累经验,少走弯路,使程序运行正常。管理和操作的数据具有完整性。Visual FoxPro以及应用程序能发挥最佳性能.
参考文献:
[1]李雁翎.Visual Foxpm应用基础与面向对象程序设计教程[M].北京:高等教育出版社,2002.
[2]任明汉.编程中值得注意的几个问题[N].电脑报,2001.2:2-3.
[3]史济民,汤观全.Visual Foxpro及其应用系统开发[M].北京: 清华大学出版社,2002.
收稿日期:2007-12-27