VFP经典问题集Word格式.docx

上传人:b****4 文档编号:6229282 上传时间:2023-05-06 格式:DOCX 页数:17 大小:26.38KB
下载 相关 举报
VFP经典问题集Word格式.docx_第1页
第1页 / 共17页
VFP经典问题集Word格式.docx_第2页
第2页 / 共17页
VFP经典问题集Word格式.docx_第3页
第3页 / 共17页
VFP经典问题集Word格式.docx_第4页
第4页 / 共17页
VFP经典问题集Word格式.docx_第5页
第5页 / 共17页
VFP经典问题集Word格式.docx_第6页
第6页 / 共17页
VFP经典问题集Word格式.docx_第7页
第7页 / 共17页
VFP经典问题集Word格式.docx_第8页
第8页 / 共17页
VFP经典问题集Word格式.docx_第9页
第9页 / 共17页
VFP经典问题集Word格式.docx_第10页
第10页 / 共17页
VFP经典问题集Word格式.docx_第11页
第11页 / 共17页
VFP经典问题集Word格式.docx_第12页
第12页 / 共17页
VFP经典问题集Word格式.docx_第13页
第13页 / 共17页
VFP经典问题集Word格式.docx_第14页
第14页 / 共17页
VFP经典问题集Word格式.docx_第15页
第15页 / 共17页
VFP经典问题集Word格式.docx_第16页
第16页 / 共17页
VFP经典问题集Word格式.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

VFP经典问题集Word格式.docx

《VFP经典问题集Word格式.docx》由会员分享,可在线阅读,更多相关《VFP经典问题集Word格式.docx(17页珍藏版)》请在冰点文库上搜索。

VFP经典问题集Word格式.docx

这是由于你的表单的数据会话期设置为私有数据工作期。

很多"

set"

命令仅对当前数据工作期有效。

当你拥有私有数据工作期时,你必须再次确立 

那些设置值。

要达到这一目的,你可以建立一个用于环境设置的类。

在表单的 

init事件中设置你的环境值而在表单的destroy事件中恢复其原始值。

问题8:

我在pageframe中的一个页中改变了记录指针,但我转到其他的页时, 

其他的页中的数据仍然是原记录的值。

为什么?

答案8:

你需要在你的每一页activate()中放置代码来确信显示当前记录值。

如果你在某处执行了thisform.refresh()命令,vfp仅刷新pageframe的当前页 

面上的内容。

试着在每个页(page)的activate()中调用this.refresh()。

&

nbsp;

问题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 

在这种情况下,你必须用一个"

@"

符号强迫参数的传递为按址传递。

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="

或者在表单设计器的属性窗口中设置它的值。

问题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("

)="

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 

或 

from&

nbsp;

table;

wherekeyin;

(selectkey;

fromtable;

1);

问题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和combobo 

x)除了controlsource属性之外,还有rowsource属性允许您一次显示多于一个字段和行 

数据仍然是与单一的字段绑定的,这就是为什么这些控件需要controlsource属性。

表格 

控件是唯一具有recordsource属性的控件,但是没有controlsource属性。

对于表格控件 

,数据是与一个完整的记录绑定的。

问题34:

为什么组合框只显示一行数据?

我首先为该组合框定义了一个数组,然后,在表单 

的Init事件中执行了一个SELECT-SQL命令来激活数组。

答案34:

在表单的Init事件中,您建立了一个没有行或者只有一行的数组。

当表单建立后 

,组合框的Init事件发生在表单的Init事件之前,所以组合框只包含一列数据。

要改正此 

错误,请在SELECT-SQL语句下面紧接着添加下面代码行,在表单的Init事件中建立数组 

&

nbsp;

:

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的专业版内。

在ImagEdit中制作新图标的时候,小图标通过指定小的图标16-的彩色16x16选项制作。

如果这选项不可用,制作新图标的时候把下列行加到坐落于你的WINDOWS目录的IMAGEDIT.IN 

I文件中:

[ImagEdit.Icon] 

SmallIcon=16,16,16 

问题37:

如何在导航中添加记录到表的缓存中?

答案37:

要把记录指示移动到表缓存中添加的记录上,用带负值的GO命令。

RECNO()函数在表缓存中的记录上返回升序负数值。

问题38:

怎样(以编程的方式)复制内容到剪切板?

答案38:

在求助文件中看_ClipText。

问题39:

调试时,怎样保持计时器处于激活状态?

答案39:

把以下代码放入Timer()事件中:

_Screen.ActiveForm.MyTimer.Enabled=.T.

