VFP经典问题集(老酒不变质).doc_第1页
VFP经典问题集(老酒不变质).doc_第2页
VFP经典问题集(老酒不变质).doc_第3页
VFP经典问题集(老酒不变质).doc_第4页
VFP经典问题集(老酒不变质).doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

VFP经典问题集问题1: 怎样从表单返加一个值?答案1: 可以在模式表单的unload事件中用return来返回一个值。 问题2: 怎样在表单设计器中把属性或方法添加到表单中?答案2: 用表单设计器窗口或属性/事件/激活的方法窗口,从菜单中选择表单。最初的两个选择是新属性和新方法。选择你想要加入的一个并填写属性或方法的名称,新建的属性将出现在属性窗口的最底部。问题3: 我把的工具条或设计窗口移出了屏幕,怎样把它移回来?答案3: 工具条或窗口的位置保存在vfp主目录下的foxuser.dbf表中。如果删除或修改该文件,你的工具条和窗口将恢复他们的默认位置或你指定的位置。或从系统菜单的窗口菜单中选择重新安排全部。问题4: 当从valid事件返回.f.值时,如何避免无效的的用户输入了信息?答案4: 用 0来替换.f.当你从valid事件返回数值时,也就是在设置可取得焦点的控件的tab order。问题5: 模式表单和非模式表单的区别是什么?答案5: 模式表单一般地被用来处理错误报告,或者请求用户确认操作等。在模式表单中,菜单不能使用。如果需要,模式表单也提供应用等待状态。非模式表单提供更多的灵活性,它允许用户通过菜单操作,在表单中移动。问题6: 为什么编译后的程序运行时,屏幕一闪就退出了,为什么?答案6: 你需要在你的程序中建立等待状态。可以用read events命令来建立等待状态。要清除等待状态,可使用clear events命令。如果你只有一个屏幕,把表单的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 命令来完成这一任务:add class mytextbox of mylib1.vcx to mylib2.vcx.如果mylib2里有另一个同名的类,操作也不会成功。但若在命令后加overwrite子句,原有的类将被代替。问题12: 怎样能不使用属性窗口而进入容器?答案12: 在对象上单击鼠标右键。从弹出菜单中选择编辑。如果你是在网格上操作,你必须选择对象所在的列并使用属性窗口来选你想编辑的特定的目的。如果你想选择header类或列的其他的目的,你必须使用属性窗口。问题13: 如何把数组作为参数传递给表单?答案13: 在foxpro中,数组必须按址传递。set udfparms决定参数的传递方式。在默认情况下,当你用do.with调用过程或表单时,参数是按址传递。在函数或方法中,参数是按值传递。dimension array10 do form form1 with array 在这种情况下,你必须用一个符号强迫参数的传递为按址传递。dimension array10myform = 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事件序列。另外,在vfpsamplescontrolsevents目录中,有一个名为events.app的程序演示了不同对象的事件的触发顺序。问题19: 我怎样检查变量是否存在?答案19: 使用type()函数来检查一个变量是否存在。if type(var) = .t.messagebox(it exists,0,) endif或你可以检查是否type(var)=u,若是,则变量不存在。问题20: vfp的表的最大容量是多少?答案20: 2 gb,且在将来版本中该限制可能被取消。问题21: 为什么当我运行exe文件时,系统菜单总是在我自己的菜单前出现。答案21: 把sysmenu=off放入你的config.fpw文件。问题22: 我不能从一个对象的valid事件中把焦点设置到另一个对象上。答案22: setfocus()方法不能从valid事件中运行。试着用lostfocus事件作为替代。问题23: 我怎样让表单设计器使用我自己的表单类为其缺省表单类?答案23: 从工具菜单中选择选项。选择表单页。在页的底部附近有一个你的表单类的检验框。给检验框打上钩,从问答中选择你的表单类。也可以单击. 按钮改变你的选择。若要使你的改娈长期生效,退出之前单击设置为默认值。问题24: 为什么当我要退出vfp时,得到一条信息 不能退出vfp。答案24: 检验on shutdown。问题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 * ;from table a ;where exists ;(select * ;from table b ;where b.key = a.key;group by key ;having count(*) 1 ) ;order by fieldlist或select * ;from table ;where key in ;( select key ;from table ;group by key ;having count(*) 1) ;order by fieldlist问题33: datasource 属性和 controlsource 属性之间有什么不同?以及 rowsource 属性和recordsource 属性?答案33: datasource 属性可以影响存储在一个数据库 (.dbc) 中的 odbc 视图。它包含了对连接到 odbc 数据文件名称的引用,并且必须指向一个通过 odbc 管理程序定义的有效的数据源。您可以使用 sqlsetprop( ) 函数操作 datasource 属性,而用 sqlgetprop( ) 函数可以查看它的设置。controlsource 属性用来确定一个对象所绑定的数据源;一个对象所绑定的表或者视图可以为任意类型,包括本地 visual foxpro 表,具有 controlsource 属性的对象有:checkbox、column、combobox、commandgroup、editbox、listbox、ole bound control、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 - SQL INTO CURSOR 更新后,网格内容没有刷新?由于SELECT - SQL 命令是重新建立网格RecordSource属性里的同名游标,当新的游标建立时,原有的游标被丢弃了。因此当SELECT - SQL执行时,网格RecordSource属性被清除复位,并且新网格被建立且未从游标中装入数据。要刷新网格,设置网格的RecordSource属性新的数据源上THISFORM.Grid1.RecordSource=THISFORM.Grid1.RecordSource问题35: 如何隐藏标准的或定制的工具条?答案35: 用HIDE WINDOW命令来隐藏工具条。工具条也可用SHOW WINDOW来显示。问题36: 我怎样用VFP做小的图标(ImagEdit)?答案36: Windows 95能在资源管理器和启始菜单中显示小图标。你可以ImagEdit来为你的VFP应用运行在Windows 95下面制作小的图标(ImagEdit包括在VFP的专业版内。)。在ImagEdit中制作新图标的时候,小图标通过指定小的图标16-的彩色16x16选项制作。如果这选项不可用,制作新图标的时候把下列行加到坐落于你的WINDOWS目录的IMAGEDIT.INI文件中:ImagEdit.IconSmall Icon=16,16,16问题37: 如何在导航中添加记录到表的缓存中?答案37: 要把记录指示移动到表缓存中添加的记录上,用带负值的GO命令。RECNO()函数在表缓存中的记录上返回升序负数值。问题38: 怎样(以编程的方式)复制内容到剪切板?答案38: 在求助文件中看_ClipText。问题39: 调试时,怎样保持计时器处于激活状态?答案39: 把以下代码放入Timer()事件中:_Screen.ActiveForm.MyTimer.Enabled=.T. IF WVISIBLE(Trace) THIS.Enabled=.F.WVISIBLE(TraceTHIS.Enabled=.F。ENDIF问题40: 怎样播放声音文件(.WAV)?答案40: 除了使用第三方产品和API调用之外,播放.WAV的最简单的方法是:SET BELL TO c:sound.wav,1 ?CHR(7) SET BELL TO问题41: 怎样设置多个过程或类文件?答案41: 使用ADDITIVE 子句:SET PROCEDURE TO proc.prg ADDITIVESET LIBRARY TO class.vcx ADDITIVE问题42: 为什么当filter设置时,应该用locate代替seek?答案42: 当你的查找字段是建立了索引且当前索引是该索引时,SEEK 通常是查找单个记录的最快的方法。不过,当设置了filter时,SEEK 非常慢。理由是SEEK将查找符合你的搜索标准的第一个记录。FoxPro为了移动记录指针到相应的记录上,必须找到和你的标准相匹配且和filter条件相称的记录。和 SEEK不同, LOCATE 是可进行Rushmore优化的. 当一个可优化的filter 起作用时,LOCATE FOR CustId=m.CustId 通常比SEEK m.CustId 更快。在GO TOP 和 GO BOTTOM 中也存在相似的问题。用无子句的LOCATE来执行GO TOP,将会使记录指针移动到乎合filter 条件的第一个记录。要执行 GO BOTTOM, 设置当前索引标识的降序然后LOCATE, 在将索引设置为原来的升序。问题43: 我怎样让属性和方法设置到它们的缺省值?答案43: 你可以在属性窗口中右击一个属性,将会返回该属性的缺省值。当你想设置一个对象的属性为其父类的属性时,该办法特别有用。例如,如果你使用标签类定义了一个标签,且设置该标签类的FontBold = .T,但该对象的FontBold = .F.你可仅右击鼠标,并选的恢复至默认值来恢复该类的定义默认定义。该动作也适用于属性窗口中的方法。你可以在方法列表上右击鼠标来除掉某方法中的全部方法代码。这是重置当前对象,让它运行类定义中的方法代码的简便方法。如果你不小心让你的方法编码被缺省值复位,不要保存修改,立即退出表单设计器,当系统提示是否保存修改时,选否取回它。问题44: 如何能既执行默认的父类的事件/方法又运行一些补充的代码?答案44: 你可以在子类的方法中输入代码来忽略父类方法代码。FoxPro 将方法代码中的所有字符串解释为可执行代码包括空格和注释,这样将可以忽略父类方法代码。如果你想把注解加到方法代码中,同时又保持继承的父类方法编码,使用范围解析操作符(:)来明确调用父类代码。一个命令按钮的单击事件过程可能是这样的:&CommentsMyExitButton:Click&问题45: 怎样使 工具条按钮的 可用/不可用 和对应的菜单选择协调一致?答案45: 一个协调工具条按钮和菜单选择的简单的方法是:在菜单的 Skip子句中使用 Enabled属性。例如,你有一个名为oToolbar的工具条,其上有一个新建命令按钮叫cmdAdd同时你有一个记录菜单其中有一个新建选项。给新建选项的Skip子句加上oToolBar.cmdAdd.Enabled = .F.或!oToolBar.cmdAdd.Enabled则新建菜单选项仅当oToolBar.cmdAdd可用时才是可用的。记住Set Skip当它的值为.T.时,废止菜单选项,所以在上例中的NOT 操作符 (!)或= .F.是必不可少的。问题46: 怎样同时设置多个对象的同一属性?答案46: 用SetAll方法。例如,你决定为全部网格中的标题设置9号宋体。将以下代码放入网格的Init事件:THIS.SETALL(FontName,Arial,Header)问题47: 我必须总是打入长长的对象层次列表吗?答案47: 不.你可以使用变量替换,以下两种方法的效果是相同的:Thisform.pageframe.page1.container.object.caption=ThisThisform.pageframe.page1.container.object.left=10Thisform.pageframe.page1.container.object.top=50temp = Thisform.pageframe.page1.container.object temp.caption = This temp.left = 10 temp.top = 50 另一种方法是使用WITH命令,WITH Thisform.pageframe.page1.container.object .caption = This .left = 10 .top = 50 ENDWITH 问题48: 可以迅速地在属性窗口中定位吗?答案48: 热键Ctrl+Alt+key可使在属性窗口中定位变得快而简单。例如,当表单对象选中时,在属性窗口中按下Ctrl+Alt+C将快速移动到Caption属性。问题49: 当所有窗口打开时,怎样才能看到VFP桌面上的内容?答案49: 按ALT+CTRL+SHIFT将把全部打开的窗口隐藏起来,直到放开键。问题50: 我能创建文本报表吗?答案50: 可以。将报表表单的ASCII分句打上钩。问题51: 我怎样把事情的动作在大小调整工具条中颠倒过来?答案51: 当你单击它的时候,按住Ctrl键不放。问题52: 我怎样能更精确地移动表单中的对象?答案52: 可以一次移动一个对象一个象素。方法是:使用箭头键或拖动它时按下Ctrl键不放。问题53: 可以在多窗口中进行拖放操作吗?答案53: 是,可以在命令窗口中看看效果。你可以拖动在这里打入的代码到任何编程窗口中。问题54: 当修改页属性的时候,我得到一条错误信息 属性xyz找不到。答案54: 也许你错误地引用了pageframe容器对象自身:ThisForm.Page1.xyz=20应该是:ThisForm.Pageframe.Page1.xyz=20问题55: 如何添加文本到备注字段?答案55: lcMemo=Append this stringREPLACE Table.MemoField WITH lcMemo ADDITIVE问题56: VFP 5.0有那些新功能?答案56: 很多,很多的东西。新特征,更牢固的环境,更小存储器需求,错误校正,并且更好命名,开发环境.更多的细节的微软公司网点。问题57: 当启动应用程序的 .EXE 文件时,如何隐藏 Visual FoxPro 桌面?答案57: 在 CONFIG.FPW 配置文件中添加如下命令行:SCREEN=OFF注意:如果您无须将 CONFIG.FPW 作为单独的文件提供(也就是说,在连编 .EXE 文件之后,您不需要对它作任何改动) 。您可向项目中添加 CONFIG.FPW 文件,并将之标记为可包含的,该文件就会连编为 .EXE 文件的一部分。只有顶层表单活动时,Visual FoxPro 才可以隐藏桌面。使用如下命令,您可以用编程方式隐藏桌面(假设已有一个顶层表单处于活动状态中):_VFP.Visible = .F.问题58: 如何建立一个带有顶层菜单的顶层表单?答案58: 要建立一个顶层表单,请将表单的 ShowWindow 属性设置为 2- 作为顶层表单。要建立一个顶层菜单,请打开菜单设计器。从显示菜单中,选择常规选项,然后设置顶层表单选项。要想将顶层菜单放入顶层表单中,请在表单的 Init(或其他)事件中添加相关的代码。例如:DO with THIS,.T.如果要查看调用顶层菜单的不同选项,请参阅 generated .mpr 文件中的开始部分。问题59: 当我从工具菜单中挑选向导时,应用程序向导不出现。怎样才能运行它?答案59: 要运行应用程序向导, 从工具菜单选向导并从子菜单中选择全部。

温馨提示

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

评论

0/150

提交评论