
VF编程经验(3) |
问题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.Icon] Small 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("Trace"THIS.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 ADDITIVE SET LIBRARY TO class.vcx ADDITIVE |