IF 

WVISIBLE("

Trace"

)THIS.Enabled=.F. 

THIS.Enabled=.F。

ENDIF 

问题40:

怎样播放声音文件(.WAV)?

答案40:

除了使用第三方产品和API调用之外,播放.WAV的最简单的方法是:

SETBELLTO"

c:

\sound.wav"

?

CHR(7) 

SETBELLTO 

问题41:

怎样设置多个过程或类文件?

答案41:

使用ADDITIVE子句:

SETPROCEDURETOproc.prgADDITIVE 

SETLIBRARYTOclass.vcxADDITIVE 

问题42:

为什么当filter设置时,应该用locate代替seek?

答案42:

当你的查找字段是建立了索引且当前索引是该索引时,SEEK通常是查找单个记录的 

最快的方法。

不过,当设置了filter时,SEEK非常慢。

理由是SEEK将查找符合你的搜索标准 

的第一个记录。

FoxPro为了移动记录指针到相应的记录上,必须找到和你的标准相匹配且和f 

ilter条件相称的记录。

和SEEK不同,LOCATE是可进行Rushmore优化的.当一个可优化的fi 

lter起作用时,LOCATEFORCustId=m.CustId通常比SEEKm.CustId更快。

在GOTOP和G 

OBOTTOM中也存在相似的问题。

用无子句的LOCATE来执行GOTOP,将会使记录指针移动到乎 

合filter条件的第一个记录。

要执行GOBOTTOM,设置当前索引标识的降序然后LOCATE,在 

将索引设置为原来的升序。

问题43:

我怎样让属性和方法设置到它们的缺省值?

答案43:

你可以在属性窗口中右击一个属性,将会返回该属性的缺省值。

当你想设置一个对 

象的属性为其父类的属性时,该办法特别有用。

例如,如果你使用标签类定义了一个标签,且 

设置该标签类的FontBold=.T,但该对象 

的FontBold=.F.你可仅右击鼠标,并选的"

恢复至默认值"

来恢复该类的定义默认定义。

该 

动作也适用于属性窗口中的方法。

你可以在方法列表上右击鼠标来除掉某方法中的全部方法代 

码。

这是重置当前对象,让它运行类定义中的方法代码的简便方法。

如果你不小心让你的方法 

编码被缺省值复位,不要保存修改,立即退出表单设计器,当系统提示是否保存修改时,选"

否"

取回它。

问题44:

如何能既执行默认的父类的事件/方法又运行一些补充的代码?

答案44:

你可以在子类的方法中输入代码来忽略父类方法代码。

FoxPro 

将方法代码中的所有字符串解释为可执行代码包括空格和注释,这样将可以 

忽略父类方法代码。

如果你想把注解加到方法代码中,同时又保持继承的父类 

方法编码,使用范围解析操作符(:

)来明确调用父类代码。

一个命令按钮的单击事件过程可能是这样的:

Comments 

MyExitButton:

Click 

问题45:

怎样使工具条按钮的可用/不可用和对应的菜单选择协调一致?

答案45:

一个协调工具条按钮和菜单选择的简单的方法是:

在菜单的Skip子句中使用Enabl 

ed属性。

例如,你有一个名为oToolbar的工具条,其上有一个新建命令按钮叫cmdAdd同 

时你有一个记录菜单其中有一个新建选项。

给新建选项的Skip子句加上"

oToolBar.cmdAdd.E 

nabled=.F."

或"

!

oToolBar.cmdAdd.Enabled"

则新建菜单选项仅当oToolBar.cmdAdd可用时才是可用的。

记住 

SetSkip当它的值为.T.时,废止菜单选项,所以在上例中的NOT操作符(!

)或"

=.F."

是必 

不可少的。

问题46:

怎样同时设置多个对象的同一属性?

答案46:

用SetAll方法。

例如,你决定为全部网格中的标题设置9号宋体。

将以下代码放入网 

格的Init事件:

THIS.SETALL("

FontName"

"

Arial"

Header"

问题47:

我必须总是打入长长的对象层次列表吗?

答案47:

不.你可以使用变量替换 

以下两种方法的效果是相同的:

Thisform.pageframe.page1.container.object.caption="

This"

Thisform.pageframe.page1.container.object.left=10 

Thisform.pageframe.page1.container.object.top=50 

temp=Thisform.pageframe.page1.container.object 

temp.caption="

This"

temp.left=10 

temp.top=50 

另一种方法是使用WITH命令, 

WITHThisform.pageframe.page1.container.object 

.caption="

.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:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 工作计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2