Microsoft Visual FoxPro 中文教程_第1页
Microsoft Visual FoxPro 中文教程_第2页
Microsoft Visual FoxPro 中文教程_第3页
Microsoft Visual FoxPro 中文教程_第4页
Microsoft Visual FoxPro 中文教程_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Microsoft Visual FoxPro 6.0中文版教程初级教程目录Microsoft Visual FoxPro 6.0中文版教程1初级教程目录1第一课 开场白2第二课 见识一下面向对象的编程2第三课 对象、属性、事件、方法14属性(property):15事件(event):15方法(method):15第四课 常用的对象、属性、事件、方法16对象(object):16属性(property):17事件(event):23方法(methord):24第五课 常用编程命令及常用函数24命令24函数30第六课 编一个完整的软件36第七课 编程中的一些小技巧37一、 复制37二、 缩格及

2、空行38三、 在程序中插入对象名称39四、 精确调整对象位置39五、 为文件写说明39六、 重命名文件40七、修改数据表时调整字段位置40八、调整表格中各列的位置40九、设置控件的tabindex位置41十、改程序前应先改系统分析41十一、删除项目管理器中的文件42十二、将磁盘上的文件添加到项目管理器中42十三、设置主程序42第八课 程序的调试42第九课 软件的编译及制作安装盘45软件的编译45制作安装盘46第一课 开场白很简单,只讲两个问题:一、项目管理器;二、数据库和表的区别。一、在开发一个软件项目的过程中往往会产生大量的各种文件,有时开发者自己都不知道有些什么文件了,因此从VISUAL

3、FOXPRO开始引入了项目管理器,以便更好地管理这些文件。项目管理器由两个文件组成,扩展名分别是“PJX”和“PJT”。 二、学过FOX的人都知道数据库是什么,就是有字段、记录的一个二维表,也就是那个DBF文件,可是到了VISUAL FOXPRO 3.0,这数据库就不叫数据库了,它干脆就叫“表”,英文叫“TABLE”。而数据库是包含有多个表的文件,扩展名是“DBC”,也就是数据库的库,引入DBC文件的一个主要目的是为了对表能够很好地分类管理。而不包含在数据库中的表,叫做自由表,其使用方法与原来的数据库基本相同。如果你对 FOXPRO 一点都不了解,那就先看看这里。第二课 见识一下面向对象的编程

4、我们先来编一个幸运7游戏机程序,也可以叫做一个游戏软件,亲身感受一下面向对象编程是怎么回事。也许您已经有了面向过程的编程(即传统的编程)经验,那么在这里您会感到面向对象编程真是一件很享受的事情。如果您没有面向过程的编程经验,那太好了,您永远都不会陷入一大堆复杂的代码中找不着北,而能在轻松之中便编出具有专业水准的程序。言归正传,前面讲过编一个软件会产生很多文件,如果只是编一个简单的软件,也可能只有一个文件,但不管多少,我们首先要在硬盘上为这个软件建一个目录,然后在编程的过程中,将产生的有关文件全部放在这个目录中以便于管理。目录建好后启动FOXPRO 5.0(3.0也行),启动后将看到图1。开始编

5、软件之前先说明一下这是一个什么软件,它是一个类似赌博的游戏机,图2。 按下开始按钮后,上面的三个窗口就会出现三个随机数,如果其中有“7”则赢,否则为输。现在开始正式编程,按第一课讲的首先要建一个项目管理器(它和上面所说的目录不同,目录是为了把所有文件放在一起以免与其它文件混淆,项目管理器则是将各种文件分类),建立的方法是调用菜单中的“文件”下的“新建”命令,或按工具栏上的“新建”按钮,接着会出现图3。 按新建文件(隐含为新建项目管理器,即文件类型为“项目”),接着在下面的窗口中输入项目管理器的文件名(如“xy7”,不用扩展名),然后选择保存目录,即在上面的“保存在”选择框中找到您所建的目录,并

6、将其打开,图4。 接着出现图5。 按“文档”得到图6,注意此时“表单”是反白的,如不是用鼠标点一“表单”。 按“新建”得到图7。 按“新建表单”得到图8。 这里我们看到有一个表单设计器,其中的“Form1”就是要用来编游戏机的界面,也就是被称为“表单”的东西,现在我们就要用这个表单设计器来设计我们的游戏机界面。下面开始制做显示数字的文本框,调出表单控件工具栏,方法为按工具栏按钮,出现图9: 调用文本框控件,即按下文本框按钮,把鼠标移到表单Form1上,其光标应变成“十”字型,将鼠标移到一个您认为适当的位置,按下左键,向右下方拉,使拉出的文本框大小适当,松手,得到图10,(在此约定,以后如没有特

7、别说明,“按鼠标”即指按鼠标左键,其它如“点”、“按”、“用鼠标按”等也同样): 这样就做好了文本框Text1,用来在软件中显示第一个随机数。如觉得位置不理想,可用鼠标按住它,将其移到合适的位置,如感到大小不合适,可用鼠标按住文本框四周的8个黑点中的任一个,上下左右拉动来改变其大小。接下来设置文本框的其它属性,如字体大小,用鼠标按“属性窗口”按钮(如该按钮是凹下的,如图,说明属性窗口已调出,只是被表单控件工具栏给挡住了,再按一下工具栏的按钮关闭工具栏即可),然后在属性窗口中点“布局”,再按上下滚动条找到“FontSize”属性,即“字体尺寸”属性,如图11。 按上面设置框的向下箭头,将字体设为

