
VF编程经验(1) |
怎样制作自定义工具栏? 1、建立的方法 (1)建立新类别。在命令窗口中执行CREATE CLASS命令后,在新建类窗口中键入类别及类别库的名称,如下图: (2)加入按钮对象。当进入类设计器时会发现Toolbar的窗口很小,因此你要仔细的建立按钮,如下图: 按下工具栏中的按钮,再在类设计器中的工具栏内单击鼠标左键,以加入一个按钮到该自定义工具栏中,并修改按钮的特性为: Caption= Picture=Top1.bmp 如果发现图形不能完全显示,表示图形太大可以修改成小一点的图形或将按钮拉大,如果要在按钮之间加入空格,请按下按钮,并在按钮之间按下。 (3)编写按钮的事件过程。就是对每个按钮编写各自的Click过程,这与表单中按钮的Click事件建立过程一样。 (4)保存。按下Ctrl+W将该类别保存到LIBS.VCX类别库中。 2、类别的应用 此类别是一个Toolbar,而Toolbar事实上也是表格的一种,只是某些特性与表格不同,因此,如果显示数据的画面也是一个表格,便不能将其加入到数据显示表格中,因此我们要建立一个更大的对象以便同时加入表格和工具栏,此对象便是Formset。 (1)建立新表格。在命令窗口中执行:CREATE FORM (2)建立表格集。请选定表单菜单中的创建表格集选项。 (3)建立工具栏对象。对于工具栏不是直接以视觉化方式加入到表格集中的,而是通过程序建立,在Formset的ini事件中编写如下程序: SET CLASSLIB TO libs ADDITIVE This.AddObject(mybar,move_rec) This.mybar.show This.mybar.dock(0) 关于dock()函数的说明: 值 常量 说明 - 1 TOOL_NOTDOCKED 不停放工具栏。 0 TOOL_TOP 在 Visual FoxPro 主窗口的顶部停放工具栏。 1 TOOL_LEFT 在 Visual FoxPro 主窗口的左边停放工具栏。 2 TOOL_RIGHT 在 Visual FoxPro 主窗口的右边停放工具栏。 3 TOOL_BOTTOM 在 Visual FoxPro 主窗口的底部停放工具栏。 (4)执行。在执行表单的同时工具栏会被自动打开,如下图: 启动EXE文件时如何隐藏VFP的主窗口显示?(注:对于摘自其他地方的编程经验,我们将注明出处及作者) 用文本编辑器编辑一个CONFIG.FPW文件,写入一行“Screen=OFF”,将CONFIG.FPW保存到你的项目所在的目录,并将该文件加入到项目管理器中的其他项中,如下图: 背景音乐的实现(注:对于摘自其他地方的编程经验,我们将注明出处及作者) 1、调用Windows的APT函数SndPlaySound播放声音文件(.WAV)。首先建立一个表单(FORM1),然后编写表单的 Activate过程: Public Sound Set Library To Foxtool.FLL Sound=Regfn("SndPlaySound","CI","I","Mmsystem") =Callfn(Sound,"BACK.WAV",1) 再编写FORM1的Release过程: =Callfn(Sound,"",10) Set Library to 运行表单后,BACK.WAV就作为背景音乐在后台播放,关闭表单时音乐自动停止。如果想让音乐自动循环播放,将Activate过程中最后一句换为: =Callfn(Soun,"BACK.WAV",1+8)即可。 注意:如果你的计算机没有声卡,运行以上程序时将出错。 (湖北 闫东) 2、用Set Bell To 响铃命令。编写表单的Activate过程: Set Bell On Set Bell To "BACK.WAV" ??CHR(7) 再编写表单的Release过程: Set Bell To 注意:该种方法在运行时,不能进行循环播放,不能中断音乐的播放,但是在没有声卡的情况下,该种程序不会出错,只是进行PC喇叭的响铃一次。 移动字幕的制作?(注:对于摘自其他地方的编程经验,我们将注明出处及作者) 1、首先用画图软件做一幅字幕图画。 2、建立一个表单(FORM1),单击工具栏中的计时器按钮,在表单中添加一个计时器控件(Timer1);单击工具栏中的图象按钮,在表单中加入字幕图画(Image1)。 3、双击表单中的计时器控件,编写计时器的Timer过程: If Thisform.image1.TOP<0-Thisform.image1.height Thisform.image1.TOP=Thisform.height Endif Thisform.image1.TOP=Thisform.image1.top-1 指定计时器事件的间隔,以毫秒为单位:Interval=50 实例文件下载 进度条控件的插入?(注:对于摘自其他地方的编程经验,我们将注明出处及作者) 1、单击表单工具栏中的OLE按钮,将出现插入对象窗口,单击插入控件单选按钮,选择Microsoft Progressbar控件。 2、设定该控件的最大值。在该控件的属性窗口中输入max的值,这样当该控件的value的值在变大时,进度条会自动进行移动。 把金额由数字变成大写的小程序(对编写财务软件非常的有用)(注:对于摘自其他地方的编程经验,我们将注明出处及作者) 1、编写如下函数。该函数的返回值能够舍去数字之间的零,比较准确,符合会计准则,比较适合打印银行存单等。 PARA RMB SET TALK OFF XX=LTRIM(STR(RMB,11,2)) RMBLEN=LEN(XX) DX=零 C1=零壹贰叁肆伍陆柒捌玖 C2=分角 元拾佰仟万拾佰仟 *---------------- DO WHILE RMB>0.AND.RMBLEN>=1 DB=SUBS(XX,LEN(XX)-RMBLEN+1,1) IF DB#. DX1=SUBS(C1,VAL(DB)*2+1,2) DX2=TRIM(SUBS(C2,(RMBLEN-1)*2+1,2)) IF DX1=零 HZ=SUBS(DX,LEN(DX)-1,2) IF HZ=零 IF DX2=万.OR.DX2=元 DX=SUBS(DX,1,LEN(DX)-2)+DX2 ENDI ELSE IF DX2=万.OR.DX2=元 DX=SUBS(DX,1,LEN(DX))+DX2 ELSE DX=DX+DX1 ENDIF ENDIF ELSE DX=DX+DX1+DX2 ENDI ENDIF RMBLEN=RMBLEN-1 ENDDO IF SUBS(DX,1,2)=元 DX=SUBS(DX,3,LEN(DX)-2) ENDI IF SUBS(DX,1,2)=零 DX=+SUBS(DX,3,LEN(DX)-2) ENDI IF SUBS(DX,LEN(DX)-1,2)=零 DX=SUBS(DX,1,LEN(DX)-2)+整 ENDI SET TALK ON RETU DX 2、编写如下函数。该函数的返回值比较适合于一些单据的填空式打印,如增值税发票等。 para rmb nDzs=strt(allt(str(rmb,15,2)),".","") &&把小数点去掉 hzdx="零壹贰叁肆伍陆柒捌玖" nDW="分角元拾佰仟万拾佰仟亿拾佰仟" rmbdx="" nCd=len(nDzs) for i=1 to len(nDzs) NumS=substrc(hzdx,int(val(subs(nDzs,i,1))+1),1) && 数字转换 nDWs=substrc(nDW,nCd,1) &&----------要单位,如果不要单位可将此句改为:nDWs=spac(2) rmbdx=rmbdx+NumS+nDwS nCd=nCd-1 endfor retu rmbdx Visual FoxPro FAQ(注:对于摘自其他地方的编程经验,我们将注明出处及作者) Visual Foxpro FAQ译作稿 |