设为首页   |  加入收藏夹 快速导航:  热门文章  |  最新文章  |  梦想博客  
当前位置:编程之家 -> 文章频道 ->vf 
站内搜索:  

VF编程经验(4)

作者:佚名 来源:VF之家 整理日期:2006-07-02



问题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
将方法代码中的所有字符串解释为可执行代码包括空格和注释,这样将可以
忽略父类方法代码。如果你想把注解加到方法代码中,同时又保持继承的父类
方法编码,使用范围解析操作符(::)来明确调用父类代码。
一个命令按钮的单击事件过程可能是这样的:
&&
Comments
MyExitButton::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="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


问题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 string
REPLACE Table.MemoField WITH lcMemo ADDITIVE


问题56: VFP 5.0有那些新功能?
答案56: 很多,很多的东西。
新特征,更牢固的环境,更小存储器需求,错误校正,并且更好命名,开发环境.
更多的细节的微软公司WWW网点。


问题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: 要运行应用程序向导, 从工具菜单选向导并从子菜单中选择全部。这将
打开向导选择对话框,从中选择的应用程序向导。


问题60: 如何在组合框中隐藏指定的列,只显示其他的列?
答案60: 在组合框中,隐藏指定列的最简单方法是使用"组合框生成器"。
在"组合框生成器"的"布局"选项卡上,将这些列拖到您所希望的宽度。
如果要通过编程在组合框中隐藏指定的列,请将这些列的 ColumnWidth 属性设置为 0。
在如下的程序代码中,列 1 和列 2 被隐藏,列 3 的宽度为 100 pixels:
THISFORM.ComboBox1.ColumnWidths = 0,0,100


问题61: 在一个编辑窗口中,能否对标注语法的颜色进行定制?
答案61: 从"工具"菜单中选择"选项",很容易定制代码颜色。在"选项"对话框
中选择"语法着色"选项卡,您会发现不同的方法可以定制代码颜色。
如果要将语法颜色全部清除,从"编辑"菜单中选择"属性",显示出"属性"对话
框。然后,清除"语法着色"复选框。


问题62: 在我自己建立的类和表单的事件和方法过程中发生错误时,怎样排除?
我怎样排除他们的缺陷?
答案62: 要查看类和表单的方法或事件过程中程序编码,把SET STEP ON放
在方法或事件过程的开始处(或任何其它你想每次一行的运行程序的代码段开
始处). 然后用跟踪和调试窗口来排除你的编码的缺陷。


问题63: 怎样把空白行加到网格上?
答案63: 网格控件被设计来从表,游标或视图显示记录。你可以用APPEND BLANK
或 INSERT - SQL命令增加一个空行到网格。在设计时, 网格不能显示数组的元素.
如果你不想为网格建立一个磁盘文件,可以考虑用CREATE CURSOR命令来建立一个游
标(在内存中的临时表). 在游标建立后,用INSERT - SQL添加记录到游标中。


问题64: 怎样能计算报表内的行数?
答案64: 你可以使用报表变量来计数报表的行数。从报表菜单中选择"变量"来
建立一个报表变量。给报表变量取一个名字并增加一个IIF()函数到变量。作为
逻辑表达式的IIF()函数,为你要计数的字段指定条件:
第一个IIF()函数返回值指定1。
第二的IIF()函数返回值指定0。
例如,下列IIF()函数用于计数州名为华盛顿的记录(State = WA)的记录数。
IIF(State = WA, 1, 0)
选择"求和" 按钮, 并保存报表变量.
放入一个字段到报表的分组或页脚带,并为报表表达式指定报表变量。
当报表被预览或打印后,该字段显示一个符合在IIF()函数中指定条件的记录数.

[1]  [2]  [3]  [4]