8、48,如图12, 文本框变为如图13所示,显示的字体变大了。 另一个需要设置的属性是“水平对齐方式”,在布局中找到“Alignment”属性,在第一行,将其设为“2中间”,方法与设字体大小是差不多的,想必聪明的您不用我给图示也能做到了。这样第一个文本框便设置好了,按同样方法做出第2、3个文本框,如图14。 这里要注意一点,在设置哪个文本框时,一定要选中所要设的对象,即能看到其周围有8个黑点,如没有,需用鼠标点它一下,今后设置其它的对象时也是一样。下一步制做显示输、赢的文本标签,调出工具栏(如工具栏被属性窗口挡住了,再按一下属性窗口按钮将其关闭),按标签按钮,按制做文本框类似的方法做出标签,如图

9、15。设置其标题,调出属性窗口,在布局中找到“Caption”属性,即“标题”属性,在设置框中输入“赢”,然后回车,结果如图16。与文本框相同的方法设置字体大小为36,如图17。接着将这个标签设为看不见,因为要赢了以后才把它显示出来,所以事先应是看不见的,方法是在布局中找到“Visible”属性,即“可见”属性,其隐含为“真”,即“T”,也就是能看见,将其设为假,即“F”,如图18,那么程序一旦运行起来,它就看不见了,当然在设计程序时它还是看得见的。至于想知道赢了后怎样让它显示出来,那您接着往下看。然后按同样方法制做“输”字,自然也要设为看不见,否则您就只输不赢了,做好后如图19。接下来制做按

10、钮,按下控件工具栏上的“命令按钮” ,在表单上以制做文本框的同样方法做出第一个按钮,如图20, 然后设置其标题为“开始”,方法同设置标签的标题,设好后如图21。 之后如法炮制做出“退出”按钮。最后再给这个表单也设个标题,用鼠标点一下表单“Form1”的空白地方,不要点其中的控件,如文本框、按钮等,然后如前一样设置其“Caption”属性为“幸运7游戏机”,做好后如图22。 到此为止,我们这个软件的界面就全部做好了。怎么样,不难吧?下面要做的事情就是为按钮设置动作程序,也就是当按钮被按下这一事件发生后电脑要做些什么事,这就要为按钮的相应动作编一些代码,先来编“退出”按钮,因为它比较简单。一个按钮

11、,或者说一个对象,可以有很多动作,换句话说可以有很多事件发生在它身上,但对于已经使用的对象来说,可能只有某一个或几个动作有用。对于按钮来说最常发生的事件就是被鼠标左键按动,我们这个软件中按钮所发生的事件也就是这个,对“退出”按钮来说,就是它在被按动后程序要退出,现在我们就来编完成这一任务的代码。方法是:先用鼠标点一下“退出”按钮,使其被选中,这样后面编的代码才是它的,否则就可能编到别的对象中去了,这样就达不到要求。在属性窗口中选择“方法程序”,然后在其中找到“Click Event”,即“按动事件”,如图23。 双击“Click Event”,出现编程窗口,如图24, 注意,其中的对象窗口中是

12、“command2”,即退出按钮的名称(名称与标题不是一回事,虽然他们可以一样,详细的以后再讲),过程窗口中显示的是“Click”,即现在所编的程序(也叫过程)是针对“按动”事件的。如感到属性窗口挡住了编程窗口,可将其关闭。这里的程序只有一句话:thisform.release意思是“本表单.释放”,也就是将这个表单关闭,这样整个软件也就运行结束了。程序写好后如图25, 然后选择菜单上的“文件”下面的“关闭”命令。就这么简单?就这么简单!“退出”按钮编好后就要编“开始”按钮,这个按钮会稍微复杂一点,同样先按前面的方法进入程序窗口,但这次应是“Command1”的“Click”事件。代码如图26

