Database 版 (精华区)

发信人: mengy (LEAR DLLS 命令时,将从内存中清除), 信区: Database
标  题: VFP经验
发信站: 哈工大紫丁香 (2000年12月07日10:44:44 星期四), 站内信件

VFP经验
 
  从FoxBase到Visual Foxpro、从Dos到Windows操作平台,我已经学习五年的时
间了,期间开发过几个Dos下的管理软件,这对我掌握Foxpro语言打下了基础。从
1996年的六月起开始使用Visual Foxpro 3.0,因此也就转向了Windows操作系统,
开始使用面向对象的编程方法,也开发了许多应用程序。DBTools是对几年来学习
的总结,关于它的设计思路和编程技巧,我想通过陆续的归纳和总结谈谈自己在
VFP使用过程中的一些感受和心得,希望能给VFP初学者一点启发和帮助。同时我对
VFP的掌握和了解很肤浅,也很不全面,希望与广大VFP爱好者多多交流,互通有无
,共同进步!
1.VFP如何入门?

  我学并不是计算机专业,没有经过规范的计算机理论教育,所有的计算机知识
都是自学而成,因而方法可能不是很正规。下面是我学习VFP的一点心得,供大家
参考。我认为应掌握以下要素:

  1.数据库方面:这是最主要的、也是最基础的,数据是管理的对象,一切具体
编程都是以数据库为中心,任何时候都应把对数据的处理作为重点,而不应把时间
过分花在界面美化和修饰上,对数据库的原理应作到心中有数,不要求理论性如何
强,但在实际应用中当拿到一个开发项目时,头脑中首先要数据库的结构、数据流
勾画出来,应注意培养自己把实际工作业务与开发软件之间有机结合的思维、能力
和解决方案。其次应注意到数据库的概念已经进行了扩展,VFP3.0之前的数据库概
念在VFP3.0及以后版本中成为表(数据库表或自由表),而数据库是包含表在内的一
个容器,包含的更多的信息和拓展了功能,包括了数据库内各个表之间的关系、校
验规则,许多原来需要在程序中设置的工作可以在设计数据库时包容进去,这种方
式减少了编程工作和增加了容错性能,随着对数据库概念的了解和深入,您会了解
到数据库的设计比程序开发所占的比重要大许多,设计一个规范的、合理的数据库
可以使编程的工作量成倍的降低。

  2.语言方面:任何一门计算机语言都不应要求将所有命令、函数背在心里,语
法结构能说得头头是道,这样做不仅浪费时间,而且完全没有必要。正确的做法是
:对语言大概有个了解,当遇到一个问题时首先要想的是解决方法,使用的语言能
不能处理,然后再查看相关的帮助文件或者语言手册,根据提示的语法规范编写命
令。同时对语言的掌握应注重它所能完成的功能,这样当学习其他语言时事半功倍
,提高效率。计算机语言具体编程上千差万别,但某些共性的功能处理上却大同小
异,例如变量定义、书写规范、常用函数、循环语句等等,这些是编程的基础。学
习语言不能局限于某个命令或函数本身,而要进行扩展,一通百通,或许这是一种
悟性、一种良好的思维方式,掌握这种学习方法在学习计算机语言是非常重要的。


  3.面向对象的编程:假设大家对前两个要素都具备的话,相信由VFP以前的版
本转向VFP时遇到的最大问题就是面向对象的编程方法,面对大量的属性、方法和
事件无从下手。

  为首先要抛弃传统的编程方法和思路,应该认识到自己是在设计程序而不是编
写程序,我所说的“设计”是狭义的设计,在所见即所得的模式下,程序界面不应
该是一行行代码定义出来的,而是鼠标拖动控件设计出来的,如果不学FOXPRO2.5
而直接学习Visual Foxpro3.0对大家来说相信是件好事,因为没有受到过去编程方
法束缚而需要在观念的转变。在程序中只保留一个PRG主程序文件(没有也可以,直
接将主表单设置为主文件),在任何地方不要出现@...say、Define window、
Define popup等等类似这样的命令,通过表单、自定义类库将各部分连接为一个完
整的系统,DBTools只用了main.prg和一个自定义类库,甚至没有用到表单。

  其次要掌握各种控件的功能:例如Label控件、Text控件、Command控件、
Grid控件等等,何时使用要根据你要实现的功能而定,在表单中适当的布置一下。
VFP提供了十几个控件,要了解每个控件的功能和应用场合并不困难。

  第三就是关于属性、方法和事件,这或许是初学者最先遇到的难点,往往在看
过手册很久却不知所云。表单(或者称为窗口)是一个大集合,控件就是一个小集合
,它包含着自己的表现特征、用户对它进行控制和触发的事件和方法。学习属性、
方法和事件要结合控件。归纳出各个控件所共有的特征,如控件的高度(height)、
宽度(width)、背景颜色(backcolor)、字体(font)、字号(fontsize)、点击事件
(Click)、清除事件(Destory)等等共同拥有的属性、方法和事件,这需要对
Windows平台的感官效果和操作方法上去理解。然后根据每个控件要完成的功能去
了解控件所特有的属性,当然控件的功能相近时其所具有的特征也是类似的,比如
ComboBox和ListBox这两个控件就比较相似。然后再针对每一个控件归纳出哪些属
性、方法和事件是最常用的,当然这需要日常积累才能认识到。

  第四是如何将控件与数据库结合。对于表单应设置数据环境,在数据环境中设
