| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5089 人关注过本帖, 1 人收藏
标题:VFP编程技巧,不断增加中(千万别灌水)
取消只看楼主 加入收藏
tzhtang
Rank: 1
等 级:新手上路
帖 子:888
专家分:0
注 册:2004-8-30
收藏
得分:0 
判断驱动器的属性
p=SYS(5)+'\'
n=drivetype(p) &&n=3为本地硬盘,4为网络盘,1为不存在,2为软盘

2005-07-18 11:30
tzhtang
Rank: 1
等 级:新手上路
帖 子:888
专家分:0
注 册:2004-8-30
收藏
得分:0 
背景音乐的实现: 
一、利用set bell to
  VFP5.0的set bell to命令的使用格式不同于FoxPro2.X的格式。在VFP5.0中,它的格式为Set Bell To [cWAVFileName, nDuration]。其中cWAVFileName为一个.WAV文件;nDuration为持续时间(注意该项不可省略,否则会产生语法错误)。这样当在个人程序的初始模块中用set bell to 定向到一.WAV文件后,便可在后面的模块中用?chr(7)来播放该.WAV文件。
  示例1:
  set bell on &&使bell有效
  set bell to′ .WAV文件′,0 &&使bell定向到一个.WAV 文件。注意有单引号
  ?chr(7)
  &&播放该.WAV文件
  二、利用OLE容器控件
  创建一表单,单击表单控件工具栏中的“OLE容器控件”按钮,然后在表单上适当位置点击或拖动。在出现的“Insert Object”窗口中选“Creat New”或“Creat From File”,用“Browse”按钮选取自己的.WAV文件,确定即可。
  在当前表单中会出现一“喇叭”图标,设置该图标的属性“ AutoActivate”为1,可使每当表单运行时自动播放该.WAV文件,实现背景音乐;设置Height、Width均为0时,可隐藏“喇叭”图标。
  三、利用VFP库Foxtools.fll
  用=Regfn()和=Callfn()可访问Foxtools.fll中的音频模块,进行播放声音文件。
  示例2:
  创建一表单,在其Activate事件中输入下列代码:
  public ss &&定义一全局变量ss
  set library to foxtools.fll &&打开库Foxtools.fll
  ss=Regfn(″SndPlaySound″,″CI″,″I″,″mmsystem″) &&取得音频信息
  =Callfn(ss,″一.wav文件″,n) &&n=0(1,2,3也可)时只播放一遍,n=9时循环播放
  在其Destroy事件中输入下列代码:
  =Callfn(ss,″″,10) &&停止播放
  set library to &&从内存中释放库foxtools.fll
  四、利用Windows的动态链接库
  在VFP5.0的安装目录samples\classes下,有一类库samples\classes。其中提供有两种控件:视频和音频,音频可以控制播放.WAV和.MID文件,利用它可轻松地实现背景音乐。下面给出它的实例。
  示例3:
  创建一表单,在表单控件工具栏中选择类按钮,添加VFP5.0中的samples\classes\samples.vbx类库。此时表单控件工具栏中会出现SoundPlayer和VideoFrame两个多媒体控件。选择SoundPlayer,在表单上单击后,设置它的属性如下:
  AutoOpen=.t.
  AutoPlay=.t.
  AutoRepeat=.t.
  Class=SoundPlayer
  Soundfile=指定一.WAV或.MID文件 &&注意没有引号
  Visible=.f. &&不可见

2005-07-18 11:33
tzhtang
Rank: 1
等 级:新手上路
帖 子:888
专家分:0
注 册:2004-8-30
收藏
得分:0 

测试内存变量是否存在: if type("变量名") = "U" messagebox("不存在") endif

if vartype(变量名) = "U" messagebox("不存在") endif


2005-07-18 11:42
tzhtang
Rank: 1
等 级:新手上路
帖 子:888
专家分:0
注 册:2004-8-30
收藏
得分:0 

