VFP经典问题集问题1:怎样从表单返加一个值?答案1:可以在模式表单的unload事件中用return来返回一个值。问题2:怎样在表单设计器中把属性或方法添加到表单中?答案2:用表单设计器窗口或属性/事件/激活的方法窗口,从菜单中选择表单。最初的两个选择是新属性和新方法。选择你想要加入的一个并填写属性或方法的名称,新建的属性将出现在属性窗口的最底部。问题3:我把的工具条或设计窗口移出了屏幕,怎样把它移回来?答案3:工具条或窗口的位置保存在vfp主目录下的foxuser.dbf表中。如果删除或修改该文件,你的工具条和窗口将恢复他们的默认位置或你指定的位置。或从系统菜单的窗口菜单中选择重新安排全部。问题4:当从valid事件返回.f.值时,如何避免'无效的的用户输入了'信息?答案4:用0来替换.f.当你从valid事件返回数值时,也就是在设置可取得焦点的控件的taborder。问题5:模式表单和非模式表单的区别是什么?答案5:模式表单一般地被用来处理错误报告,或者请求用户确认操作等。在模式表单中,菜单不能使用。如果需要,模式表单也提供应用'等待状态'。非模式表单提供更多的灵活性,它允许用户通过菜单操作,在表单中移动。问题6:为什么编译后的程序运行时,屏幕一闪就退出了,为什么?答案6:你需要在你的程序中建立'等待状态'。可以用readevents命令来建立等待状态。要清除等待状态,可使用clearevents命令。如果你只有一个屏幕,把表单的windowstate属性设置为modal。这也提供等待状态,但是不允许你使用菜单。当模式表单被释放时,等待状态结束并返回至操作系统。问题7:为什么当我建立表单时,我用set命令设置的环境变量返回到了它们的默认值。答案7:这是由于你的表单的数据会话期设置为私有数据工作期。很多set命令仅对当前数据工作期有效。当你拥有私有数据工作期时,你必须再次确立那些设置值。要达到这一目的,你可以建立一个用于环境设置的类。在表单的init事件中设置你的环境值而在表单的destroy事件中恢复其原始值。问题8:我在pageframe中的一个页中改变了记录指针,但我转到其他的页时,其他的页中的数据仍然是原记录的值。为什么?答案8:你需要在你的每一页activate()中放置代码来确信显示当前记录值。如果你在某处执行了thisform.refresh()命令,vfp仅刷新pageframe的当前页面上的内容。试着在每个页(page)的activate()中调用this.refresh()。问题9:当我运行表单时,它什么也不显示。表单本身是显示了,但其中的任何对象都不可见。答案9:试着把lockscreen属性设置为.f.。问题10:表单上有一对象,但我看不见它,我怎样选择并修改它?答案10:打开属性窗口,该窗口中有一下拉列表,你可从中选择你想编辑的对象。一但你想编辑的对象在下拉列表中高亮显示,你就可以修改该对象。要在表单设计器中用鼠标调整它(或实际看到该对象),从菜单中选择格式,然后选择带到前面。问题11:我怎样把一个类从一个类库复制到另一类库中?答案11:在专业版中,你可以两次打开类浏览器,从第二个类浏览器中类型下拉列表框中拖动类的图标到第二个类浏览器中。确信拖动它到另一个类浏览器的表单区中。你可以看到一个复制光标(带箭头的加号)。如果你是使用项目管理器且在项目中有两个类库,你可以从一个类库中拖动一个类到另一个类库中。但若目标类库中已有相同名字的类存在,则操作不会成功。也可用vfp命令来完成这一任务:addclassmytextboxofmylib1.vcxtomylib2.vcx.如果mylib2里有另一个同名的类,操作也不会成功。但若在命令后加overwrite子句,原有的类将被代替。问题12:怎样能不使用属性窗口而进入容器?答案12:在对象上单击鼠标右键。从弹出菜单中选择编辑。如果你是在网格上操作,你必须选择对象所在的列并使用属性窗口来选你想编辑的特定的目的。如果你想选择header类或列的其他的目的,你必须使用属性窗口。问题13:如何把数组作为参数传递给表单?答案13:在foxpro中,数组必须按址传递。setudfparms决定参数的传递方式。在默认情况下,当你用do...with调用过程或表单时,参数是按址传递。在函数或方法中,参数是按值传递。dimensionarray[10]doformform1witharray在这种情况下,你必须用一个@符号强迫参数的传递为按址传递。dimensionarray[10]myform=createobject(form1,@myarray)问题14:如何在应用程序中避免出现vfp的窗口标题?答案14:在config.fpw文件中,加title=你的标题行。另外,也可以在主程序中加入:_screen.caption=你的标题问题15:如何避免vfp的欢迎屏幕?答案15:在你的快捷方式或图标的程序行中,在vfp.exe后面加-t(不要引号)。问题16:在win95中,所有窗口左上角的图标全部是fox。我能代替它吗?答案16:在你的开始程序,加入:_screen.icon=vitus.ico在你的表单的load事件中,加入:thisform.icon=vitus.ico或者在表单设计器的属性窗口中设置它的值。问题17:我怎样除掉表单标题条?答案17:把表单的caption属性设置为任意串把表单的maxbutton属性设置为.f.把表单的minbutton属性设置为.f.把表单的movable属性设置为.f.在表单的init中写入this.caption=''问题18:事件的触发顺序是怎样的?答案18:在帮助文件中查看vfp事件序列。另外,在vfp\samples\controls\events目录中,有一个名为events.app的程序演示了不同对象的事件的触发顺序。问题19:我怎样检查变量是否存在?答案19:使用type()函数来检查一个变量是否存在。iftype(var)=.t.messagebox(itexists,0,)endif或你可以检查是否type(var)=u,若是,则变量不存在。问题20:vfp的表的最大容量是多少?答案20:2gb,且在将来版本中该限制可能被取消。问题21:为什么当我运行exe文件时,系统菜单总是在我自己的菜单前出现。答案21:把sysmenu=off放入你的config.fpw文件。问题22:我不能从一个对象的valid事件中把焦点设置到另一个对象上。答案22:setfocus()方法不能从valid事件中运行。试着用lostfocus事件作为替代。问题23:我怎样让表单设计器使用我自己的表单类为其缺省表单类?答案23:从工具菜单中选择选项。选择表单页。在页的底部附近有一个你的表单类的检验框。给检验框打上钩,从问答中选择你的表单类。也可以单击...按钮改变你的选择。若要使你的改娈长期生效,退出之前单击设置为默认值。问题24:为什么当我要退出vfp时,得到一条信息'不能退出vfp'。答案24:检验onshutdown。问题25:运行一个表单时,怎样使它停下来?答案25:可以在表单的init()加入return.f.,该方法适用于所有的对象。问题26:什么时候,计时器触发?答案26:如果一个菜单弹出或messagebox()窗口激活时,计时器将不会触发,当用户调整控件尺寸,或者拖动表单时,以及用户拖动scrollbar时,计时器也不会触发。问题27:我怎样能不使用鼠标而离开网格?答案27:你可以按下ctrl+tab移动到下一个控件或shift+ctrl+tab移动到上一个控件。问题28:包含文件的范围是什么?答案28:当你用表单/包含文件包括一个文件到表单时,表单的全部对象都可以访问它的内容。如果你用#include将它包含进一个方法时仅该方法可以访问它的内容。该规则也适用于类设计器。问题29:为什么我的memlimit设置值不起作用?答案29:vfp在全部支撑的平台上灵活地分配内存。因此,memlimit设置值不再是必不可少的。问题30:我放置了检查框到我的网格,但是,它仅仅出现于当前选的行。答案30:设置sparse属性为.f.问题31:怎样使用宏扩展?答案31:你可在运行时用&来解释,实行指令。问题32:怎样从表中选择重复的记录?答案32:select*;fromtablea;whereexists;(select*;fromtableb;whereb.key=a.key;groupbykey;havingcount(*)1);orderbyfieldlist或select*;fromtable;wherekeyin;(selectkey;fromtable;groupbykey;havingcount(*)1);orderbyfieldlist问题33:datasource属性和controlsource属性之间有什么不同?以及rowsource属性和recordsource属性?答案33:datasource属性可以影响存储在一个数据库(.dbc)中的odbc视图。它包含了对连接到odbc数据文件名称的引用,并且必须指向一个通过odbc管理程序定义的有效的数据源。您可以使用sqlsetprop()函数操作datasource属性,而用sqlgetprop()函数可以查看它的设置。controlsource属性用来确定一个对象所绑定的数据源;一个对象所绑定的表或者视图可以为任意类型,包括本地visualfoxpro表,具有controlsource属性的对象有:checkbox、column、combobox、commandgroup、editbox、listbox、oleboundcontrol、optionbutton、optiongroup、spinner和textbox控件。某些控件(listbox和combobox)除controlsource属性之外,还有rowsource属性允许您一次显示多于一个字段和行。数据仍然是与单一的字段绑定的,这就是为什么这些控件需要controlsource属性。表格控件是唯一具有recordsource属性的控件,但是没有controlsource属性。对于表格控件,数据是与一个完整的记录绑定的。问题34:为什么组合框只显示一行数据?我首先为该组合框定义了一个数组,然后,在表单的Init事件中执行了一个SELECT-SQL命令来激活数组。答案34:在表单的Init事件中,您建立了一个没有行或者只有一行的数组。当表单建立后,组合框的Init事件发生在表单的Init事件之前,所以组合框只包含一列数据。要改正此错误,请在SELECT-SQL语句下面紧接着添加下面代码行,在表单的Init事件中建立数组:THISFORM.ComboBox1.RowSource=THISFORM.ComboBox1.RowSource当我的游标用SELECT-SQLINTOCURSOR更新后,网格内容没有刷新?由于SELECT-SQL命令是重新建立网格RecordSource属性里的同名游标,当新的游标建立时,原有的游标被丢弃了。因此当SELECT-SQL执行时,网格RecordSource属性被清除复位,并且新网格被建立且未从游标中装入数据。要刷新网格,设置网格的RecordSource属性新的数据源上THISFORM.Grid1.RecordSource=THISFORM.Grid1.RecordSource问题35:如何隐藏标准的或定制的工具条?答案35:用HIDEWINDOW命令来隐藏工具条。工具条也可用SHOWWINDOW来显示。问题36:我怎样用VFP做小的图标(ImagEdit)?答案36:Windows95能在资源管理器和启始菜单中显示小图标。你可以ImagEdit来为你的VFP应用运行在Windows95下面制作小的图标(ImagEdit包括在VFP的专业版内。)。在Ima