l 如何給表單填加背景圖片?
Ø 不要直接用表單的picture來(lái)填加背景圖片,圖片的大小不可控制。
Ø
解決辦法:用圖像控件:image,
來(lái)顯示背景圖片(縮放方式為:變比填充),并在表單的activate事件中用代碼方式對image 控件的位置(top=0、 left=0)
和大?。╤eight、width)屬性做適當的設置,讓image 控件的大小等于表單的大小。
Ø 若想實(shí)現表單的尺寸大小改變時(shí),背景圖片同步改變大小,請在表單的resize事件中做上述同樣的代碼設置即可。
l 為什么回不到設計狀態(tài)?
Ø 程序掛起了,參看教材12章:程序的調試部分---掛起suspend命令。
Ø 解決辦法:在命令窗口中輸入命令:cancel回車(chē);或者單擊“程序”菜單中的“取消”命令。
l 怎樣快速找到出錯的命令行代碼?
Ø 出錯時(shí),點(diǎn)“掛起”來(lái)打開(kāi)調試器,看到出錯的行,找到原因;
Ø 在調試器中單擊,“跳出”工具按鈕,來(lái)回到錯誤狀態(tài);
Ø 單擊“取消”按鈕,回到設計狀態(tài)修改錯誤代碼。
l 為什么數據類(lèi)型不匹配?
Ø 請注意表中字段的數據類(lèi)型與你寫(xiě)的表達式的數據類(lèi)型一致,數據類(lèi)型不一致不能運算。如表達式:123>”1000”
Ø 解決辦法:用轉換函數(推薦用前者)或者改表中的字段類(lèi)型。
l 如何在一個(gè)頂層表單中調用一般菜單?
1、建立一般菜單
Ø 文件/新建/菜單-----存成菜單定義文件.MNX
Ø 顯示/常規選項/選中“頂層表單” (告訴系統將來(lái)這個(gè)菜單要在一個(gè)頂層表單中調用)
Ø 生成.MPR菜單程序文件
2、在一個(gè)“頂層表單”的表單文件中調用上面的菜單
Ø 將表單設置為頂層表單:將表單的showwindow設置為2。
Ø 頂層表單的init事件代碼如下:DO xx.MPR WITH THIS, .T.
l 如何在一個(gè)表單中調用快捷菜單?
Ø 新建/菜單/快捷菜單(同一般菜單)
Ø 保存文件MNX-----生成文件MPR
Ø 在表單(控件)的右擊事件(Rightclick)來(lái)調用,輸入代碼:Do XX.mpr
l 如何書(shū)寫(xiě)主程序?
**main.prg**
_screen.visible=.f.
do form xx.scx
read events
quit
l 用VFP編寫(xiě)管理系統的一般模式是什么?
主程序(main.prg) 調用 密碼驗證表單(頂層表單) 調用 主控表單(頂層表單) 調用 菜單(xtcd.mpr)—
調用 其他功能表單(showwindow屬性設置為1:在頂層表單中)
注:頂層表單:showwindow屬性設置為2:作為頂層表單
l 瀏覽功能表單的設計思路?
是一個(gè)數據表單,表單上可以有相應的控件(從數據環(huán)境中直接拖入即可),要求控件只讀,還要有一些按鈕來(lái)移動(dòng)記錄指針。還可以增加簡(jiǎn)單的查詢(xún)功能,來(lái)實(shí)現按查詢(xún)的條件來(lái)瀏覽表中的記錄信息。
注:若用到表格(grid)控件,請去掉表格控件的刪除列,即修改deletemark屬性:deletemark=.f.
l 查詢(xún)功能表單的設計思路?
Ø 用set filter to實(shí)現:
是
一個(gè)數據表單,表單上有相應的表格(grid)控件,(表格控件要求只讀),用文本框來(lái)接收用戶(hù)的查詢(xún)關(guān)鍵字段的值,再用set filter
to命令來(lái)對表格控件的數據源表進(jìn)行條件過(guò)濾,來(lái)模擬查詢(xún)的效果。若是多關(guān)鍵字查詢(xún),請用選項按鈕組來(lái)讓用戶(hù)選擇要查詢(xún)的關(guān)鍵字類(lèi)別,如:按姓名或按學(xué)號
等。
Ø 用SQL語(yǔ)句Select實(shí)現:
是一個(gè)數據表單,表單上有相應的表格
(grid)控件,(表格控件要求只讀),用文本框來(lái)接收用戶(hù)的查詢(xún)條件,填加一個(gè)“查詢(xún)”按鈕,單擊該按鈕時(shí),執行select查詢(xún)語(yǔ)句,查詢(xún)語(yǔ)句的結
果放到表格(grid)控件中顯示(該表格控件的數據源用代碼方式設置為:thisform.grid1.recordsourcetype=4,即
SQL說(shuō)明;thisform.gird1.recordsource=“select * from 表 where 條件 into cursor
temp”。)
注:若用到表格(grid)控件,請去掉表格控件的刪除列,即修改deletemark屬性:deletemark=.f.
l 打印功能表單的設計思路?
Ø 先做有關(guān)數據表的報表格式文件(frx)。
Ø 做一個(gè)表單,上有按鈕控件,單擊該按鈕,執行預覽報表的命令:
report form xx.frx preview
Ø 若想實(shí)現條件打印預覽,只需在上面的命令中加上for條件語(yǔ)句:
report form xx.frx preview for <條件>
l 修改功能表單的設計思路?
實(shí)
質(zhì)是一個(gè)數據表單,表單上有相應的表格(grid)控件(表格控件要求只讀),或相應的ole綁定控件(從數據環(huán)境中直接拖入表單中產(chǎn)生的控件,控件要求
只讀),還有“修改”按鈕,單擊該按鈕,去掉上述控件的只讀屬性,允許用戶(hù)來(lái)修改表單中顯示的記錄數據。還有一個(gè)“確定”按鈕,單擊該按鈕,設置相應控件
的只讀屬性為真,不允許用戶(hù)修改數據,表示數據修改結束。
注:若用到表格(grid)控件,請去掉表格控件的刪除列,即修改deletemark屬性:deletemark=.f.
l 刪除功能表單的設計思路?
Ø
假刪除方法:建一個(gè)數據表單,表單上有相應的表格(grid)控件(表格控件要求只讀)顯示數據表中的記錄,并且去掉表格(grid)控件的刪除列,即
修改deletemark屬性:deletemark=.f.;由用戶(hù)在表格中選擇一個(gè)要刪除的記錄,單擊“刪除”按鈕,給記錄加上刪除標記,即邏輯刪除
記錄;然后執行set deleted on
命令來(lái)屏蔽(不顯示)有刪除標記的記錄,來(lái)模擬刪除的效果。最后,在“退出”按鈕中,執行物理刪除命令:pack,來(lái)真正刪除表中的記錄。
注:表必須以獨占方式打開(kāi)(可用命令:use 表 exclusive;也可在設置表單數據環(huán)境的屬性:exclusive=.t.),否則會(huì )刪除失敗。
l 刪除表單中的恢復刪除功能實(shí)現?
表單中增加一個(gè)接收“記錄號”的文本框和一個(gè)“恢復刪除”按扭,單擊該按鈕,首先不屏蔽(顯示)有刪除標記的記錄,然后執行recall命令來(lái)恢復相應的記錄,最后再設置系統狀態(tài)為:屏蔽(不顯示)有刪除標記的記錄。
l 增加記錄功能表單的設計思路?
方法1:是一個(gè)數據表單,表單上可以有相應的控件(從數據環(huán)境中直接拖入即可),要求控件只讀。增加一個(gè)“增加記錄”按鈕,單擊該按鈕,實(shí)現在表的末尾增加一條空記錄,并去掉相應字段的綁定控件只讀屬性,允許用戶(hù)來(lái)修改新記錄的內容。
注:如果數據庫表中設置了主索引,上述方法會(huì )失敗。原因是主索引的關(guān)鍵字是不許為空的。解決辦法是:去掉表的主索引或者用SQL中的insert into 命令來(lái)實(shí)現。
方法2:建一個(gè)表單,表單上填加相應的控件,來(lái)接收用戶(hù)輸入的相應字段的值,然后用SQL中的insert into 命令來(lái)把新記錄的值追加到表中即可。
insert into 表名(字段1, 字段2..) values( 值1,值2…)
l 為什么我的程序編譯后一閃而過(guò)?
這
個(gè)問(wèn)題有兩種可能性,第一種是程序執行完成并退出,第二種是程序正在執行,但界面被隱藏。對于第二種情況,可直接按"Ctrl-
Alt-Del"鍵觀(guān)察到。造成這兩種情況的原因如下:我們先看下面的一段示例程序,假如下面的示例程序是項目的主程序,并且應用項目
以VFP主窗口做為自己的主窗口。
*環(huán)境設置
Do Form myScreen &&啟動(dòng)封面表單 _
Screen.Show &&顯示VFP主窗口
Do myMenu.mpr &&安裝菜單系統
RETURN
為
達到在顯示啟動(dòng)封面之前不顯示VFP主窗口的目的,在Config.fpw中已寫(xiě)Screen=off,當程序執行到Do Form
myScreen這一句時(shí),如果表單myScreen的ShowWindows屬性被設為"在屏幕中",則不管是在
開(kāi)發(fā)環(huán)境還是在編譯環(huán)境下,程序都將停下來(lái),表單被顯示在_Screen中,而_Screen被隱藏了,因此表單跟著(zhù)也被隱藏了,所以在屏幕上什么也看不
見(jiàn)。這就是第二種情況的產(chǎn)生原因。為了避免這種錯誤的出現,必須將myScreen表單的ShowWindow的屬性設為"做為頂層表
單",這樣就可使在_Screen被隱藏的情況下,myScreen仍然可以被顯示出來(lái)。但請注意,在此情況下,Do Form
myScreen這句話(huà)執行后,程序并不能停下來(lái),而是順序地執行下去,一直到執行到RETURN后程序退出,這也就是著(zhù)名的"一閃而
過(guò)"現象了。為此必須在程序中包含事件處理命令Read Events使程序停下來(lái),如下:
*環(huán)境設置
Do Form myScreen &&啟動(dòng)封面表單
Read Events &&開(kāi)始事件處理:使啟動(dòng)封面停下來(lái)
_ Screen.Show &&顯示VFP主窗口
Do myMenu.mpr &&安裝菜單系統
Read Events &&開(kāi)始事件處理
RETURN
程
序執行Do Form myScreen后,將啟動(dòng)封面顯示在屏幕上,然后向下執行到Read
Events開(kāi)始事件處理,此時(shí)啟動(dòng)封面表單必須由用戶(hù)關(guān)閉或由表單事件關(guān)閉,否則程序將一直停在Read
Events這一句上。不管myScreen表單由誰(shuí)關(guān)閉,在關(guān)閉代碼中必須包含一句Clear
Events的停止事件處理命令,以便開(kāi)始執行Read Events的下一句指令,順序執行完成_Screen.Show及Do
myMenu.mpr后,用戶(hù)的主界面就建立完成,同理,此處還需要一個(gè)事件處理命令讓程序再次停下來(lái),開(kāi)始菜單系統的命令處理,一般情況,菜單系統中將
包含的"退出"項,其中有"Clear
Events"清除事件處理代碼,從而停止第二條"Read
Events"事件處理命令,退出整個(gè)系統。
以上經(jīng)驗恐有謬誤,敬請批評!
最后,VFP是個(gè)所謂"讓我歡喜讓我憂(yōu)"的東東,有時(shí)百依百順,有時(shí)莫名其妙。未曾戀愛(ài)過(guò)的男性最適合習之,以便為今后的戀愛(ài)打下堅實(shí)的心理基礎。
在梅子那邊看到經(jīng)典問(wèn)題里面有這個(gè)題目,話(huà)說(shuō)了一堆,卻沒(méi)說(shuō)到點(diǎn)子上。
說(shuō)實(shí)話(huà),以前也從來(lái)沒(méi)看到過(guò)說(shuō)到點(diǎn)子上的文章。大多數人也就是知道在主程序里面加了Read events 后能夠避免一閃而過(guò)的問(wèn)題而已,到底是什么原理還是不清除。
其實(shí)很簡(jiǎn)單,主程序是個(gè)什么文件?它就是一個(gè)PRG。
普通的PRG文件執行情況是怎么樣的?從頭到尾,每一行代碼執行下去,然后立即退出。
OK,現在,再想一想,我們想要做的,是怎么樣一個(gè)程序?是一個(gè)會(huì )出現菜單、主窗口,等待我們選擇某個(gè)功能去執行的程序。也就是說(shuō),程序應該打開(kāi)菜單、主窗口以后就中途停下來(lái),等待我們操作的程序。
好,現在再想一下,怎么在PRG中間的某個(gè)地方讓程序停下來(lái)進(jìn)入那么一種狀態(tài)?Wait window
可以做到,不過(guò)一按鼠標馬上就又繼續執行了,要讓程序一直等著(zhù),即使進(jìn)行了幾個(gè)操作也不會(huì )退出,就只有用Read events了。
隨便建一個(gè)PRG,不用把它設置成主程序,只要這個(gè)PRG中間有Read events,那么程序就會(huì )停下來(lái)等著(zhù),MSDN里面的許多示例就是這么干的。
現在,一閃而過(guò)的問(wèn)題應該清楚了吧?你的菜單是打開(kāi)了、主窗口是打開(kāi)了,但是,因為沒(méi)有進(jìn)入這個(gè)等待狀態(tài),所以,程序馬上繼續執行到末尾然后退出,菜單、主窗口都馬上又被關(guān)閉了。這些,都是一瞬間就執行完的,結果,看起來(lái)就是一閃而過(guò)。
再
看看Clear events,它的意思,就是從這種等待狀態(tài)中退出。許多人把 Clear events
誤會(huì )成一個(gè)退出程序的命令。不對,Clear events只是退出這種等待狀態(tài)而已,如果你在它的后面再加上一個(gè) Read
events,那么程序就又會(huì )進(jìn)入一種等待狀態(tài)而不會(huì )結束。由于Clear events并不是立即退出程序,因此,在Clear events
后面的代碼還是會(huì )繼續執行,比如我們用來(lái)關(guān)閉數據庫、恢復系統環(huán)境設置等等的命令之類(lèi)的,都可以放在Clear events后面去執行。
這個(gè)解釋?zhuān)瑧撌恰疽婚W而過(guò)】和【Read events】的最終解釋了吧!
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。