报表FRX文件的分析                   报表文件.frx是一个表,.fpt是一个备注库,其库结构同一般自由表,可以use打开,字段总共有74项,分别介绍如下:  字段名称 类型 长度 小数 说明   1 platform c 8 操作平台(_dos或_windows)   2 uniqueid c 10 唯一标识(当name合expr都为空时以_rhe开头, 否则以_rnr开头)   3 timestamp n 10 时间标签(先后次序)   4 objtype n 2 目标类型(1.环境; 2.数据库; 5.文字; 8.变量;9.timestamp为空; 23.timestamp为空) 5 objcode n 3 目标代码(1.;4.;7.;53)   6 name m 10 名称(数据库名称)   7 expr m 10 表达式   8 vpos n 9 3 行座标   9 hpos n 9 3 列座标   10 height n 9 3 高度   11 width n 9 3 宽度   12 style m 10 风格(透明,不透明)   13 picture m 10 格式或ole文件名称   14 order m 10 索引排序   15 unique l 1 唯一数据库(.f.,.t.,空)   16 comment m 10 注释   17 environ l 1 是否报表运行环境(.t.时)   18 boxchar c 1 画框字符   19 fillchar c 1 表达式类型(c,n,d等,文字型的为空)   20 tag m 10 (当该记录为记录环境的记录时,该字段储存打印信息等;记录数据库时,储存数据库名称)   21 tag2 m 10 当该记录为记录环境的记录时,该字段储存打印控制等   22 penred n 5 前景红   23 pengreen n 5 前景绿   24 penblue n 5 前景蓝   25 fillred n 5 填充红   26 fillgreen n 5 填充绿   27 fillblue n 5 填充蓝   28 pensize n 5 划线宽度   29 penpat n 5 指定填充图案(0.空;1.实体;2.水平;3.垂线;4.左  斜;5右斜;6.交叉;7.斜交叉)   30 fillpat n 5 划线类型(0.无;1.点;2.虚线;3. 虚线-点;4. 虚线-点-点)   31 fontface m 10 字体类型   32 fontstyle n 3 字体风格   33 fontsize n 3 字体大小   34 mode n 3 模式   35 ruler n 1 标尺(2-默认值,3-象素)   36 rulerlines n 1 标线宽度   37 grid l 1 是否显示网格线   38 gridv n 2 垂直网格线刻度   39 gridh n 2 水平网格线刻度   40 float l 1 浮动   41 stretch l 1 溢出时伸展   42 stretchtop l 1 相对于顶端伸展   43 top l 1 相对于顶端固定   44 bottom l 1 相对于底端固定   45 suptype n 1 控制类型   46 suprest n 1 控制设置   47 norepeat l 1 每页都打印页标题   48 resetrpt n 2 重置报表   49 pagebreak l 1 每组从新的一页开始   50 colbreak l 1 从新的一列开始   51 resetpage l 1 每组页号重新从1开始   52 general n 3 通用   53 spacing n 3 空格   54 double l 1 是否加倍   55 swapheader l 1 头互换   56 swapfooter l 1 脚注互换   57 ejectbefor l 1 打印前走纸   58 ejectafter l 1 打印后走纸   59 plain l 1 指定只在报表开始位置出现页标题   60 summary l 1 是否仅打印总计和分类总计信息   61 addalias l 1 是否增加别名   62 offset n 3 偏移(0-左;1-右;2-居中)   63 topmargin n 3 上边界高度   64 botmargin n 3 下边界高度   65 totaltype n 2 计算类型   66 resettotal n 2 重置(1-表尾,2-页尾)   67 resoid n 3 源标识   68 curpos l 1 是否显示当前位置   69 supalways l 1 是否打印重复值   70 supovflow l 1 当细节区数据溢出时到新页或新列打印   71 suprpcol n 1 当此列改变时打印   72 supgroup n 2 当此组改变时打印   73 supvalchng l 1 若空行则删除   74 supexpr m 10 是否打印控制条件   ==============================   objtype objcode offset 含义   5 0 文字   8 0 表达式   6 0 1 直线(水平线)   6 0 0 直线(垂直线)   7 4 矩形框(0~99椭圆)  

报表布局的控制的特征值:   objtype objcode 含义   9 0 页头高度   9 1 页细节高度   9 3 组标头高度   9 4 组细节高度   9 5 组脚注高度   9 7 页脚注高度   其他常用到的字段有: ①水平坐标(hpos); ②宽度(width); ③表达式类型(fillchar);   ④字体(fontface); ⑤对齐方式(offset)。


2005-07-18 11:42
tzhtang
Rank: 1
等 级:新手上路
帖 子:888
专家分:0
注 册:2004-8-30
收藏
得分:0 