13、。 其中:if thisform.text1.value=7 .or. ; thisform.text2.value=7 .or. ; thisform.text3.value=7是一条语句,由于一行写出来太长,不易读,故将其分为三行,除最后一行外,前面每行都以分号结尾,这样系统就知道把它们看做是一行来处理。另外“or”(或者)两边各有一个点,不能少。程序中所有的命令、运算符号,如等号、分号、点号等,都必须是半角字符。每行语句后面,从“&&”开始的文字是用于对程序进行解释和说明的,不会影响程序的运行,有也可,没有也可,但如果有的话,前面一定要以“&&”开头,并与

14、命令语句空开一格以上。与“退出”按钮一样,“开始”按钮的程序写好后,关闭程序设计窗口,这样整个程序就编好了。程序编好后,先按一下表单设计器窗口,再按菜单上“文件”下的“保存”命令,即将编好的内容保存到磁盘上,接着按菜单上“文件”下的“关闭”命令,这样整个软件就编完了。如果没有先按一下表单设计器,即没有将表单设计器的窗口激活(窗口的标题为蓝底白字),可能造成关闭了其它的窗口。表单设计关闭后可看到如图27情况。 这时先用鼠标点一下“xy7”表单,使其反白(如果已经是反白的,当然不需再点了),然后按项目管理器上的“运行(U)”,如果程序没有错的话,软件便能正常运行起来。看看您的手气怎样,能不能第一次

15、就赢,我编好这个程序后第一次按下就出了“7”,手气真不错。如果有错误,会出现类似图28的显示, 这时按“取消”,然后按“退出”退出软件,如果“退出”按钮不起作用,则按窗口右上角的按钮来关闭。之后在项目管理器中按修改进入表单设计器,查出错误的地方,改正即可。退出表单设计器后,按“文件”下的“退出”命令,便可退出FoxPro系统。如果没有打开过其它的项目管理器,下次启动FoxPro系统后,该项目管理器会自动打开,如没有打开,可按“文件”下的“打开”命令,或按钮,找到所要的目录和项目管理器文件(如“xy7.pjx”)打开即可。有时打开可能看不到表单名,看到的是如图29所示的情况, 这时只要按表单前面

16、的“+”号将其变为“-”号,就可看到所有的表单了。面向对象的编程很容易吧,希望您看了我们这一课后已有了充足的信心来学好VFP。第三课 对象、属性、事件、方法经过上一课我们已经对对象、属性、事件有了初步认识,这一课我们再做进一步讲解。对象(object):就是我们软件中所看到表单、文本框、按钮、标签等等东西,一个软件的外观主要也就是由这些东西组成,那么我们要编软件就应该掌握各种对象的使用方法。可放在表单内的对象,如按钮、文本框等也常常被叫作控件,我们在后面的课程中也经常会用到这个词。所谓面向对象的编程,就是我们在编程的过程中是看着这些东西来编程,而不是用一大堆的语言代码来编出这些东西,因此面向对

17、象的编程非常直观,在编的过程中就能看见程序运行起来的样子。另外由于不需用语言来构造这些对象,只是象画图一样将它们画出来,其大小及位置也不须用精确的数字来表示,你喜欢画多大就画多大,您无须知道诸如长是100、宽是80(当然您想知道的话也可以在属性窗口中查到),这样使得编程变得非常简单。属性(property):就是对象的性质,如长、宽、放的位置、颜色、标题、字体大小等等。为了达到我们所编软件的目的,也为了使软件运行的时候各种界面看起来舒服,我们必须在设计软件时对每个对象的有关属性做适当的设置。所谓"有关",就是对于一个对象来说,在一个软件中只有部分与这个软件有关的属性需要设置

18、,而大部分可能不需要设置,只需使用它们隐含的设置就行了,而同一种对象在另一个地方,可能需要设置的属性又不同了。对于属性的设置,有些只需用鼠标做适当的拖动即可,如长、宽、放的位置等,当然它们也可以在属性窗口中设置,另一些则必须在属性窗口中进行设置,如字体、颜色、标题等。事件(event):就是可能会发生在对象上的事情,也可以说我们对对象所做的操作(或者系统对某个对象的操作),如按钮被按动(单击)、对象被拖动、被改变大小、被鼠标左键双击等等。在一个软件中,总会有一些对象在运行时会被我们操作,当然我们不是平白无故去操作一个对象,总是希望这个对象在被我们操作后能做出我们所期望的反应,如"退出

19、"按钮在被按动后,我们就希望它使软件结束运行。而这一反映即使是同一种对象在不同的软件中,或在同一个软件中的不同地方,我们所需要的反映都是不同的,比如同样是按钮,“开始”和“退出”在按下后所产生的效果不同。为了使得对象在某一事件发生时能够做出所需要的反应,我们就必须针对这一事件编出相应的程序代码来完成我们的目标。如一个对象的某个事件被编入了相应的代码,那么软件运行时,当这一事件发生(如按钮被按动),相应的程序段就被激活,并开始执行,如这一事件不发生,则这段程序就不会运行。而没有编有代码的事件,即使发生也不会有任何反应。方法(method):也叫“方法程序”。前面三个概念在上一课已接触过

20、了,“方法”则是个新概念,它是指对象所固有完成某种任务的功能,可由我们在需要的时候调用。“方法”与“事件”有相似之处,都是为了完成某个任务,但同一个事件可完成不同任务,取决于您所编的代码是怎样的,而方法则是固定的,任何时候调用都是完成同一个任务,所以其中的代码也不需要我们编了,FOXPRO系统已为我们编好(我们也看不见),只需在必要的时候调用即可。比如:文本框可以用以显示文字,也可以输入文字,假如一个表单上有三个文本框,那么我们打字的时候,字进入哪个框呢?这就要看当前的焦点在哪个框上,一般我们可以用鼠标点一下所要的框,即将焦点放到了这个框上,有时我们会让软件自动地将焦点放在某个框上,这时就要调

21、用“设置焦点”方法(setfocus),例如我们要把焦点放到第二个文本框上,调用的方法如下:text2.setfocus至于它是怎么将焦点放上去的,也就是说具体放的程序是怎么编的,我们不用知道,只要能达到的目的就行。当然不但是文本框,其它的对象也都有此方法(有些方法只有某些对象才有),调用的一般语法是:对象名称.setfocus举一个实例来说明:当我们的幸运7游戏软件启动后,我们会看到在第一个文本框text1中有一个光标在闪动,也就是此时焦点在text1上,但我们并不需要在其中输入文字,因此有个光标在闪动看起来很不舒服,此时需要的是按“开始”按钮,所以焦点应在“开始”按钮上(这样按回车键也可以

22、按下“开始”按钮),因此我们应该在整个表单启动的时候将焦点设到此按钮上。当我们启动一个表单的时候,该表单的“激活”事件(activate)就会发生,但由于一般情况下这一事件中没有编入代码,所以即使发生我们也感觉不出来。那么现在我们就要借用这个事件再去调用setfocus方法,便可达到我们目的。具体做法是这样:打开xy7项目管理器,找到xy7表单,按“编辑”进入表单设计器,调出属性窗口,看一下窗口上面的对象选择窗中是否是“form1”,如图1,如不是则选择到“form1”。 选择“方法程序”(“全部”也行),在第一行找到“activate event”事件,如图2, 双击此事件进入程序编辑窗口,

23、输入下面代码:thisfor意思是“本表单.command1对象.设置焦点”,command1即是“开始”按钮的名称。输入完程序后,存盘、退出。这样一旦软件开始运行,表单被启动该表单的“激活”事件发生其中的程序开始执行将焦点设到command1即开始按钮,焦点设在上面后会看到有一个虚线框住按钮标题,这时text1中就没有光标在闪动了。还不赶快试一下!第四课 常用的对象、属性、事件、方法本课介绍一些常用的对象及其属性、事件、方法,掌握了这些知识以后,便可编一些简单实用的软件了。对象(object): 表单(form) 【用于放置其它对象(其它的对象也常常叫做“控件”)的界面,或叫窗口。】 按钮(

24、commandbutton) 【也叫“命令按钮”。专门用于起动一个事件去操作一个动作,比如关闭一个表单、将光标移到另一个记录、打印一份报告等等。用“标题”属性可指定按钮表面显示的文字,以便辨别该按钮是用作什么用途的。您可以用鼠标单击来选择一个按钮,并激活其单击事件以执行一个动作,至于具体执行什么动作,取决您为单击事件编了什么样的程序。】标签(label) 【标签是一个图形控件,用于显示文本信息,显示的信息在程序运行时不能直接修改。一个标签最多可容纳256字符。】 文本框(text) 【用于显示和编辑一个变量或者一个字段的值。所有Visual FoxPro标准的编辑功能,比如剪切、复制、粘贴,都

25、可用于文本框。假如文本框编辑的是日期或日期时间格式的值,当整个值被选择后,您可以按“”或“”来增加或减少天数。】表格(grid)【表格是一种容器型对象,所谓容器型对象是指在此对象中还可有别的对象,表单也是容器型对象。表格用于按行和列显示数据,就类似于在浏览(Browse)窗口中所看到的,在其中包含有若干列对象,而每个列对象又包含列标题和文本框对象,这里的每个对象都有它们自己的属性、事件、方法。】属性(property): 标题(caption)【指定对象标题所显示的文本,主要用于指示该对象的用途。在程序设计和运行时都可更改。语法:对象.Caption=cText设置其中的cText即为对象标题

