免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
編程入門網(wǎng)
---- 數(shù)據(jù)庫管理系統(tǒng)是目前在企事業(yè)、 商業(yè)單位中應(yīng)用最廣泛的一類軟件, 在國內(nèi)以 VFP最具代表性。 這里把筆者及同行在工作中所得到的一點經(jīng)驗進(jìn)行了整理,希望能對大家有所幫助。
一.INSERT命令與APPEND命令
---- 這兩個命令的基本作用都是往一個已經(jīng)打開的數(shù)據(jù)庫中添加新的記錄,不同點在于: INSERT命令可以在數(shù)據(jù)庫的任意位置插入新的記錄,而APPEND命令只能在數(shù)據(jù)庫的尾部添加新的記錄。本人在編程中,有一次為了保證一個數(shù)據(jù)庫記錄的順序按一定的要求排列,從而使用了INSERT命令在指定的位置插入新的記錄。然而在程序運行過程中,卻發(fā)現(xiàn)新的記錄總是被添加在數(shù)據(jù)庫的尾部。經(jīng)過一番對程序的仔細(xì)檢查,本人想起為了實現(xiàn)對數(shù)據(jù)記錄的快速檢索,曾為該數(shù)據(jù)庫建立了一個結(jié)構(gòu)復(fù)合索引文件,此索引文件總是隨著該數(shù)據(jù)庫的打開而自動打開,而在使用數(shù)據(jù)庫文件時,如果與其相聯(lián)的索引文件同時打開了,則INSERT命令與APPEND命令的作用是相同的。解決的辦法是:在使用該數(shù)據(jù)庫時,如果不苛求數(shù)據(jù)庫記錄的物理順序的話,可以用SET ORDER TO〈索引名〉來控制數(shù)據(jù)庫記錄的邏輯順序。否則,可以用SORT命令對其進(jìn)行物理位置排序。當(dāng)然,后者的情況比較少見,且費時費力。
二.實現(xiàn)組合框的記憶選擇
---- 在編制管理系統(tǒng)時,往往一個相同的系統(tǒng)要由好幾個部門使用,這樣,在進(jìn)入系統(tǒng)時,就要選擇不同部門的名稱。作為一個使用者,我們希望選擇第一次,以后每次進(jìn)入就不用再選擇。以下方法將實現(xiàn)此功能。
---- 新建一個表單,在上面創(chuàng)建一個“組合框”對象,對表單做如下設(shè)置:
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
三.聲音的播放
---- 在程序的編制過程中, 適當(dāng)?shù)厥褂寐曇?,可達(dá)到意想不到的效果,下面是在VFP中加入聲音的幾種方法:
---- 1. 使用set bell to 命令
---- 用set bell to 命令可以直接播放聲音,此方法主要適用于給按鈕加上聲音效果,比如有一個“開始”按鈕,要在按下它時能發(fā)聲,可在其CLICK EVENT中加入如下代碼:
wav_name='sound.wav”
set bell to wav_name,0
chr(7)
其中sound.wav為要播放的聲音文件。
---- 2. 調(diào)用mplayer2.exe來播放
---- Mplayer2.exe是Windows自帶的媒體播放器,在VFP中,可使用如下命令來播放聲音文件:
Run /n7 c:\progra~1\micros~2\mplayer2.exe'sound.wav'
---- 若想在啟動時播放聲音,可將該語句放入表單的init事件中。這種方法適宜于用來播放背景音樂,其缺點是播放時,Windows工具欄上有一個最小化后的媒體播放器。
---- 3. 使用OLE控件在表單中添加一個OLE對象可按如下順序:
---- ① 新建一個表單,選中表單控件工具欄的OLEcontrol;
---- ②在表單上按下鼠標(biāo)左鍵, 建立OLE對象,在出現(xiàn)的對話框中選擇聲音對象,選擇以“create form file”方式插入;
---- ③選擇要插入的聲音文件,確定退出;
---- ④用Doverb方法來執(zhí)行,其中Doverb(0)用來播放,Doverb(1)用來編輯。例如要在表單啟動時同時啟動聲音,可在表單的init事件中加入如下語句:
thisform.olecontrol1.doverb(0)
---- 4. 使用Microsoft Media Player控件
---- 在一個表單中加入聲音的順序如下:
---- ①在VFP中,選擇“工具”選單的“選項”;
---- ②在出現(xiàn)的界面中選擇“控件” , 選中“ActiveX控件” ,在選定對話框中選擇 “Microsoft media player”,確定退出該界面;
---- ③在工具欄中選擇“ActiveX控件” ,選中“Microsoft media player”控件,在表單上單擊鼠標(biāo)左鍵,這樣就創(chuàng)建了“Microsoft media player”對象;
---- ④以下語句可實現(xiàn)聲音的播放:
thisform.olecontrol1.open(″sound.wav″)
playcount 可用來控制播放的次數(shù);
---- 如想實現(xiàn)重復(fù)播放,可在EndOf Stream Event中加入語句:this.play。
---- 這種方法也可以用來播放.avi、.mpeg等文件,只需把上面的“sound.wav”文件改為相應(yīng)類型的文件即可。
---- 5. 使用MCI
---- MCI(media control interface: 媒體控制接口)是多媒體設(shè)備和文件的標(biāo)準(zhǔn)接口。多媒體應(yīng)用程序可以利用MCI控制各種各樣的多媒體設(shè)備和文件。
---- 下面通過一個例子說明如何用MCI實現(xiàn)對音頻的控制:
---- ①建立一個表單Form1,對表單作如下設(shè)置:
Form1.load:
&&聲明MCISendString命令。
Form1.Destroy:
DECLARE LONG mciSendString IN
C:\WINDOWS\SYSTEM\WINMM.DLL STRING
sCom,STRING sReturnString,LONG lReturnLength,LONG lpWnd
DECLARE LONG mciExecute IN C:\WINDOWS\SYSTEM\
WINMM.DLL STRING sCommand
Form1.Destory:
Clear dlls
&&清除聲明的dll函數(shù);
---- ②新建四個按扭,其caption值分別為:“打開”,“播放”,“停止”,“關(guān)閉”,分別在各按扭的click事件中加入以下代碼:
thisform.open.click:
mciexecute('open c:\mywave\toolbird.wav alias cc')
thiform.play.click:
buffer=space(100)
=mcisendstring('play cc',@buffer,80,0)
thisform.stop.click:
buffer=space(100)
=mcisendstring('stop cc',@buffer,80,0)
thisform.close.click:
buffer=space(100)
=mciSendString('close cc',@Buffer,80,0)
四.工具條的制作
---- 工具條在Windows應(yīng)用系統(tǒng)中使用很廣泛,在VFP中也使用了很多工具條,如常用工具欄、表單控件、報表控件等。在VFP應(yīng)用系統(tǒng)中有兩種實現(xiàn)工具條使用的方法。其一,如果你不脫離VFP系統(tǒng)環(huán)境(應(yīng)用程序擴(kuò)展名為APP) ,可通過定制工具欄或“object. show” 指令,來使用VFP系統(tǒng)提供的各種工具欄。其二,當(dāng)你把應(yīng)用程序編譯成可執(zhí)行程序(EXE) 后,上述方法和命令會失效,因此需要通過程序來實現(xiàn)工具條的使用。下面是本人制作和顯示一常用工具欄的過程。
---- (一)、 建立類庫
使用類設(shè)計器或“Create class'命令創(chuàng)建一個新類。設(shè)置類名為“常用工具欄”,派生于“Toolbar”,取類庫名為Appclass。
從表單控件工具欄添加各命令按鈕到程序窗口,中間可用分隔符按鈕分開。
設(shè)置各命令按鈕相應(yīng)的Picture(圖形)及ToolTipText(提示)屬性。
設(shè)置各命令按鈕被觸發(fā)的事件程序:
[新建]Click Event: create
[打開] Click Event: use getfile('dbf')
[保存] Click Event: 略
[打印] Click Event: 略
[打印預(yù)覽] Click Event: 略
[剪切] Click Event: sys(1500,'—med—cut','—medit')
[復(fù)制] Click Event: sys(1500,'—med—copy','—medit')
[粘貼] Click Event: sys(1500,'—med—paste','—medit')
[撤消[Click Event: sys(1500,'—med—undo','—medit')
[重做] Click Event: sys(1500,'—med—redo','—medit')
[幫助] Click Event: sys(1500,'—mst—help','—msystem')
---- (二)、 顯示工具條
---- 在主程序或選單常規(guī)選項內(nèi)添加如下程序:
set classlib to appclass
toolbars = CREATEOBJECT(′appclass.常用工具欄′)
toolbars.show
toolbars.dock(0)
---- 在應(yīng)用中有時為了使窗口顯示更多的內(nèi)容,需關(guān)閉或隱藏工具欄,這時可通過指令 [Object.Show]、[Object.hide]來顯示和隱藏(可在選單欄通過程序控制)。同時工具欄可以浮動在窗口中,也可以停放在應(yīng)用系統(tǒng)主窗口的上部、下部或兩邊。停放工具欄位置命令是:ToolBar.Dock[nLocation[,X,Y]]。根據(jù)nLocation參數(shù)確定工具欄位置,其中[- 1]為不停放工具欄(浮動);[0]在主窗口的頂部停放工具欄;[1]在主窗口的左邊停放工具欄;[2]在主窗口的右邊停放工具欄;[3]在主窗口的底部停放工具欄;X, Y指定工具欄停放位置的水平坐標(biāo)和垂直坐標(biāo)。
---- 設(shè)計圖如圖所示(供參考)。(見T01.jpg)
五.“飛播字幕”的制作
創(chuàng)建一個新類, 名稱為FlyString,選擇派生于容器類(container),并存放于FlyString.vcx文件中。
將FlyString的大小調(diào)整為120×20大小,并設(shè)置SpecialEffect屬性為“凹下”。
新建屬性cOldFlyText, 其初始值為空,此屬性主要用于定時器的Timer事件,用戶不需設(shè)置,也不用改動,在過程中會自動填入。
新建屬性cFlyTexy, 其初始值為空,也可輸入一些初始化信息,比如:“歡迎您使用本程序”,則當(dāng)建立一新對象后,默認(rèn)的將是此信息,使用者可將其改為所要顯示的具體信息。
新建屬性nCurPos,其初始值為1,用于指示當(dāng)前顯示到第幾個字符。
在FlyString上放置一個定時器控制Timer1, 將其屬性Interval設(shè)置為700,以取得較好的顯示結(jié)果,如果其值太小,則顯示過快,用戶可根據(jù)需要自行設(shè)置。
在Timer1的過程Timer中添加代碼(代碼在可視對象內(nèi)的右側(cè))。
---- 這個控制的效果是讓字幕從左向右飛行,從右向左飛行的原理與此類似,讀者可參考自行編制。
六.巧用Grid對象
---- 我們在用VFP設(shè)計一個應(yīng)用系統(tǒng)時, 信息的瀏覽是其中相當(dāng)重要的一個功能,通常其實現(xiàn)方法均采用Grid對象來顯示數(shù)據(jù)信息。但在使用過程中也存在一些不足,就是當(dāng)使用者在記錄之間移動時,只有獲得焦點的那條記錄的某一字段以不同于Grid背景的顏色顯示,給人一種非專業(yè)的軟件制作的感覺,如果不用Grid對象,就需要編制復(fù)雜的過程去實現(xiàn)這一功能。
---- 其實,利用Grid對象,我們完全可以實現(xiàn)當(dāng)數(shù)據(jù)記錄移動時,整條記錄均用同一種顏色突出顯示,即當(dāng)數(shù)據(jù)記錄移動時,用顏色動態(tài)變化顯示相對光標(biāo)所在的位置。筆者在工作就成功地運用了這一方法,從而使整個系統(tǒng)的信息瀏覽功能大為增色,顯示了與專業(yè)軟件同樣的魅力。
---- 首先定義一個Grid對象, 并設(shè)置好其屬性,然后在其AfterRowColChange事件過程中寫下如下的內(nèi)容:
LPARAMETERS nColIndex
this.setall(″dynamicbackcolor″,″
iif(this.activerow〈〉recn(),rgb(255,
255,255),rgb(0,0,255))″,″column″)
---- 這樣一來, 就能達(dá)到在數(shù)據(jù)記錄移動時,在相對的Row顯示動態(tài)顏色變化。在上面的設(shè)計中首先使用了SetAll() 方法設(shè)定Grid中的Column層次的 DynamicBackColor(動態(tài)背景顏色屬性),然后在第二個參數(shù)中使用了Grid 對象的ActiveRow反映相對的行數(shù),若不等于記錄編號時,則通過 RGB(255,255,255) 送出白色背景,若相對行等于記錄編號時,則通過 RGB(0,0,255)送出綠色背景色(讀者可根據(jù)個人愛好自行設(shè)定)。
---- 另外,還要提醒讀者有兩點需要特別注意:
在AfterRowColChange事件過程中一定要使用DynamicBackColor屬性, 而不能用 BackColor屬性,因為這樣會將所有的數(shù)據(jù)記錄變?yōu)樵O(shè)定的顏色。
因為使用了ActiveRow屬性與RECN0()函數(shù)配合使用,因此請不要在所顯示的記錄中設(shè)定主索引,因為ActiveRow屬性不會自動配合索引值中的記錄編號(若設(shè)定主索引,則執(zhí)行之后將從當(dāng)前記錄開始直至第一條記錄均為設(shè)定的特顯顏色)。
七.改進(jìn)VFP的searchclass.vcx
---- 我們都知道利用VFP提供的WIZARDS類庫中的searchform.vcx和searchclass.vcx可 以創(chuàng)建一個通用查詢表單。這個查詢非常通用,操作界面也非常簡單明了。但是,此表單有一個缺憾,就是此表單的字段對話框就只能顯示字段名,如果數(shù)據(jù)表的字段名為英文時,顯示的字段名對操作人員而言就顯的不夠清楚。我們一般在設(shè)計數(shù)據(jù)庫時給每個字段加以中文標(biāo)題,用于對字段名的詳細(xì)說明,就像用BROW命令時,就可以用字段標(biāo)題代替字段名一樣, 我們也可以通過對searchclass.vcx的修改使其用字段標(biāo)題代替字段名顯示,這樣就使得整個界面非常友好。
---- 打開WIZARDS類庫,選擇searchclass.vcx。
---- (一)、修改cbofield1的init事件
---- 在下列語句
FOR m.i = FCOUNT() TO 1 STEP -1
IF INLIST(aWizFList[m.i,2],'G','M','U') &&Memo field
=ADEL(aWizFList,m.i)
DIMENSION aWizFList[MAX(1,ALEN
(aWizFList,1)-1),NUM_AFIELDS]
ENDIF
ENDFOR
后加上以下程序段:
*獲取當(dāng)前的數(shù)據(jù)表名
tname=alias()
*獲取數(shù)據(jù)庫名
dname=cursorgetprop('database')
set database to (dname)
*獲取字段標(biāo)題
for m.i=1 to alen(awizflist,1)
fname=tname+′.′+awizflist[m.i,1]
*將字段名保存
awizflist[m.i,16]=awizflist[m.i,1]
if !empty(dname)
fcaption=dbgetprop(fname,′field′,′caption′)
*用字段標(biāo)題代替字段名
awizflist[m.i,1]=iif(!empty
(fcaption),fcaption,awizflist[m.i,1])
endif
endfor
THIS.RowSourceType = 5
THIS.RowSource = 'aWizFList'
THIS.VALUE = THIS.LIST[1,1]
將原最后一句THIS.VALUE=THIS.LIST[1]刪除
---- (二)、修改cbofield2的init 事件
THIS.RowSourceType = 5
THIS.RowSource = 'aWizFList'
THIS.VALUE = THIS.LIST[1,1]
---- (三)、修改searchitem方法程序
---- 在語句m.cFldName = ALLTRIM(m.oField.Value)后加上以下程序段:
*查找對應(yīng)顯示標(biāo)題的字段名
for m.i=1 to alen(aWizflist,1)
if m.cfldname=alltrim(aWizflist[m.i,1])
*用字段名代替字段標(biāo)題
m.cfldname=alltrim(aWizflist[m.i,16])
endif
endfor
---- 這樣通過對以上二個字段組合框的init事件和searchclass方法程序的修改就可以完成在字段組合框顯示字段標(biāo)題,而非字段名,只要我們在數(shù)據(jù)表中設(shè)置好每個字段的標(biāo)題, 就可以在字段組合框中顯示運用。其實WIZARDS類庫中類都可根據(jù)我們的實際需要進(jìn)行改進(jìn),在程序中直接引用,這樣就減少了我們重新設(shè)計類的麻煩。
八.制作影視字幕
---- 在影視劇中,我們經(jīng)常見到這樣的字幕效果:在黑色的背景畫面下,紅色(或白色)文字漸漸顯現(xiàn)出來,然后又漸漸消失在背景中。要實現(xiàn)這個效果并不難,今天我們就用中文版Visual FoxPro 3.0的表單來模仿一下這個文字漸入漸出的動畫過程。
---- (一)、添加控件,制作表單
---- 1.在新建的空白表單中添加一個“標(biāo)簽”控件并選中它,然后在其對應(yīng)的“屬性” 窗口中依次進(jìn)行如下設(shè)置:
AutoSize .T.
BackStyle 透明
Caption 漸入漸出效果演示
FontBold .T.
FontName 幼圓
FontSize 18
FontUnderline .T.
ForeColor 0,0,0
---- 其它沒有提及的設(shè)置保留默認(rèn)值,以下同此。
---- 2.在表單中添加一個“命令按鈕” 控件并選中它,然后在其對應(yīng)的“屬性”窗口中依次進(jìn)行如下設(shè)置:
Caption 演示開始
FontName 仿宋_GB2312
FontSize 14
Height 30
Width 217
---- 3.在表單中添加一個“計時器”控件 ,它可以放在表單中的任何位置,表單運行時是不可見的。選中它,然后在其對應(yīng)的“屬性”窗口中進(jìn)行如下設(shè)置:
Enabled .F.
Interval 100(ms)
---- 經(jīng)過上面的步驟,再對控件的位置做些調(diào)整后,即得到如圖(見t02.jpg文件) 所示的表單。
---- (二)、為控件添加代碼
---- 1進(jìn)入“演示開始”(Command1)按鈕的“Click”事件代碼窗,輸入以下代碼:
if thisform.timer1.enabled=. F.
thisform.timer1.enabled=. T.
endif
---- 用鼠標(biāo)單擊該按鈕后,計時器開始運行,并啟動Timer事件。
---- 2.進(jìn)入“計時器”的“Timer”事件代碼窗,輸入以下代碼:
i=i+10
if i>=255*2
thisform.timer1.enabled=. F.
i=0
endif
if i>=255
thisform.label1.forecolor=RGB (255*2- i, 0,0)
else
thisform.label1.forecolor=RGB (i, 0,0)
endif
---- Timer事件的作用是, 當(dāng)計時器開始運行時(enabled值為.T.),就以Interval所規(guī)定的值為時間間隔不斷運行Timer中的代碼,直到計時器的enabled值為.F.為止。
---- RGB(red,green,blue) 函數(shù)通過其中紅、綠、藍(lán)三個參數(shù)的值(0~255)的不同組合可得到不同顏色。上面代碼的作用即是通過逐漸改變標(biāo)簽(Lable1)中文字“淡入淡出效果演示”的顏色,使其從黑色(0,0,0)變?yōu)榧t色(255,0,0),再從紅色變回黑色,因為前面將標(biāo)簽背景已設(shè)為透明,即與表單的顏色相同,所以當(dāng)表單的顏色也為黑色時,就實現(xiàn)了文字的漸入漸出效果。
---- 具體實現(xiàn)的代碼很簡單:
---- (1) 當(dāng)i>255*2,表示文字已經(jīng)過了由黑變紅再返回黑色的過程,于是停止定時器運行。
---- (2)當(dāng)i>255,文字處于由紅轉(zhuǎn)黑的漸隱過程,此時紅色值255*2-i由255逐漸減為0。
---- (3)當(dāng)i<255,文字處于由黑轉(zhuǎn)紅的漸現(xiàn)過程,此時紅色值i由0逐漸增至255。>
---- 要注意的是, 如果變量i每次循環(huán)的增量和計時器中Interval的值設(shè)置不當(dāng),會出現(xiàn)文字一現(xiàn)即逝或半天顯不出來的情況。
---- 3.在表單空白處右擊鼠標(biāo)進(jìn)入“Form1” 的“Activate”事件代碼窗,為在計時器中使用的變量i進(jìn)行定義和初始化:
Public i
i=0
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
第八章 表單設(shè)計
表單及常用控件小結(jié)
看實例學(xué)VFP:用sql命令修改表結(jié)構(gòu)
常用的表單控件
計算機(jī)vfp二級考試筆試知識點
Vfp中Grid的使用技巧
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服