日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

vfp的編程知識(shí)<一>

 翠竹齋 2011-01-04
l        如何給表單填加背景圖片?

&Oslash;        不要直接用表單的picture來填加背景圖片,圖片的大小不可控制。

&Oslash;        解決辦法:用圖像控件:image, 來顯示背景圖片(縮放方式為:變比填充),并在表單的activate事件中用代碼方式對(duì)image 控件的位置(top=0、 left=0) 和大?。╤eight、width)屬性做適當(dāng)?shù)脑O(shè)置,讓image 控件的大小等于表單的大小。

&Oslash;        若想實(shí)現(xiàn)表單的尺寸大小改變時(shí),背景圖片同步改變大小,請(qǐng)?jiān)诒韱蔚膔esize事件中做上述同樣的代碼設(shè)置即可。

l        為什么回不到設(shè)計(jì)狀態(tài)?

&Oslash;        程序掛起了,參看教材12章:程序的調(diào)試部分---掛起suspend命令。

&Oslash;        解決辦法:在命令窗口中輸入命令:cancel回車;或者單擊“程序”菜單中的“取消”命令。

l        怎樣快速找到出錯(cuò)的命令行代碼?

&Oslash;        出錯(cuò)時(shí),點(diǎn)“掛起”來打開調(diào)試器,看到出錯(cuò)的行,找到原因;

&Oslash;        在調(diào)試器中單擊,“跳出”工具按鈕,來回到錯(cuò)誤狀態(tài);

&Oslash;        單擊“取消”按鈕,回到設(shè)計(jì)狀態(tài)修改錯(cuò)誤代碼。

l        為什么數(shù)據(jù)類型不匹配?

&Oslash;        請(qǐng)注意表中字段的數(shù)據(jù)類型與你寫的表達(dá)式的數(shù)據(jù)類型一致,數(shù)據(jù)類型不一致不能運(yùn)算。如表達(dá)式:123>”1000”

&Oslash;        解決辦法:用轉(zhuǎn)換函數(shù)(推薦用前者)或者改表中的字段類型。

l        如何在一個(gè)頂層表單中調(diào)用一般菜單?

1、建立一般菜單

&Oslash;        文件/新建/菜單-----存成菜單定義文件.MNX

&Oslash;        顯示/常規(guī)選項(xiàng)/選中“頂層表單”  (告訴系統(tǒng)將來這個(gè)菜單要在一個(gè)頂層表單中調(diào)用)

&Oslash;        生成.MPR菜單程序文件

2、在一個(gè)“頂層表單”的表單文件中調(diào)用上面的菜單

&Oslash;        將表單設(shè)置為頂層表單:將表單的showwindow設(shè)置為2。

&Oslash;        頂層表單的init事件代碼如下:DO xx.MPR WITH THIS, .T.

l        如何在一個(gè)表單中調(diào)用快捷菜單?

&Oslash;        新建/菜單/快捷菜單(同一般菜單)

&Oslash;        保存文件MNX-----生成文件MPR

&Oslash;        在表單(控件)的右擊事件(Rightclick)來調(diào)用,輸入代碼:Do  XX.mpr

l        如何書寫主程序?

**main.prg**

_screen.visible=.f.

do form  xx.scx

read events

quit

l        用VFP編寫管理系統(tǒng)的一般模式是什么?

主程序(main.prg)  調(diào)用  密碼驗(yàn)證表單(頂層表單)  調(diào)用  主控表單(頂層表單)  調(diào)用  菜單(xtcd.mpr)—

 調(diào)用  其他功能表單(showwindow屬性設(shè)置為1:在頂層表單中)

注:頂層表單:showwindow屬性設(shè)置為2:作為頂層表單

l        瀏覽功能表單的設(shè)計(jì)思路?

是一個(gè)數(shù)據(jù)表單,表單上可以有相應(yīng)的控件(從數(shù)據(jù)環(huán)境中直接拖入即可),要求控件只讀,還要有一些按鈕來移動(dòng)記錄指針。還可以增加簡單的查詢功能,來實(shí)現(xiàn)按查詢的條件來瀏覽表中的記錄信息。

