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

VF编程经验(3)

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


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

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