26、设置的文本。备注:标题属性对于不同的对象其显示是不同的:表单:标题显示在表单的标题栏中,如图1。 当表单缩到最小,标题文本显示在该表单图标的旁边,如图2。 其它控件:有的标题显示在控件上面,有的显示在其旁边。当您创建一个新的表单或控件,它的隐含标题与它的隐含名称属性是一样,但实际上是两回事,当您要指定一个对象时您必须用它的名称,而不能用它的标题。比如您要在一个表单上创建一个退出按钮,如果它是在表单上创建的第二个按钮,那么它的隐含标题很可能是command2,名称也是同样的,当然您很可能马上会将其标题改为“退出”,但其名称仍是command2,如您要在程序中调用这个按钮,必须用它的名称来指定调用

27、的是那个对象,例如:要用程序把焦点放在这按钮上,程序应这样写:command2.setfocus而不能写成:退出.setfocus】左起始位(left)【设定对象的左边起始位置。也就是该对象的左边界与容纳该对象的容器的左边界的距离,比如一个表单中的按钮,表单就是按钮的容器,按钮左边界与表单左边界的距离就是按钮的左起始位置。在程序设计和运行时都可更改。一个表单的隐含容器为VFP主窗口。语法:对象.Left=nDist其中的nDist为代表左边界的数值,使用时用一具体数值代入。备注:一般不需要在程序中用以上语句来设置对象的左边界,在面向对象编程时,一旦对象设置好,或者说用鼠标拉好,其左边界就设好了

28、。当我们用鼠标改变其位置时,其左边界也会相应变化。当然如果我们要在程序运行的过程中,改变某对象的左边界,以达到改变对象位置的目的,就可用到上面的语句了。例如:我们要在程序中把按钮command1的左边界设为10,实现的语句为:command1.left=10此语句一旦运行,command1按钮就会移动到其左边界为10的地方。】上起始位(top)【设定对象的上边起始位置。也就是该对象的上边界与容纳该对象的容器的上边界的距离,比如一个表单中的按钮,表单就是按钮的容器,按钮左边界与表单上边界的距离就是按钮的上起始位置。在程序设计和运行时都可更改。一个表单的隐含容器为VFP主窗口。语法:对象.Top=

29、nValue其中的nValue为代表左边界的数值,使用时用一具体数值代入。备注:一般不需要在程序中用以上语句来设置对象的上边界,在面向对象编程时,一旦对象设置好,或者说用鼠标拉好,其上边界就设好了。当我们用鼠标改变其位置时,其上边界也会相应变化。当然如果我们要在程序运行的过程中,想改变某对象的上边界,以达到改变对象位置的目的,就可用到上面的语句了。例如:我们要在程序中把按钮command1的上边界设为10,实现的语句为:command1.top=10此语句一旦运行,command1按钮就会移动到其上边界为10的地方。常用到的对象】宽度(width)【设定对象的宽度。在程序设计和运行时都可更改。

30、语法:对象.Width=nWidthnWidth为指定宽度的数值。备注:一般不需要在程序中用以上语句来设置对象的宽度,在面向对象编程时,一旦对象设置好,或者说用鼠标拉好,其宽度就设好了。当我们用鼠标改变其大小时,其宽度也会相应变化。当然如果我们要在程序运行的过程中,想改变某对象的宽度,以达到改变对象大小的目的,就可用到上面的语句了。例如:我们要在程序中把按钮command1的宽度设为10,实现的语句为:command1.width=10此语句一旦运行,command1按钮的宽度就会为10了。】高度(hight)【设定对象的高度。在程序设计和运行时都可更改。语法:对象.Height=nHeigh

31、tnHeight为指定宽度的数值。备注:一般不需要在程序中用以上语句来设置对象的高度,在面向对象编程时,一旦对象设置好,或者说用鼠标拉好,其高度就设好了。当我们用鼠标改变其大小时,其高度也会相应变化。当然如果我们要在程序运行的过程中,想改变某对象的高度,以达到改变对象大小的目的,就可用到上面的语句了。例如:我们要在程序中把按钮command1的高度设为10,实现的语句为:command1.height=10此语句一旦运行,command1按钮的高度就会为10了。】控制源(controlsource)【指定与对象邦定的数据源。一般是指一个变量或数据库字段,比如对于一个文本框来说,指定一个变量为其

32、控制源,那么在文本框中输入的数据就会存贮到这个变量中。在程序设计和运行时都可更改。语法:对象.ControlSource=cName设置:cName 即为控制变量名,可以是一个变量,也可以是一个数据库字段。备注:一旦某对象控制源属性设置到了一字段或变量,该对象的“值”属性与控制源相同。一般情况下,我们不需要用上面的语句为对象设置控制源,而只需在面向对象编程时,当设好一对象后,在属性窗口中找到contorlsource属性,输入相应的变量或字段名即可。例如:在程序中要将文本框text1中所输入的数据放在变量sj中,则将text1的控制源设为sj,实现的语句为:text1.controlsourc

