Visual%20FoxPro技巧与实例大全
- 格式:doc
- 大小:258.57 KB
- 文档页数:30
Visual FoxPro技巧与实例大全 1。TreeView控件使用示例 以下代码是本演示的全部代码,你只要把它拷贝到任一PRG文件中,执行该文件你就可以看到相应的效果。该代码段在执行后会在目录下自动生成一个Xm.dbf文件,运行后可自行删除。
CLEAR ALL CLOSE ALL CLEAR PROGRAM
PUBLIC TreeView Create_Dbf() oForm = CREATEOBJECT("TreeView") oForm.show() RETURN
DEFINE CLASS TreeView AS form Height = 258 Width = 388 DoCreate = .T. AutoCenter = .T. Caption = "TreeView 控件示例" MaxButton = .F. MinButton = .F. WindowType = 1 BackColor = RGB(128,128,255) Name = "TreeView" Key = 0
ADD OBJECT label1 AS label WITH ; BackStyle = 0, ; Caption = "", ; Height = 102, ; Left = 198, ; Top = 16, ; Width = 180, ; Name = "Label1"
ADD OBJECT command1 AS commandbutton WITH ; Top = 211, ; Left = 217, ; Height = 32, ; Width = 149, ; Caption = "退出演示", ; Name = "Command1"
ADD OBJECT command2 AS commandbutton WITH ; Top = 173, ; Left = 217, ; Height = 32, ; Width = 67, ; Caption = "添加节点", ; Name = "Command2"
ADD OBJECT command3 AS commandbutton WITH ; Top = 173, ; Left = 299, ; Height = 32, ; Width = 67, ; Caption = "删除节点", ; Name = "Command3"
ADD OBJECT tree AS olecontrol WITH ; OLECLASS="COMCTL.TreeCtrl.1",; Top = 0,; Left = 0,; Width = 182,; Height = 258,; HideSelection = .F.
PROCEDURE Init Select xm o = This.Tree Scan If AllTrim(Node) = '0_' o.Nodes.Add(, 1, AllTrim(Key), AllTrim(Text)) Else o.Nodes.Add(AllTrim(Node), 4, AllTrim(Key), AllTrim(Text)) EndIf EndScan This.Key = o.Nodes.Count o.Setfocus ENDPROC
PROCEDURE Tree.Init This.LabelEdit = 1 This.LineStyle = 1 This.Indentation = 18 ENDPROC
PROCEDURE command1.Click CLOSE ALL RELEASE ThisForm ENDPROC
PROCEDURE command2.Click o = ThisForm.Tree IF ISNULL(o.SelectedItem) RETURN ENDIF ThisForm.Key = ThisForm.Key + 1 nKey = ALLTRIM(STR(ThisForm.Key)) + "_" nNode = o.SelectedItem.Key nText = "新添加节点" o.Nodes.Add(nNode, 4, nKey, nText) o.Setfocus ENDPROC
PROCEDURE command3.Click o = ThisForm.Tree IF ISNULL(o.SelectedItem) RETURN ENDIF Ip = o.SelectedItem.Index o.Nodes.Remove(Ip) o.Setfocus ENDPROC
PROCEDURE Tree.NodeClick LPARAMETERS node IF ISNULL(This.SelectedItem) RETURN ENDIF Ip = OCCURS("\", Node.FullPath) ThisForm.label1.Caption = "你现在选中是: 第 " + ALLTRIM(STR(Ip + 1)) + " 层节点" + CHR(13) + CHR(13) +; "节点Key 值是: " + Node.Key + CHR(13) + CHR(13) +; "节点Text值是: " + Node.Text ENDPROC
ENDDEFINE PROCEDURE Create_Dbf IF FILE("xm.dbf") DELETE FILE xm.dbf recycle ENDIF CREATE TABLE xm(KEY c(2), Node c(2), Text c(20)) INSERT INTO xm(Key, Node, Text) values("1_", "0_", "浙江省") INSERT INTO xm(Key, Node, Text) values("2_", "0_", "广东省") INSERT INTO xm(Key, Node, Text) values("3_", "1_", "诸暨市") INSERT INTO xm(Key, Node, Text) values("4_", "2_", "东莞市") INSERT INTO xm(Key, Node, Text) values("5_", "3_", "安华镇") INSERT INTO xm(Key, Node, Text) values("6_", "4_", "石龙镇") RETURN
2.textBox的自动完成(auto completion)功能 http://www.microsoft.com/china/community/Column/99.mspx
3。关于避免重复运行同一表单的方法 在编制管理系统时,往往一个相同的系统要由好几个部门使用,这样,在进入系统时,就要选择不同部门的名称。作为一个使用者,我们希望选择第一次,以后每次进入就不用再选择。以下方法将实现此功能。
新建一个表单,在上面创建一个“组合框”对象,对表单做如下设置: init event: set safety off public z if .not.file(′mv.mem′) z=1 else restore from mv additive endif thisform.combo1.additem("第一个单位") „ thisform.combo1.additem("第二个单位") thisform.combo1.listindex=z destroy event: z=thisform.combo1.listindex save to mv all like z 4、VFP中对API的调用格式
编程时,经常会用到WIN32API函数来对VFP的功能进行扩展,例如对注册表进行操作、获取系统信息等,但是由于WIN32API函数遵循的是C++的数据结构,在应用时与VFP的数据格式有所区别,因此在调用时容易产生问题,现将有关调用方式详解如下: VFP中调用WIN32API的主要函数是:DECLARE - DLL 它是注册外部 Windows 32 位动态链接库 ( .DLL ) 中的一个函数。 语法: DECLARE [cFunctionType] FunctionName IN LibraryName [AS AliasName] [cParamType1 [@] ParamName1, cParamType2 [@] ParamName2, „]
参数: cFunctionType 表明 32 位 Windows .DLL 函数是否有返回值。如果函数有返回值,则包含 cFunctionType ,否则省略 cFunctionType。
cFunctionType 可以是以下值: cFunctionType 说明 SHORT 16 位整数 INTEGER 32 位整数 SINGLE 32 位浮点数 DOUBLE 64 位浮点数 STRING 字符串
FunctionName 指定在 Visual FoxPro 中要注册的 32 位 Windows .DLL 函数名。注意 FunctionName 区分大小写。32 位 Windows .DLL 函数名可以与 Win32 API 手册中规定的不同。例如,Messagebox 函数应该命名为 MessogeBoxA(对于单字节字符)和 MessageBoxW(对于 UNICODE)。如果 Visual FoxPro 不能定位 FunctionName 指定的 32 位 Windows .DLL 函数,则将字母 A 追加到函数名尾部,Visual FoxPro 用新的函数名重新搜索。
如果指定的32 位 Windows .DLL 函数与一个 Visual FoxPro 函数同名,或者函数名不是合法的 Visual FoxPro 函数名,则将32 位 Windows .DLL 函数名作为 FunctionName,并用 AS 子句给该函数? 个合法的 Visual FoxPro 名,这点在本主题的后面将要说明。
IN LibraryName 指定外部 Windows .DLL 的名称,该动态链接库包含 FunctionName 指定的 Windows 32 位 .DLL 函数。如果为 LibraryName 指定 WIN32API,则 Visual FoxPro 就在 KERNEL32.DLL、GDI32.DLL、USER32.DLL、MPR.DLL 和 ADVAPI32.DLL 中搜索 32 位 Windows .DLL 函数。