置当前表单所用到的数据库表或者自由表,由于数据环境中的表是随表单的打开和
关闭而自动打开和关闭的,可以解决编程时处理工作区和表而有可能所带来的差错
。控件与表字段的结合是通过控件的controlsource属性设置的,一般使用Text控
件与字段联系。而grid控件与表连接,类似Brow打开表时的列表,但却拥有更强大
的功能,在使用过程中逐渐理解,更灵活的应用Grid控件对系统的可操作性提供更
大的帮助。

  第五是触发事件,之所以将事件单独列出,是因为事件才是我们的代码所存放
的地方,最常用的事件当然是Click事件,就是当鼠标点击这个控件时执行这个控
件的Click事件中存放的你所要完成某个特殊任务的代码,例如在窗口form1中有一
个command1按钮控件,它的click事件中存有你输入的一行代码:use zgda,那么
当鼠标点击这个按钮时就执行打开zgda这个表的操作。事件的使用应从你要操作的
动作上来区分,例如当你双击鼠标要做的工作就要将代码放到DoubleClick事件中
,关键是要掌握动作和触发这两点。

  第六是面向对象编程语言的使用,我们的代码放入控件的事件中,对库的操作
时用标准的foxpro命令来实现,但对表单和控件的控制就要用到面向对象的编程语
言,例如:关闭按钮的click事件中的thisform.releaase命令如何理解,在
Foxbase和Foxpro语言中根本找不到这样的命令。应该说面向对象编程并不是专门
的一门具体语言,它是一种对控件进行控制的方法,基本上可以分为两部分:1.控
件的名称,例如thisform、thisform.command1,this.parent.text1;2.控件的属
性、方法和事件的名称,如width=100、click()、refresh、release。两个部分中
间用“.”连接起来,需要注意的是标明控件的唯一名字,同时更要注意控件父子
关系,例如表单form中有一个pageframe1页控件,包括page1一个页面,在其中布
置一个Text1文本框和Command1按钮,我们要通过Command1按钮的Click事件改变
text1的值(value)为“男”,其Click事件有两种写法:thisform.pageframe1.
page1.text1.value="男",这种方式是从表单一级按容器层次书写,意思为form容
器中的pageframe1页容器下page1页面中的Text1控件的值赋给"男"这个字符;另一
种写法是:this.parent.text1.value="男",由于这个命令是放如command1的
click事件中,因此这种写法是从当前控件出发的,command1和text1同时处于
page1这个容器下,首先是this指定当前控件,后面是parent,位置指向的
command1的父容器(即page1),然后是父容器下的text1控件,即找到了当前对象
(command1)与要操作的对象(text1)的关系,翻译后的意思就是当前对象的父容器
下的对象text1的值赋给"男"这个字符。掌握控件和对象的层次关系是非常重要的
,在初学面向对象编程方法时最常见的错误就是层次不清、条理不明,出现错误摸
不找头绪,其实只要理清各对象之间的父子关系、层次关系,面向对象的编程语法
还是非常简单的,其实可以用句简单的英文句子来理解。

  4.类的使用:类是一个非常大的概念,而且没有通用的标准可言,可以说每个
人对类的理解都不一样,大家都在谈论类,都以为是在说同一件事情,但实际上却
是完全不同的两件事情。我对类的理解也仅限于VFP的具体应用上,而且也不是很
深入,从狭义上谈谈使用类的体会,但我强烈建议编程时使用自己定义的类。

  记得在了解VFP一段时间并编写几个小程序之后,已经被VFP强大的处理功能所
折服,也认为与以前的代码编程方式相比,开发效率和功能完善上已经大大的提高
,可以把程序员从枯燥、烦琐的编写代码之中解脱出来,已经能完成我所要做的任
何工作和功能(就我当时的能力和水平而言),也已经被各种大量复杂的工具、对象
、属性、事件等新鲜的概念弄的眼花缭乱,忽略的对类的学习和使用,认为眼下还
用不到、稍后在学,我相信至今还没有使用类进行编程的许多人同我当时的想法一
样,但你遇到过当完成一个系统后发现所有Text的背景颜色、前景颜色或者字号都
要改变时花费几个小时挨个表单去修改却有个别疏漏掉的情况吗?现在告诉你,只
需几秒中就全部完成,而这只是类的最初级的应用。DBTools没有一个表单,全部
功能都包含在一个类库中。

  对类的学习和使用只能靠自己的理解不断深入,但最初的应用是建立一个自己
的类库,里面包括了form、lable、text、grid等全部对象和控件的自定义类,在
设计时全部使用自己定义的控件类而不是VFP提供的控件,在实践过程中加深认识
,你会有一个自己对类的观点的看法。

  不断完善的自己的类库是对你VFP编程水平的体现。你可能做过不少具体的管
理系统,每完成一个软件时都要有自己应该总结的东西,把你认为好的处理功能加
到你自己的类库中,到下一个软件时拿来用,可以提高效率并减少错误,因为类库
中的东西是你经过检验过的、确实可行的,尽量把类库中的内容做得封装、通用,
在每一次具体使用时传递一个参数即可。如果你的类库中包含了对数据的处理的完
整的各项功能,你会发现编一个软件只是处理何时调用类库和传递参数这样简单,
开发的效率迅速提高,而且也保持操作方式的一致性和连贯性,从而维护也特别方
便。

  对VFP的掌握在你的头脑里有你无形的认识,在具体能力体现上有你自己的类
库。 
 

--

       大海无边天做岸
               山登绝顶我为风

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.227.121]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.980毫秒