33、e='sj'】值(value)【指定控件当前的状态。比如一个文本框当前的内容是什么。在程序设计和运行时都可更改。语法:控件.Value=nSetting设置:nSetting对于文本框来说即是在文本框中输入的字符串或数值、日期、逻辑值等等。隐含的数据类型为字符型。备注:对于表格控件,其值只有在表格获得焦点的时候才可更改。当控件的控制源做了设置,那么它的值与控制源的值相同。一般在我们的程序中都是用控制源来控制控件的值。】文本对齐(alignment)【指定控件文本的对齐方式。即左、中、右。在程序设计和运行时都可更改。语法:控件.Alignment=nAlign设置:nAlign对

34、于文本框来说,可作的设置如下:Setting Description0 左1 右2 中3 自动(隐含),即文本靠左,数值靠右。】名称(name)【指定对象被调用的名称。在程序设计和运行时都可更改。语法:对象.Name=cName设置:cName即为给对象指定的名称文本。备注:对象隐含的名称一般是对象的类型再加一个整数,比如:创建的第一个表单就叫form1,在一个表单中创建的第三个文本框就被叫做text3。当然您可以修改为任何您所喜欢的名称,但为了简便起见我们一般都不改。名称和标题不同,虽然隐含时它们是一样的,当您要调用一个对象时必须用它的名称,而不能用它的标题(caption),参见标题属性。

35、所以当您改了一个对象的标题时,并不表示它的名称也改了,它的名称还是原来的,您可以在属性窗口的name属性中看到。如果一个对象是容器型对象(其中包含有别的对象),而它又是最外一层的容器(因为容器中还可有容器),那么在程序中第一次调用它时,应将它附给一个变量,以后调用它时,用这个变量名,而不用它自己的名称。比如一般我们在程序中第一次调用一个表单往往是用类似如下的语句:do form xy7 name lucky这里的lucky就是xy7表单所附于的变量名,您可以用任何变量名,只要不与程序中的其它变量重名,当然也可以用与表单名一样的变量名(我们常常是这样),以后在调用这个表单时就用这个变量名,如把焦

36、点设到这个表单中的command1按钮,程序为:当在一个对象内部的事件程序中调用本对象时,可用“this”代替对象名称,比如在幸运7表单中,在按过开始按钮后,我们想把这个按钮的标题设为“再开始”,那么可在这个按钮的click事件中加上如下语句:this.caption='再开始'它等同于command1.caption='再开始',但当这个按钮的名称改为“command3”时,这一句就不对了,必须做修改才能正确运行,但上一句不用改,仍然可以用。如果这个对象是表单,那么调用它自己时不能用“this”,而用“thisform”代替名称或名称变量。】只读(readon

37、ly)【确定使用者是否可以编辑控件。在程序设计和运行时都可更改。语法:表单.控件.ReadOnly=lExpr设置:lExpr 可设置的值有:.t. 真,即控件不可编辑.f. 假,即控件可编辑备注:如果要让一个件一开始就是指读(不可编辑)的,可在程序设计时将其设为指读,在属性窗口中找到readonly属性,将其设T(真)即可。如要在程序运行时,使一个控件变为指读,就可采用上面的语句,比如将xy7表单中的text1文本框设为指读,程序为:xy7.text1.readonly=.t.注意,这里的xy7是启动表单时为该表单所指定的变量名。举例:以我们在第二课中的幸运7程序为例,在程序启动后,可以在上

38、面三个文本框中输入字符,但这是我们所不需要的,为了避免这个问题可以在设计程序时,将三个文本框设成指读,这样就不能输入字符了。不信您试试。】可见(visible)【设定一个控件是否可以看见。在程序设计和运行时都可更改。语法:对象.Visible=lExpr设置:lExpr 可设置的值有:.t. 真,即可见.f. 假,即不可见备注:就如同我们在幸运7程序中对“输”、“赢”两字的处理。】事件(event): 单击(click)【当一个对象被鼠标左键点击时发生此事件。】初始化(init)【当一个对象被创建时此事件发生。举例:在幸运7程序中,我们也可以不属性窗口中把“输”、“赢”两标签的可见属性设为假,