注:若用到表格(grid)控件,請(qǐng)去掉表格控件的刪除列,即修改deletemark屬性:deletemark=.f.



l        查詢功能表單的設(shè)計(jì)思路?

&Oslash;        用set filter to實(shí)現(xiàn):

是 一個(gè)數(shù)據(jù)表單,表單上有相應(yīng)的表格(grid)控件,(表格控件要求只讀),用文本框來接收用戶的查詢關(guān)鍵字段的值,再用set filter to命令來對(duì)表格控件的數(shù)據(jù)源表進(jìn)行條件過濾,來模擬查詢的效果。若是多關(guān)鍵字查詢,請(qǐng)用選項(xiàng)按鈕組來讓用戶選擇要查詢的關(guān)鍵字類別,如:按姓名或按學(xué)號(hào) 等。

&Oslash;        用SQL語句Select實(shí)現(xiàn):

是一個(gè)數(shù)據(jù)表單,表單上有相應(yīng)的表格 (grid)控件,(表格控件要求只讀),用文本框來接收用戶的查詢條件,填加一個(gè)“查詢”按鈕,單擊該按鈕時(shí),執(zhí)行select查詢語句,查詢語句的結(jié) 果放到表格(grid)控件中顯示(該表格控件的數(shù)據(jù)源用代碼方式設(shè)置為:thisform.grid1.recordsourcetype=4,即 SQL說明;thisform.gird1.recordsource=“select * from 表 where 條件 into cursor temp”。)

注:若用到表格(grid)控件,請(qǐng)去掉表格控件的刪除列,即修改deletemark屬性:deletemark=.f.



l        打印功能表單的設(shè)計(jì)思路?

&Oslash;        先做有關(guān)數(shù)據(jù)表的報(bào)表格式文件(frx)。

&Oslash;        做一個(gè)表單,上有按鈕控件,單擊該按鈕,執(zhí)行預(yù)覽報(bào)表的命令:

report form xx.frx preview

&Oslash;        若想實(shí)現(xiàn)條件打印預(yù)覽,只需在上面的命令中加上for條件語句:

report form xx.frx preview for <條件>

l        修改功能表單的設(shè)計(jì)思路?

實(shí) 質(zhì)是一個(gè)數(shù)據(jù)表單,表單上有相應(yīng)的表格(grid)控件(表格控件要求只讀),或相應(yīng)的ole綁定控件(從數(shù)據(jù)環(huán)境中直接拖入表單中產(chǎn)生的控件,控件要求 只讀),還有“修改”按鈕,單擊該按鈕,去掉上述控件的只讀屬性,允許用戶來修改表單中顯示的記錄數(shù)據(jù)。還有一個(gè)“確定”按鈕,單擊該按鈕,設(shè)置相應(yīng)控件 的只讀屬性為真,不允許用戶修改數(shù)據(jù),表示數(shù)據(jù)修改結(jié)束。

注:若用到表格(grid)控件,請(qǐng)去掉表格控件的刪除列,即修改deletemark屬性:deletemark=.f.

l        刪除功能表單的設(shè)計(jì)思路?

&Oslash;        假刪除方法:建一個(gè)數(shù)據(jù)表單,表單上有相應(yīng)的表格(grid)控件(表格控件要求只讀)顯示數(shù)據(jù)表中的記錄,并且去掉表格(grid)控件的刪除列,即 修改deletemark屬性:deletemark=.f.;由用戶在表格中選擇一個(gè)要?jiǎng)h除的記錄,單擊“刪除”按鈕,給記錄加上刪除標(biāo)記,即邏輯刪除 記錄;然后執(zhí)行set deleted on 命令來屏蔽(不顯示)有刪除標(biāo)記的記錄,來模擬刪除的效果。最后,在“退出”按鈕中,執(zhí)行物理刪除命令:pack,來真正刪除表中的記錄。

注:表必須以獨(dú)占方式打開(可用命令:use 表 exclusive;也可在設(shè)置表單數(shù)據(jù)環(huán)境的屬性:exclusive=.t.),否則會(huì)刪除失敗。

