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