39、而在这两个标签的init事件中加上如下语句:this.visible=.f.这样当两标签形成时,它们的init事件被激活,执行上面语句,同样可达到使两标签看不见的效果。备注:容器中对象的init事件比容器的init事件早发生,这一点在程序编制过程中也是很有用的,籍此我们可以在容器的init事件对容器中的对象进行访问,比如还是上面那个例子,可以不在每个标签的init事件中写入程序,而只在表单的init事件中写入如下语句即可:thisform.label1.visible=.f.thisform.label2.visible=.f.这样可以达到同样效果。而容器中各对象的init事件发生的先后顺序,

40、取决于编程时它们被添加到表单中的先后顺序。】方法(methord): 设置焦点(setfocus)【将焦点放到控件上。语法:控件.setfocus备注:一旦一个控件获得了焦点,操作所做的输入都是针对此控件。】刷新(refresh)【重新显示对象,并把它们的各个值设为最新。语法:表单.对象.Refresh备注:一般说来,系统会自动在需要的时候为对象刷新,但并不总是有效,有时我们会看到在程序执行过程中改变了一个对象的某个值,但这个对象却没有任何反应,这时我们就调用一下刷新方法程序,来将这个对象刷新一下。】释放(release)【释放一个表单,也就是关闭一个表闭。语法:表单.Release】第五课

41、常用编程命令及常用函数注:在语法中如用方括号“ ”括起来的词句,表示可以不用。命令 假设(if.endif)【根据一逻辑表达式的值,有条件的执行一组命令。语法:IF 逻辑表达式 THEN 程序组1ELSE 程序组2ENDIF参数:逻辑表达式代表一逻辑值,如果这逻辑值为真,系统执行程序组1,否则不执行程序组1,如果有else及程序组2的话,则执行程序组2,如没有则什么也不执行,直接执行endif后面的语句。备注:在if.endif之间还可以有if.endif,即该命令是可以嵌套的。then可以有也可以没有,对程序没有影响。else及程序组2可以有也可以没有,但如果有的话,在逻辑表达式的值为假时,

42、程序组2将被执行。if 与 endif 必须配对使用,即有一个 if 必须有一个 endif, 否则程序会出错。举例:例1:假如分数字段的值大于等于90,则让等级字段的值为“优”,并显示该记录。程序如下:if 分数>=90 replace 等级 with '优' displayendif例2:在数据库中可以把性别字段设为逻辑型,“真”代表“男”,“假”代表“女”,但显示时不能显示真、假,否则别人看不懂,而应显示男、女,因此我们设一变量xb,根据性别字段的具体值,将xb的值设为男或女,然后在需要的时候显示xb的值即可。程序如下:if 性别 xb='男'els

43、e xb='女'endif其中第一句:if 性别,表示“假如性别为真”的意思,不要写成“if 性别=.t.”。以上程序也可以写成如下形式,效果相同:if .not. 性别 xb='女'else xb='男'endif即,假如性别不为真的话,xb的值就为女,否则为男。】循环(do while.enddo)【根据条件重复执行一组程序。语法:DO WHILE lExpression Commands LOOP EXITENDDO参数:lExpression 为一逻辑表达式,其值如果是“真”,即执行commands程序组,如果表达的值为“假”,则跳过该段

44、程序组,执行enddo后面的语句。Commands 当表达式 lExpression 值为真时所要执行的程序组。LOOP 此为 do while.enddo 命令的一个子句,它可以放在 commands 程序组中间的任何地方,当程序一旦执行到该子句时,则返回 do while 重新执行。此子句根据需要可以有,也可以没有。EXIT 与loop一样是 do while.enddo 命令的一个子句,它可以放在 commands 程序组中间的任何地方,当程序一旦执行到该子句时,则跳出循环,执行enddo后面的语句。此子句根据需要可以有,也可以没有。备注:程序一旦执行到do while 语句,如果 lE

45、xpression 的值为真,则执行 commands 程序组,该程序组执行完后,就到enddo语句,enddo会将程序返回 do while 再次验证 lExpression 是否为真,如仍是,则又一次执行 commands ,如此循环往复,直到 lExpression 为假,或遇上 exit 语句。该语句可以嵌套,即循环中还可以有循环。do while 与 enddo 必须配对使用,即有一个 do while 必须有一个 enddo 否则程序会出错。举例:例1:在数据库中不断将记录指针往下移,直到数据库结尾。程序如下:do while .not. eof() skipenddo例2:在上面

46、的例子加入此功能,当遇到性别字段为“女”时,跳出循环。程序如下:do while .not. eof() if 性别='女' exit endif skipenddo例3:不断将记录指针往下移,当遇到数量字段的值大于等于600时退出循环,如遇到值小于400的,将其值乘2,然后再检验一次是否大于600,如是则退出循环。程序如下:do while 数量<600 if 数量<400 replace 数量 with 数量*2 loop endif skipenddo】分支(do case.endcase)【根据不同的条件执行不同的程序组。语法:DO CASE CASE 逻辑