l        刪除表單中的恢復(fù)刪除功能實(shí)現(xiàn)?

表單中增加一個(gè)接收“記錄號(hào)”的文本框和一個(gè)“恢復(fù)刪除”按扭,單擊該按鈕,首先不屏蔽(顯示)有刪除標(biāo)記的記錄,然后執(zhí)行recall命令來恢復(fù)相應(yīng)的記錄,最后再設(shè)置系統(tǒng)狀態(tài)為:屏蔽(不顯示)有刪除標(biāo)記的記錄。

l        增加記錄功能表單的設(shè)計(jì)思路?

方法1:是一個(gè)數(shù)據(jù)表單,表單上可以有相應(yīng)的控件(從數(shù)據(jù)環(huán)境中直接拖入即可),要求控件只讀。增加一個(gè)“增加記錄”按鈕,單擊該按鈕,實(shí)現(xiàn)在表的末尾增加一條空記錄,并去掉相應(yīng)字段的綁定控件只讀屬性,允許用戶來修改新記錄的內(nèi)容。

注:如果數(shù)據(jù)庫表中設(shè)置了主索引,上述方法會(huì)失敗。原因是主索引的關(guān)鍵字是不許為空的。解決辦法是:去掉表的主索引或者用SQL中的insert into 命令來實(shí)現(xiàn)。

方法2:建一個(gè)表單,表單上填加相應(yīng)的控件,來接收用戶輸入的相應(yīng)字段的值,然后用SQL中的insert into 命令來把新記錄的值追加到表中即可。

insert into 表名(字段1, 字段2..) values( 值1,值2…)

l        為什么我的程序編譯后一閃而過?

這 個(gè)問題有兩種可能性,第一種是程序執(zhí)行完成并退出,第二種是程序正在執(zhí)行,但界面被隱藏。對(duì)于第二種情況,可直接按"Ctrl- Alt-Del"鍵觀察到。造成這兩種情況的原因如下:我們先看下面的一段示例程序,假如下面的示例程序是項(xiàng)目的主程序,并且應(yīng)用項(xiàng)目 以VFP主窗口做為自己的主窗口。

*環(huán)境設(shè)置

Do Form myScreen &&啟動(dòng)封面表單 _

Screen.Show &&顯示VFP主窗口

Do myMenu.mpr &&安裝菜單系統(tǒng)

RETURN

為 達(dá)到在顯示啟動(dòng)封面之前不顯示VFP主窗口的目的,在Config.fpw中已寫Screen=off,當(dāng)程序執(zhí)行到Do Form myScreen這一句時(shí),如果表單myScreen的ShowWindows屬性被設(shè)為"在屏幕中",則不管是在 開發(fā)環(huán)境還是在編譯環(huán)境下,程序都將停下來,表單被顯示在_Screen中,而_Screen被隱藏了,因此表單跟著也被隱藏了,所以在屏幕上什么也看不 見。這就是第二種情況的產(chǎn)生原因。為了避免這種錯(cuò)誤的出現(xiàn),必須將myScreen表單的ShowWindow的屬性設(shè)為"做為頂層表 單",這樣就可使在_Screen被隱藏的情況下,myScreen仍然可以被顯示出來。但請(qǐng)注意,在此情況下,Do Form myScreen這句話執(zhí)行后,程序并不能停下來,而是順序地執(zhí)行下去,一直到執(zhí)行到RETURN后程序退出,這也就是著名的"一閃而 過"現(xiàn)象了。為此必須在程序中包含事件處理命令Read Events使程序停下來,如下:

*環(huán)境設(shè)置

Do Form myScreen &&啟動(dòng)封面表單

Read Events &&開始事件處理:使啟動(dòng)封面停下來

_ Screen.Show &&顯示VFP主窗口

Do myMenu.mpr &&安裝菜單系統(tǒng)

Read Events &&開始事件處理

RETURN