VFP全面控制EXCEL

  VFP和Excel都可以用来进行处理数据库表格,如果巧妙地将二者的优点结合起来,将会大大方便我们的工作。比如我们可以利用VFP进 行处理数据,而利用Excel的预览打印功能进行报表打印。这就需要我们在VFP中直接来控制Excel。下面就在开发VFP应用项目时对Excel 的控制作一下介绍:

  1.创建Excel对象

  eole=CREATEOBJECT(′Excel.application′)

  2.添加新工作簿

  eole.Workbooks.add

  3.设置第3个工作表为激活工作表

  eole.Worksheets(″sheet3″).Activate

  4.打开指定工作簿

  eole.Workbooks.Open(″c:\temp\ll.xls″)

  5.显示Excel窗口

  eole.visible=.t.

  6.更改Excel标题栏

  eole.Caption=″VFP应用程序调用Microsoft Excel″

  7.给单元格赋值

  eole.cells(1,4).value=XM(XM为数据库字段名)

  8.设置指定列的宽度(单位:字符个数)

  eole.ActiveSheet.Columns(1).ColumnWidth=5

  9.设置指定行的高度(单位:磅)

  eole.ActiveSheet.Rows(1).RowHeight=1/0.035

  (设定行高为1厘米,1磅=0.035厘米)

  10.在第18行之前插入分页符

  eole.Worksheets(″Sheet1″).Rows(18).PageBreak=1

  11.在第4列之前删除分页符

  eole.ActiveSheet.Columns(4).PageBreak=0

  12.指定边框线宽度(Borders参数如下)

  ole.ActiveSheet.Range(″b3:d3″).Borders(2).Weight=3

  13.设置四个边框线条的类型

  eole.ActiveSheet.Range(″b3:d3″).Borders(2).LineStyle=1

  (其中Borders参数:1-左、2-右、3-顶、4-底、5-斜、6-斜/;LineStyle值:1与7-细实、2-细虚、4-点虚、9-双细实线)

  14.设置页眉

  eole.ActiveSheet.PageSetup.CenterHeader=″报表1″

  15.设置页脚

  eole.ActiveSheet.PageSetup.CenterFooter=″第&P页″

  16.设置页眉到顶端边距为2厘米

  eole.ActiveSheet.PageSetup.HeaderMargin=2/0.035

  17.设置页脚到底边距为3厘米

  eole.ActiveSheet.PageSetup.FooterMargin=3/0.035

  18.设置顶边距为2厘米

  eole.ActiveSheet.PageSetup.TopMargin=2/0.035

  19.设置底边距为4厘米

  eole.ActiveSheet.PageSetup.BottomMargin=4/0.035

  20.设置左边距为2厘米

  veole.ActiveSheet.PageSetup.LeftMargin=2/0.035

  21.设置右边距为2厘米

  eole.ActiveSheet.PageSetup.RightMargin=2/0.035

  22.设置页面水平居中

  eole.ActiveSheet.PageSetup.CenterHorizontally=.t.

  23.设置页面垂直居中

  eole.ActiveSheet.PageSetup.CenterVertically=.t.

  24.设置页面纸张大小(1-窄行8?5?11 39-宽行14?11)

  eole.ActiveSheet.PageSetup.PaperSize=1

  25.打印单元格网线

  eole.ActiveSheet.PageSetup.PrintGridlines=.t.

  26.拷贝整个工作表

  eole.ActiveSheet.UsedRange.Copy

  27.拷贝指定区域

  eole.ActiveSheet.Range(″A1:E2″).Copy

  28.粘贴

  eole.WorkSheet(″Sheet2″).Range(″A1″).PasteSpecial

  29.在第2行之前插入一行

  eole.ActiveSheet.Rows(2).Insert

  30.在第2列之前插入一列

  eole.ActiveSheet.Columns(2).Insert

  31.设置字体

  eole.ActiveSheet.Cells(2,1).Font.Name=″黑体″

  32.设置字体大小

  eole.ActiveSheet.Cells(1,1).Font.Size=25

  33.设置字体为斜体

  eole.ActiveSheet.Cells(1,1).Font.Italic=.t.

  34.设置整列字体为粗体

  eole.ActiveSheet.Columns(1).Font.Bold=.t.

  35.清除单元格公式

  eole.ActiveSheet.Cells(1,4).ClearContents

  36.打印预览工作表

  eole.ActiveSheet.PrintPreview

  37.打印输出工作表

  eole.ActiveSheet.PrintOut

  38.工作表另为

  eole.ActiveWorkbook.SaveAs(″c:\temp\22.xls″)

  39.放弃存盘

  eole.ActiveWorkbook.saved=.t.

  40.关闭工作簿

  eole.Workbooks.close

  41.退出Excel

  eole.quit


2005-07-21 09:58
tzhtang
Rank: 1
等 级:新手上路
帖 子:888
专家分:0
注 册:2004-8-30
收藏
得分:0 

巧用变量替代 以下两种方法的效果是相同的: 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

[此贴子已经被作者于2005-7-26 12:30:02编辑过]


2005-07-26 12:27
tzhtang
Rank: 1
等 级:新手上路
帖 子:888
专家分:0
注 册:2004-8-30
收藏
得分:0 
读取文本文件
txtfile="mytext.txt" &&文本文件位置与名称
f1=fopen(txtflie)  &&打开文本文件
do while .not. feof()
myread=fgets(f1,4)  &&每次读取文本文件的四个字符
.......
此处加入数据处理代码
.......
enddo
fclose(f1) &&关闭文本文件

[此贴子已经被作者于2005-7-26 12:30:35编辑过]



2005-07-26 12:28
tzhtang
Rank: 1
等 级:新手上路
帖 子:888
专家分:0
注 册:2004-8-30
收藏
得分:0 

FORCEEXT( ) 函数

返回一个字符串,使用新的扩展名替换旧的扩展名

FORCEEXT(cFileName, cExtension) 返回值 字符型

参数 cFileName 指定文件名(带有或不带有路径或扩展名),该文件名将获得一个新的扩展名。 cExtension 指定了 cFileName 的新扩展名(带有点号)。


2005-07-26 12:32
tzhtang
Rank: 1
等 级:新手上路
帖 子:888
专家分:0
注 册:2004-8-30
收藏
得分:0 
用不同表中的不相同记录

select * from 表A where 字段1 not in (select 字段1 from 表B)

2005-07-26 12:34
tzhtang
Rank: 1
等 级:新手上路
帖 子:888
专家分:0
注 册:2004-8-30
收藏
得分:0 
将查询所得的值作为下拉列表中的值!
rowsource=select no,name from 字段1 into cursro 临时表1

2005-07-26 12:36
快速回复:VFP编程技巧,不断增加中(千万别灌水)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033089 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved