
VF编程经验(4) |
问题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 |