问: 如何在应用程序中避免出现vfp的窗口标题?
答: 在config.fpw文件中,加"title=标题名称"行。另外也可以在主程序中加入:_screen.caption="标题名称".
问: 如何避免vfp的欢迎屏幕?
答: 在你的快捷方式或图标的程序行中,在vfp.exe后面加"-t"( 不要引号)。
问: 我怎样除掉表单标题条?
答: 把表单的caption属性设置为任意串把表单的maxbutton属性设置为.f.把表单的minbutton属性设置为.f.把表单的movable属性设置为.f.在表单的init中写入this.caption=''
问: 事件的触发顺序是怎样的?
答: 在帮助文件中查看 "vfp事件序列"。另外,在vfp\samples\controls\events目录中,有一个名为events.app的程序演示了不同对象的事件的触发顺序。
问: 如何检查变量是否存在?
答: 使用type()函数来检查一个变量是否存在。
if type ("var") = .t.
messagebox ("it exists",0,"")
endif
或你可以检查是否type("var")="u",若是,则变量不存在。
问: VFP的表的最大容量是多少?
答: 目前是2GB,且在将来版本中该限制可能被取消。
问: 为什么运行exe文件时,系统菜单总是在自己的菜单前出现?
答: 把sysmenu=off放入config.fpw文件。
问: 为何不能从一个对象的valid事件中把焦点设置到另一个对象上。
答: setfocus()方法不能从valid事件中运行。试着用lostfocus事件作为替代。
问: 为什么要退出VFP时,得到一条信息 ’不能退出vfp’?
答: 检验on shutdown。
问: 运行一个表单时,怎样使它停下来?
答: 可以在表单的init()加入return .f.,该方法适用于所有的对象。
问: 什么时候,计时器触发?
答: 如果一个菜单弹出或messagebox()窗口激活时,计时器将不会触发,当用户调整控件尺寸,或者拖动表单时,以及用户拖动scrollbar时,计时器也不会触发。
问: 怎样从表中选择重复的记录?
答:
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
问: 怎样让属性和方法设置到它们的缺省值?
答: 可以在属性窗口中右击一个属性,将会返回该属性的缺省值。当你想设置一个对象的属性为其父类的属性时,该办法特别有用。例如,如果你使用标签类定义了一个标签,且设置该标签类的FontBold = .T,但该对象的FontBold = .F.可仅右击鼠标,并选的"恢复至默认值"来恢复该类的定义默认定义。该动作也适用于属性窗口中的方法。可以在方法列表上右击鼠标来除掉某方法中的全部方法代码。这是重置当前对象,让它运行类定义中的方法代码的简便方法。如果你不小心让你的方法编码被缺省值复位,不要保存修改,立即退出表单设计器,当系统提示是否保存修改时,选"否"取回它。
问: 如何能既执行默认的父类的事件/方法又运行一些补充的代码?
答: 可以在子类的方法中输入代码来忽略父类方法代码。FoxPro将方法代码中的所有字符串解释为可执行代码包括空格和注释,这样将可以忽略父类方法代码。如果想把注解加到方法代码中,同时又保持继承的父类方法编码,使用范围解析操作符(::)来明确调用父类代码。一个命令按钮的单击事件过程可能是这样的:
&&
Comments
MyExitButton::Click
&&
问: 怎样同时设置多个对象的同一属性?
答: 用SetAll方法。例如为全部网格中的标题设置9号宋体,可将以下代码放入网格的Init事件:
THIS.SETALL("FontName","Arial","Header")
问: 必须总是打入长长的对象层次列表吗?
答:不.可以使用变量替换以下两种方法的效果是相同的:
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命令,
WITH Thisform.pageframe.page1.container.object
.caption = "This "
.left = 10
.top = 50;
ENDWITH
问: 怎样能更精确地移动表单中的对象?
答: 使用箭头键或拖动它时按下Ctrl键不放,可以一次移动一个对象一个象素。
问: 当修改页属性的时候,我得到一条错误信息 "属性***找不到"。
答: 也许你错误地引用了pageframe容器对象自身:
ThisForm.Page1.***=20
应该是:
ThisForm.Pageframe.Page1.***=20
问: 当启动应用程序的 .EXE 文件时,如何隐藏 Visual foxpro 桌面?
答: 在 CONFIG.FPW 配置文件中添加如下命令行:
SCREEN=OFF
注意:如果您无须将 CONFIG.FPW 作为单独的文件提供(也就是说,在连编 .EXE 文件之后不需要对它作任何改动) ,可向项目中添加 CONFIG.FPW 文件,并将之标记为可包含的,该文件就会连编为 .EXE 文件 的一部分。只有顶层表单活动时,Visual FoxPro 才可以隐藏桌面。使用如下命令,您可以用编程方式隐藏桌面(假设已有一个顶层表单处于活动状态中):
_VFP.Visible = .F.
问: 当从工具菜单中挑选向导时,应用程序向导不出现。怎样才能运行它?
答: 要运行应用程序向导, 从工具菜单选向导并从子菜单中选择全部。这将打开向导选择对话框,从中选择的应用程序向导。
问: 如何在组合框中隐藏指定的列,只显示其他的列?
答: 在组合框中,隐藏指定列的最简单方法是使用"组合框生成器"。在"组合框生成器"的"布局"选项卡上,将这些列拖到您所希望的宽度。如果要通过编程在组合框中隐藏指定的列,请将这些列的 ColumnWidth 属性设置为 0。在如下的程序代码中,列 1 和列 2 被隐藏,列 3 的宽度为 100 pixels:
THISFORM.ComboBox1.ColumnWidths = 0,0,100
问: 怎样能计算报表内的行数?
答: 可以使用报表变量来计数报表的行数。从报表菜单中选择"变量"来建立一个报表变量。给报表变量取一个名字并增加一个IIF()函数到变量。作为逻辑表达式的IIF()函数,为你要计数的字段指定条件:第一个IIF()函数返回值指定1。第二的IIF()函数返回值指定0。
例如,下列IIF()函数用于计数州名为华盛顿的记录(State = ’WA’)的记录数。
IIF(State = 'WA', 1, 0)
选择"求和" 按钮, 并保存报表变量.放入一个字段到报表的分组或页脚带,并为报表表达式指定报表变量。
问:怎样从表单返加一个值?
答:可以在模式表单的unload事件中用return来返回一个值。
问:怎样在表单设计器中把属性或方法添加到表单中?
答:用表单设计器窗口或属性/事件/激活的方法窗口,从菜单中选择表单。最初的两个选择是新属性和新方法。选择你想要加入的一个并填写属性或方法的名称,新建的属性将出现在属性窗口的最底部。
问:我把的工具条或设计窗口移出了屏幕,怎样把它移回来?
答:工具条或窗口的位置保存在vfp主目录下的foxuser。dbf表中。如果删除或修改该文件,你的工具条和窗口将恢复他们的默认位置或你指定的位置。或从系统菜单的窗口菜单中选择重新安排全部。
问:为什么编译后的程序运行时,屏幕一闪就退出了,为什么?
答:你需要在你的程序中建立’等待状态’。可以用readevents命令来建立等待状态。要清除等待状态,可使用clearevents命令。如果你只有一个屏幕,把表单的windowstate属性设置为modal。这也提供等待状态,但是不允许你使用菜单。当模式表单被释放时,等待状态结束并返回至操作系统。
问:运行表单时什么也不显示是什么原因 ? 表单本身是显示了,但其中的任何对象都不可见.
答:试着把lockscreen属性设置为.F.。