程 序執(zhí)行Do Form myScreen后,將啟動(dòng)封面顯示在屏幕上,然后向下執(zhí)行到Read Events開始事件處理,此時(shí)啟動(dòng)封面表單必須由用戶關(guān)閉或由表單事件關(guān)閉,否則程序?qū)⒁恢蓖T赗ead Events這一句上。不管myScreen表單由誰關(guān)閉,在關(guān)閉代碼中必須包含一句Clear Events的停止事件處理命令,以便開始執(zhí)行Read Events的下一句指令,順序執(zhí)行完成_Screen.Show及Do myMenu.mpr后,用戶的主界面就建立完成,同理,此處還需要一個(gè)事件處理命令讓程序再次停下來,開始菜單系統(tǒng)的命令處理,一般情況,菜單系統(tǒng)中將 包含的"退出"項(xiàng),其中有"Clear Events"清除事件處理代碼,從而停止第二條"Read Events"事件處理命令,退出整個(gè)系統(tǒng)。

以上經(jīng)驗(yàn)恐有謬誤,敬請(qǐng)批評(píng)!

最后,VFP是個(gè)所謂"讓我歡喜讓我憂"的東東,有時(shí)百依百順,有時(shí)莫名其妙。未曾戀愛過的男性最適合習(xí)之,以便為今后的戀愛打下堅(jiān)實(shí)的心理基礎(chǔ)。

在梅子那邊看到經(jīng)典問題里面有這個(gè)題目,話說了一堆,卻沒說到點(diǎn)子上。

說實(shí)話,以前也從來沒看到過說到點(diǎn)子上的文章。大多數(shù)人也就是知道在主程序里面加了Read events 后能夠避免一閃而過的問題而已,到底是什么原理還是不清除。

其實(shí)很簡單,主程序是個(gè)什么文件?它就是一個(gè)PRG。

普通的PRG文件執(zhí)行情況是怎么樣的?從頭到尾,每一行代碼執(zhí)行下去,然后立即退出。

OK,現(xiàn)在,再想一想,我們想要做的,是怎么樣一個(gè)程序?是一個(gè)會(huì)出現(xiàn)菜單、主窗口,等待我們選擇某個(gè)功能去執(zhí)行的程序。也就是說,程序應(yīng)該打開菜單、主窗口以后就中途停下來,等待我們操作的程序。

好,現(xiàn)在再想一下,怎么在PRG中間的某個(gè)地方讓程序停下來進(jìn)入那么一種狀態(tài)?Wait window

可以做到,不過一按鼠標(biāo)馬上就又繼續(xù)執(zhí)行了,要讓程序一直等著,即使進(jìn)行了幾個(gè)操作也不會(huì)退出,就只有用Read events了。

隨便建一個(gè)PRG,不用把它設(shè)置成主程序,只要這個(gè)PRG中間有Read events,那么程序就會(huì)停下來等著,MSDN里面的許多示例就是這么干的。

現(xiàn)在,一閃而過的問題應(yīng)該清楚了吧?你的菜單是打開了、主窗口是打開了,但是,因?yàn)闆]有進(jìn)入這個(gè)等待狀態(tài),所以,程序馬上繼續(xù)執(zhí)行到末尾然后退出,菜單、主窗口都馬上又被關(guān)閉了。這些,都是一瞬間就執(zhí)行完的,結(jié)果,看起來就是一閃而過。

再 看看Clear events,它的意思,就是從這種等待狀態(tài)中退出。許多人把 Clear events 誤會(huì)成一個(gè)退出程序的命令。不對(duì),Clear events只是退出這種等待狀態(tài)而已,如果你在它的后面再加上一個(gè) Read events,那么程序就又會(huì)進(jìn)入一種等待狀態(tài)而不會(huì)結(jié)束。由于Clear events并不是立即退出程序,因此,在Clear events 后面的代碼還是會(huì)繼續(xù)執(zhí)行,比如我們用來關(guān)閉數(shù)據(jù)庫、恢復(fù)系統(tǒng)環(huán)境設(shè)置等等的命令之類的,都可以放在Clear events后面去執(zhí)行。

這個(gè)解釋,應(yīng)該是【一閃而過】和【Read events】的最終解釋了吧!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多