欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    VFP知识点点.docx

    • 资源ID:3224152       资源大小:103.93KB        全文页数:21页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    VFP知识点点.docx

    1、VFP知识点点VFP知识点点设置目录路径1.如何取得系统目录nPath_ls=fullpath(,2)nPath=strtran(nPath_ls,COMMAND.COM,) &取得Windows的目录名*如果想得到SYSTEM目录则:nPath=strtran(nPath_ls,COMMAND.COM,system) &取得Windowssystem的目录名当然下面的代码更简单:mWinPath=getenv(windir) &取得Windows的目录名2.如何取得运行程序的盘符和当前目录Dqml=sys(5)+sys(2003)+ 3.设置隐含路径DQML=SYS(5)+SYS(2003)

    2、CXLJ=SYS(16)FOR JSQ=1 TO LEN(CXLJ)CXZF=LEFT(RIGHT(CXLJ,JSQ),1)IF CXZF=CXLJ=STUFF(CXLJ,LEN(CXLJ)-JSQ+1,JSQ,)EXITENDIFENDFORSET DEFAULT TO &CXLJ即把exe文件所在有目录设为隐含目录。4.调用WINDOWS对话框GETPRINTER()显示 Windows 的“打印设置”对话框,并返回所选择的打印机名称GETFILE( )显示“打开”对话框,并返回选定文件的名称GETFONT( )显示“字体”对话框,并返回所选定字体的名称GETCOLOR( )显示 Wind

    3、ows 的“颜色”对话框,并返回选定颜色的颜色编号GETPICT( )显示“打开图象对话框”对话框,并返回选定图片文件的文件名5.如何取得某个文件的大小、修改日期及属性 Vfp为我们提供了一个非常强大函数ADIR(), 语法: ADIR(ArrayName , cFileSkeleton , cAttribute , cCreatorType)使用:X=Adir(Myml,C:TEMP*.DBF)返回:X=符合cFileSkeleton条件的文件或目录个数 (数值型)Myml=一个有五列内容的数组。这五列的含义是:1 文件名 字符型 2 文件大小 数值型 3 文件日期 日期型 4 文件时间 字

    4、符型 5 文件属性 字符型 例:我们想得到某个文件的大小或文件修改日期及属性:X=Adir(Myml,C:TEMPabc.DBF)IF X#0 wjsize=Myml(1,2) &取得文件大小 wjdate=Myml(1,3) &取得修改日期及属性 wjAttr=Myml(1,5) &取得文件属性ELSE wait wind 没有您指定的文件!ENDIF文件属性的含义:A 档案文件 一 可读写 H 隐藏文件 R 只读文件 S 系统文件D 目录或文件夹 我们利用Adir()还可以检查某个目录是否存在:X=Adir(Myml,C:ABCDE,D) IF X=0 wait wind 该目录不存在.E

    5、NDI 当然用下面的更简单:if ! file(C:ABCDEnul) wait wind 该目录不存在.endi 总之Adir()可以达到很多目的,具体使用请看查看帮助。6.如何删除只读属性的文件 Vfp没有提供改变文件属性的命令或函数,在Vfp代码中无法删除只读属性的文件,我发现可以利用Rename命令来解决。如c:tempXX1.DAT是一个只读属性的文件。Rename c:tempXX1.DAT TO C:RECYCLEDXX1.DAT 将XX1.DAT文件改名到RECYCLED回收站,就等于删除了该文件。 VFP下的Rename命令当TO后面的文件夹与前面的不一致时,相当于资源管理器

    6、里的剪切命令,这是不是也是BUG呢?7.如何改变文件的属性 Vfp没有提供改变文件的属性的命令或函数,要想改变文件的属性必须转个弯,先把原文件改名,再拷贝回一个然后再删除就到达了目的, 如有一文件: XX1.DAT是只读属性的文件,不改属性无法往文件里写新内容。Rename c:tempXX1.DAT TO C:tempXX1.DDD &先改名Copy file C:tempXX1.DDD to C:tempXX1.DAT&再拷贝Rename c:tempXX1.DDD TO C:RECYCLEDXX1.DAT &再删除这样新拷贝的XX1.DAT就是解除了只读属性的文件了。表格:1.表格(Gr

    7、id)控件的 View 属性设为1或2可以得到如下界面,即左窗口为浏览,右窗口为编辑格式此主题相关图片如下:2.问:在用表格显示数据表的内容时,我们怎样锁定其中的一列,如人事库中的姓名,当移动滚动条时姓名这一列,不移动?答:在表格的左下角有一个黑色的小方块,用鼠标按住它往右拉就可达到您的要求。另外可以设置表格的partition属性做到。3.(1)在网格中交替显示颜色 记录号有序排列时,可以在网格的列中交替显示白色和灰色的记录,代码如下: thisform.Grid1.SetAll(DynamicBackColor,IIF(MOD(RECNO(),2)=0,RGB(255,255,255),R

    8、GB(192,192,192),Column,&交替显示白色和绿色的记录 (2)符合条件的记录显示颜色 进行查询时,想在网格中动态地显示符合条件的记录的颜色,可以充分利用DynamicBackColor和DynamicForeColor特性。下例将符合条件的记录的字体变为红色Thisform.Grid1.Column1.DynamicForeColor=IIf(Database.Category_ID=A02,RGB(225,0,0),RGB(0,0,124)4. 问:如果我想在表单上加入一个表格,用于显示所有的记录,当鼠标点到某条记录时,其它控件的各项内容也同时变化,怎么实现好呢?答:在表格

    9、的afterrowcolchange事件中编入刷新控件的命令即可。5.Wait命令应用很方便,可是我们在VFP中使用时常常只是用到了它的部分功能,而忽略了 一些很有用的功能。 Wait命令也有不少子句:WAITcMessageTextTO MemVarNameWINDOW AT nRow, nColumnNOWAITCLEAR | NOCLEARTIMEOUT nSeconds比如我们的使用常常只是:WAIT WIND 暂停使暂停这两个字停留在其默认窗口的右上角,其实完全可以用 AT nRow, nColumn来改变其停留位置:WAIT WIND 暂停 AT 10,30 &使暂停停留在指定的第

    10、10行,第30列上。WAIT WIND 暂停 +CHR(13)+另起一行 AT 10,30 &在提示信息中加上CHR(13),提示信息可分行显示。 而:WAIT WIND 暂停10秒 TIMEOUT 10 &则可在无击键和鼠标移动的情况下只暂停10秒。6.问:如何解决公元2000年以后的日期问题?答:可以采用以下这些方法,1)采用严格日期格式(SET STRICTDATE TO 1 或SET STRICTDATE TO 2)2)固定使用四位数年份,即SET CENTURY ON3)使用SET CENTURY ON 命令指定2位数年份的默认世纪4)避免使用CTOD()与CTOT()函数,而改用D

    11、ATE()与DATETIME()函数7.DBF表在查看状态下添加新行:CTRL+Y8.VFP 支持长(带空格)文件夹路径名拷贝,可以将文件夹及文件名称用字符串界定符号界定即可。如:copy file c:programfilesaa bb cc?.? to d:ss dfrt ddee ww?.?9. 把EXCEL文件导入DBF表中先新建一个与EXCEL文件字段长度和类型相同的表,然后用命令append from d:test.xls TYPE XLS 把D盘下的TEST文件导入到DBF表中,当想把查询结果导出成EXCEL文件时,可以用命令copy to d:test.xls TYPE XLS

    12、来实现10. 问: 为什么当filter设置时,应该用locate代替seek?答: 当你的查找字段是建立了索引且当前索引是该索引时,SEEK 通常是查找单个记录的最快的方法。不过,当设置了filter时,SEEK 非常慢。理由是SEEK将查找符合你的搜索标准的第一个记录。FoxPro为了移动记录指针到相应的记录上,必须找到和你的标准相匹配且和filter条件相称的记录。和 SEEK不同, LOCATE 是可进行Rushmore优化的. 当一个可优化的filter 起作用时,LOCATE FOR CustId=m.CustId 通常比SEEK m.CustId 更快。在GO TOP 和 GO

    13、BOTTOM 中也存在相似的问题。用无子句的LOCATE来执行GO TOP,将会使记录指针移动到符合filter 条件的第一个记录。要执行 GO BOTTOM, 设置当前索引标识的降序然后LOCATE, 在将索引设置为原来的升序。11.焦点的转移:解决Grid的刷新问题你也许碰到过这样的问题:你想用一个VCR按钮来移动表的指针,比如上一个、下一个等等,却发现Grid不刷新、老是停留在原来的位置;还有,你想在一个添加按钮的代码中把焦点移入表格的一列中,用setfocus()方法却根本没有反应。这是怎么回事呢?关于Gird中的控件的焦点转移有点特殊性。给普通表单上的控件设置焦点我们可以用简单的代码

    14、实现,比如:thisform.textbox1.setfocus()thisform.refresh()但是Grid中的控件则不行,如果你使用以下的代码,什么都不会发生:thisform.grid1.column1.text1.setfocus()thisform.refresh()同时,你要从Grid中移出焦点到表单的控件上也一样,下面的代码同样没有反应:grid1.cloumn1.text1.lostfocus():mand1.setfocus()thisform.refresh()另外,当我们使用移动记录按钮在表中移动时,并不会反映到Grid中,比如:sele dbfnamego bot

    15、tomthisform.refresh()而Grid仍然停在原来的记录上。这是怎么一回事呢?原来,对Grid中控件焦点的移入移出,必须通过Grid来转移!这一点在所有的教科书、程序员手册中都找不到,嘿嘿,是我自己摸索出来的。下面我们来解决上面的三个问题:1、从表单的命令按钮向Grid中的文本框设置焦点thisform.grid1.setfocus()thisform.grid1.column1.text1.setfocus()thisform.refresh()2、从Grid中的文本框中移出焦点grid1.column1.text1.lostfocus():thisform.grid1.set

    16、focus()mand1.setfocus()thisform.refresh()3、当数据指针移动时刷新Gridsele dbfnamego bottomthisform.grid1.setfocus()thisform.refresh()12. GRID动态添加点表头的排序方法:新建myheader.prg:DEFINE CLASS NewHeader as Header Name=NewHeaderPROCEDURE click oGrd=This.Parent.ParentnColumns=This.Parent.ColumnOrder Thisform.LockScreen= .T.

    17、 &锁定屏 cFileName=oGrd.RecordSource &取得绑定的数据源名IF !EMPTY(cFileName)IF RECCOUNT(&cFileName)0FOR i=1 TO This.Parent.Parent.ColumnCount cField=This.Parent.ControlSource &取得绑定的字段名SELECT (cFileName)IF INLIST(VARTYPE(&cField),C,N,D,T,Y,L) &判断字段数据类型 IF i=nColumns & 点击的GRID头cCap=ALLTRIM(This.Caption)DO CASE CA

    18、SE AT(,cCap)0This.Caption=STRTRAN(cCap,)SELECT &cFileNameINDEX on &cField TO gIdx SET ORDER TO gIdx ASCENDING CASE AT(,cCap)0 This.Caption=STRTRAN(cCap,) SELECT &cFileNameINDEX on &cField TO gIdxSET ORDER TO gIdx DESCENDING OTHERWISE This.Caption=This.Caption+SPACE(1)+SELECT &cFileNameINDEX on &cFie

    19、ld TO gIdx SET ORDER TO gIdx DESCENDING ENDCASE ELSE & 没有点击的GRID头cCap=ALLTRIM(oGrd.Columns(i).Header1.Caption)DO CASE CASE AT(,cCap)0oGrd.Columns(i).Header1.Caption=STRTRAN(cCap,)CASE AT(,cCap)0 oGrd.Columns(i).Header1.Caption=STRTRAN(cCap,) OTHERWISE *不变ENDCASE ENDIF & 结束点击的GRID头判断 ENDIF &结束字段数据类型判

    20、断 ENDFOR &结束 ENDIF ENDIF SELECT (cFileName)GO TOP Thisform.LockScreen= .F. &解锁屏 oGrd.Refresh ENDPROC ENDDEFINE *动态添加方法,我放在GRID的init:*动态添加排序 IF Thisform.grid1.ColumnCount0 FOR i=1 TO Thisform.grid1.ColumnCount WITH Thisform.grid1.Columns(i)cCpation=.Header1.Caption nFornts=.Header1.Fontsize.RemoveObj

    21、ect(Header1) &移除Header1 .Newobject(NewHeader1,NewHeader,myHeader.prg) &根据PRG中声明类增加 .NewHeader1.Caption=cCpation.NewHeader1.Fontsize=nFornts.NewHeader1.Name=Header1 &改回默认,对应PRG。如不改就同时改PRGENDWITH ENDFOREndif13.在程序源代码中加上必要的注释,可以增强程序的可读性,也便于日后的维护。注释语句是一种非执行语句,在VFP支持3种类型的注释格式:1、使用NOTE或*命令声明该行是一个注释行;2、使用&

    22、命令在一个语句的末尾加入注释;3、直接在IF.ENDIF、DO.ENDDO、FOR.ENDFOR 等语句后面直接写注释。列表框1.将列表框(ListBox)的 MultiSelect 属性设为 .T. 即可用Shift 或 Ctrl 键同时选择连续或不连续的多项.此主题相关图片如下:2.在给列表框(ListBox)控件添加数据项时,可以在表达式前面添加一个反斜杠来废止一个数据项。例:This.AddItem (此项禁止)This.AddItem (梅子论坛)此主题相关图片如下:3.用一个分割符加一个连字符-可以给列表框(ListBox)控件加入一条分割条This.AddItem (梅子论坛)T

    23、his.AddItem (-)This.AddItem (帮助论坛)此主题相关图片如下:组合框1.ComboBox自动下拉,Getfocus事件:KEYBOARD “F4”2.ComboBox(组合框)的选择性输出 控件ComboBox综合了TextBox(文本框)和ListBox(列表框)的特性,可显示一列项目。但要在ComboBox中对Table(表)中的某个Field(字段)的内容进行选择性输出却较为困难。现利用Foxpro的Query,举出一种解决办法: (1)设置Combo1的Style属性为2Dropdown List(下拉列表框)。 (2)设置Combo1.Rowsourcety

    24、pe为4Query(.QPR)查询文件。 (3)设置Combo1.Rowsource为符合要求的查询文件。 如:Select Sinfor.name&选择表中的字段 From Database!Sinfor&标明表所在的数据库 Where Sinfor.name IN(王) OR(Sinfor.name IN(李) 这样便能在数据库Database中的表Sinfor的字段name中找出姓王和姓李的名字,并在ComboBox中输出。此外,查询文件可利用Foxpro的Query自动生成。3.组合框Combobox的使用1组合框内要显示多列,可改变ColumnCount特性,但此时若不设置列宽度,将

    25、仅显示第一列。可以通过逗号分隔的清单列来指定列宽。如:用“10,50,100”设置三列宽度。也可以使用命令:THISFORM.ComboBox1.ColumnWidths = 10,50,1002要想让用户每次查找时输入一个字母,把IncrementalSearch特性设置为True,运行时,当用户输入一个字母时,高亮条将移列表中第一个字母和输入字母相匹配的第一条目上。3要将输入的内容加入到下拉列表中,可在组合框的Valid事件中加入This.Additem(This.Displayvalue)代码。表单1、表单调用最小化!如果希望表单在调用时以最小化运行,可以向表单的 Init 事件传递一个

    26、参数:1例: DOFORMformnameWITH12、 想在按钮中加入快捷键,可在标题(Caption) 属性加入 符号。例:Caption属性为取消(C),执行后效果如下此主题相关图片如下:3.给页框架(Pageframe)的标题加背景颜色一般给页框架的各个页面加背景颜色时,总是页框架的标题(头部)加不上去,这时可将页框架Pageframe的Tabs特性改为F,然后将各个Page分别加入所需背景颜色,再把Tabs特性改为T 即可。4.显示符合条件的记录数在进行查询或记录筛选时,要返回符合条件的记录数,可用下面代码:Public aa0 &.定义变量Count to aa0 &.符合条件的记

    27、录数赋给变量Thisform.Text1.value=aao &.在文本框中显示出记录数5.问: 为什么编译后的程序运行时,屏幕一闪就退出了,为什么?答: 你需要在你的程序中建立等待状态。可以用read events命令来建立等待状态。要清除等待状态,可使用clear events命令。.问: 为什么当我要退出vfp时,得到一条信息 不能退出vfp。答: 检验on shutdown。on shutdown quit &若没有这句,可能不能退出VFP.可执行文件(.exe)既可以在VFP环境下运行,也可以在Windows环境下运行,但必须和动态链接库Vfp6r.dll和 Vfp6rchs.dll

    28、(中文版)或Vfp6renu.dll(英文版)一起构成VFP所需的完整运行环境(注意必须放在同一个目录下)。. 问:我每次启动编译后的VFP程序,VFP的系统菜单总是先出现,我该怎样避免?答:在您的CONFIG.FPW文件中假如SYSMENU=OFF的命令。.问: 如何在应用程序中避免出现vfp的窗口标题?答: 在config.fpw文件中,加title = 你的标题行。另外, 也可以在主程序中加入:_screen.caption=你的标题10.问: 当启动应用程序的 .EXE 文件时,如何隐藏 Visual FoxPro 桌面(怎样才能把VFP的主屏幕消掉)?答: 在 CONFIG.FPW

    29、配置文件中添加如下命令行:SCREEN=OFF注意:如果您无须将 CONFIG.FPW 作为单独的文件提供(也就是说,在连编 .EXE 文件之后,您不需要对它作任何改动) 。您可向项目中添加 CONFIG.FPW 文件,并将之标记为可包含的,该文件就会连编为 .EXE 文件的一部分。只有顶层表单活动时,Visual FoxPro 才可以隐藏桌面。使用如下命令,您可以用编程方式隐藏桌面(假设已有一个顶层表单处于活动状态中):_VFP.Visible = .F.11.问: 当所有窗口打开时,怎样才能看到VFP桌面上的内容?答: 按ALT+CTRL+SHIFT将把全部打开的窗口隐藏起来,直到放开键。12.问: 怎样同时设置多个对象的同一属性?答: 用SetAll方法。例如,你决定为全部网格中的标题设置9号宋体。将以下代码放入网格的Init事件:THIS.SETALL(FontName,Arial,Header)13.计时器(Timer)控件的Interval属性的取值范围从0至2147483647,也就是说最长的间隔约为596.5小时,超过24天,值为0时不触发Timer事件14.问:在form中如何禁止控件在填满内容时跳到下个控件,要用enter,才跳转。


    注意事项

    本文(VFP知识点点.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开