47、表达式1 程序组1 CASE 逻辑表达式2 程序组2 . CASE 逻辑表达式n 程序组n OTHERWISE 程序组0ENDCASE参数:CASE 逻辑表达式 程序组 . 当程序执行到 do case 时,便检验第一个 case 的逻辑表达式(逻辑表达式1)是否为真,如不为真,接着检验第二个 case 的逻辑表达式,以此类推直到逻辑表达式n。当检测到第一个为真的逻辑表达式时,便执行跟随在其后面的程序组,执行完后跳过后面所有的 case ,接着执行 endcase 后面的语句,也就是说即使后面还有为真的逻辑表达式也不执行了。如果所有 case 后面的逻辑表达式都为假,则执行 otherwise

48、 后面的程序组(如果有的话, otherwise 及其程序组是可以没有的,如果没有则什么都不做,直接执行 endcase 以后的程序)备注:在do case 和 endcase 之间可以有任意多个 case 。do case 和 endcase 必须配对使用,即有一个 do case 必须有一个 endcase ,否则程序会出错。举例:如果工资在200元以下,增加50%;300元以下,增加30%;500元以下,增加20%;其它增加10%。程序如下:do case case 工资<=200 replace 工资 with 工资*1.5 case 工资<=300 replace 工资

49、with 工资*1.3 case 工资<=500 replace 工资 with 工资*1.2 otherwise replace 工资 with 工资*1.1endcase在这里要注意一个问题,不能把300元的 case 放在200元之前,否则一个100元的,按理应加50%,但当遇到小于300元的 case 时,其逻辑表达式为真(小于200元的肯定小于300元),因此就会执行后面的程序,加30%,并且执行完后,就不再执行其它的 case 了,这样就产生了错误的结果,所以应按从小到大的顺序来排列。】赋值(store.to)【将一个数据赋给一个变量。语法:STORE 表达式 TO 变量名表

50、参数:表达式的值即为要赋给变量的数据。变量名表即为要被赋值的各变量。在这里可以是一个变量,也可以是多个变量,如果有多个变量,其间用“,”(逗号)隔开。备注:如果是给一个变量赋值,该语句可写成如下形式:变量名=表达式表达式可以是一个数值,也可以是一个算术式。举例:例1:将3赋给ab、xyz、jfz三个变量,程序如下:store 3 to ab,xyz,jfz例2:将变量gz的值加100赋给yfgz。程序如下:yfgz=gz+100】调用表单(do form)【运行一个由表单设计器设计的表单文件。该文件是经编译过的。语法:DO FORM 表单文件名 NAME 变量名 LINKED参数表单文件名即是

51、要运行的由表单设计器设计的表单文件名称。变量名为调用该表单所用的变量名称,做为表单,不能直接用这的名称去调用它,必须将其赋给一个变量,然后用这个变量来调用它。如果您不会在这个表单之外调用它,也可以不要这个变量。在程序中产生的所有变量在程序运行结束后将被释放,即这些变量不再存在,因此也就无法继续调用这些变更,如果为了调试程序需要在程序运行结束后在命令窗口中调用这个表单,必须加上 linked 子句。举例:在程序中调用xy7表单,并将赋给一个变量lucky,程序如下:do form xy7 name lucky】调用子程序(do)【运行一个VFP程序。当我们要在一个程序中调用另一个程序(子程序)时

52、使用此命令。语法:DO 程序名参数:程序名即为被调用的程序名称。备注:如被调用的程序的扩展名是“prg”,调用时可不用带扩展名,否则要带上扩展名。举例:有一个程序,名称为 xy7.prg,调用它的程序如下:do xy7】返回调用程序(return)【返回调用本程序(该语句所在程序)的程序。前面讲过调用子程序的语句,从一个程序A调用另一个程序B后,系统便开始执行B程序中的语句,到一定时候往往要从程序B返回程序A,便可使用该语句。语法:RETURN备注:程序A调用程序B,当从B返回A后,系统接着执行调用语句(do b)下面的一条语句。举例:程序a.prg如下:do while .not. eof(

53、)if 工资<100do bendifskipenddo程序b.prg如下:replace 工资 with 工资*1.5 &&将工资增加50display &&显示出该记录,这样可以将所有增加了工资的记录显示出来return首先执行程序a.prg,当程序执行到 do b 语句时,便转去执行程序 b.prg ,在程序 b 中执行到 return语句时,又返回程序 a ,并接着执行 do b 的下一条语句 endif 。】启动事件处理(read events)【启动VFP的事件处理程序。语法:READ EVENTS备注:当该命令执行后,系统即停止继续执行后续的语句,这时我们可以调用之前所启动的菜单、表单等对象,并用这些对象的事件程序去完

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论