 |
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
jms7275
註冊時間: 2005-01-08 文章: 65
第 1 樓
|
發表於: 星期三 二月 02, 2005 2:58 pm 文章主題: login畫面與main主畫面,畫面更替的問題 |
|
|
先啟動form login,讓使用者輸入id,密碼,正確後,此form消失,主form main出現
login的activate事件有加入 read events
當輸入id,密碼後,按下確認鍵
若正確則
do form main with userdata.id, userdata.passwd, userdata.degree, userdata.last_passwdupdate
thisform.release
clear events
-------------------------------------------------------------------------------------
main的init事件中有設LPARAMETERS 四個接收參數,
再馬上把參數丟給四個public變數,關係每個分頁裡面物件的使用權限
main的activate事件亦有加入read events
登出按鍵裡,有加入clear events
兩個form的資料環境均有加入名為userdata的資料表
-------------------------------------------------------------------------------------
目前遇到的問題是,編譯為exe檔後,主畫面出現後,卻馬上又消失
如果把login裡面的clear events改成thisform.visible=.f.
就一切正常,但這樣不是等於form login並沒有釋放掉
如果把login裡面的clear events去掉,則form login無法釋放掉
兩個form同時存在
login windowsType是模式0,作為頂層表單
main windowsType是模式1,作為頂層表單
不知是哪邊的語法有錯誤,還是因為共用了同一個資料表userdata的關係
謝謝 |
|
回頂端 |
|
 |
bigear

註冊時間: 2004-12-19 文章: 162 來自: 網路的另一端
第 2 樓
|
發表於: 星期三 二月 02, 2005 7:50 pm 文章主題: |
|
|
do form main with userdata.id, userdata.passwd, userdata.degree, userdata.last_passwdupdate
thisform.release
clear events <==== 這行可以不要,就不會卡住了
代碼: |
解答
thisform.release
do form main with userdata.id, userdata.passwd, userdata.degree, userdata.last_passwdupdate
|
windowsType是模式0
才需要 clear events 用來卡住程式不要跑過頭
windowsType是模式1
是不需要 clear events 的
因為程式直接卡在 do form 那段
你可以試試看下面這段,就會知道差別在哪裡了
wait "1" wind
do form main with userdata.id, userdata.passwd, userdata.degree, userdata.last_passwdupdate
wait "2" wind
thisform.release
wait "3" wind
clear events
wait "4" wind _________________ 以上淺見,歡迎批評指教
________________________________________________
山不轉路轉,路不轉人轉,人不轉頭轉,頭不轉眼睛轉,眼睛不轉眼珠轉
眼珠再不轉就去睡覺,睡起來繼續轉 |
|
回頂端 |
|
 |
jms7275
註冊時間: 2005-01-08 文章: 65
第 3 樓
|
發表於: 星期四 二月 03, 2005 12:59 am 文章主題: |
|
|
bigear 寫到: | do form main with userdata.id, userdata.passwd, userdata.degree, userdata.last_passwdupdate
thisform.release
clear events <==== 這行可以不要,就不會卡住了
|
可是clear events不要的話
當form main跳出來的時候,form login只會最小化並沒有消失
還是說userdata那個table要先下指令關閉才行? |
|
回頂端 |
|
 |
bigear

註冊時間: 2004-12-19 文章: 162 來自: 網路的另一端
第 4 樓
|
發表於: 星期四 二月 03, 2005 2:59 am 文章主題: |
|
|
thisform.release 畫面只會最小化
從來都沒遇過耶
這下被考倒了.........尷尬
至於要不要先關掉 table
我想因該沒差
你那是畫面控制的問題和資料庫無關
也從沒遇過 table 沒關掉 form 不能 release _________________ 以上淺見,歡迎批評指教
________________________________________________
山不轉路轉,路不轉人轉,人不轉頭轉,頭不轉眼睛轉,眼睛不轉眼珠轉
眼珠再不轉就去睡覺,睡起來繼續轉 |
|
回頂端 |
|
 |
jms7275
註冊時間: 2005-01-08 文章: 65
第 5 樓
|
發表於: 星期四 二月 03, 2005 3:33 am 文章主題: |
|
|
bigear 寫到: | thisform.release 畫面只會最小化
從來都沒遇過耶
這下被考倒了.........尷尬
至於要不要先關掉 table
我想因該沒差
你那是畫面控制的問題和資料庫無關
也從沒遇過 table 沒關掉 form 不能 release |
弟也覺得很奇怪
是有加入config.fpw,讓.screen不要秀,但應該沒有影響吧
還是show window屬性也有關係呢? 我兩個form都設作為頂層表單
form login中的activate事件只有一行read events,
程式是由prg檔開始啟動,
cd h:\
open database system share
use userdata share
sele 0
use table1 share
Sele 0
use table2 share
sele 0
use table3 share
do form %s\login
compile成exe檔才會這樣,在專案中執行時,form login可以正常消失
是不是一定要設成form set方式才能解決?
順便請問,含入檔案是否只能含入一個(最後加入的),又若要取消含入檔案
是否只要把該檔案移出專案資料夾即可,還是專案裡也要做設定?
在config.fpw中宣告的
screen=off
systemmenu=off
若拿到啟始.prg裡是否也無妨,效果一樣?
但screen=off 在.prg裡似乎不是合法的語法
systemmenu=off 改成Set sysmenu off可以
又下面三行的意義或效果算一樣對嗎?
Application.visible=.f.
_SCREEN.Visible = .F.
set screen=off
下面這一行是指_screen的最大化對嗎?
zoom windows screen max |
|
回頂端 |
|
 |
bigear

註冊時間: 2004-12-19 文章: 162 來自: 網路的另一端
第 6 樓
|
發表於: 星期四 二月 03, 2005 4:46 pm 文章主題: |
|
|
我有個小小疑問
你有注意到我上面的 "解答" 嗎
有沒有把 thisform.release 放在 do form 前面呢
也就是說,先 release 在 do
因為我的 login 和 main 的做法和你差不多
沒道理我行你不行
如果還不行,我在貼上兩個 form 的相關設定
jms7275 寫到: |
順便請問,含入檔案是否只能含入一個(最後加入的),又若要取消含入檔案
是否只要把該檔案移出專案資料夾即可,還是專案裡也要做設定?
|
幾個觀念 (build 之後,執行程式時,以下 form 作解說範例)
第一:
專案裡面沒有 form 的檔案
在你 do form 的時候會出 error
第二:
當專案裡面的 form 有牽扯到其他相關檔案的時候
將會自動含入檔案無須操心
第三:
當第一和第二相衝突的時候,就必須自行含入檔案
舉個例子
有些人會將 do form 的指令寫在 "資料庫" 裡面
到時候再用巨集去執行,效果是一樣的
這個時候又沒有自行含入黨案,就會出現 "第一" 的問題了
那又為什麼不會執行 "第二" 的動作呢
因為 do form 這個指令是寫在 "資料庫" 裡面
寫在 form 裡面的只是 "巨集",又因為巨集所呈述的不是 "相關檔案"
所以就不會有 "第二" 的動作了
第四:
1.將檔案移出專案資料夾,專案裡面有相關檔案時
1-1. build 時就會出現 erroe
1-2.整個程式裡面完全用不到該檔案,當然就不會出現 error
2.檔案還在專案資料夾裡面,專案裡面沒有相關檔案時
這個時候,回圈跑回 "第二"
3.檔案還在專案資料夾裡面,專案裡面有相關檔案時
執行檔變胖
第五:
以上幾點,在 "某些狀況" 下,對圖檔無效
舉個例子
有些人會把 _SCREEN 的設定寫在 prg 裡面
_SCREEN.ICON="aaa.ico"
_SCREEN.PICTURE="aaa.jpg"
所以就必須將圖檔的檔案丟在客戶那裡了
第六:
prg 裡面的程式碼,在 build 的時候 vfp 不會 "閱讀"
也就是說 prg 的內容 vfp 連看都不看他一個字
所以就出現 "第五" ==> "第三" ==> "第一" 的情況了
第七:
以上所出現的主角 "有些人" 就是小弟 "我"
第八:
共勉之
只能說
只能給你釣竿,不能給你魚
若有觀念偏差,請不吝嗇的糾正 _________________ 以上淺見,歡迎批評指教
________________________________________________
山不轉路轉,路不轉人轉,人不轉頭轉,頭不轉眼睛轉,眼睛不轉眼珠轉
眼珠再不轉就去睡覺,睡起來繼續轉 |
|
回頂端 |
|
 |
jms7275
註冊時間: 2005-01-08 文章: 65
第 7 樓
|
發表於: 星期四 二月 03, 2005 5:22 pm 文章主題: |
|
|
bigear 寫到: | 我有個小小疑問
你有注意到我上面的 "解答" 嗎
有沒有把 thisform.release 放在 do form 前面呢
也就是說,先 release 在 do
因為我的 login 和 main 的做法和你差不多
沒道理我行你不行
如果還不行,我在貼上兩個 form 的相關設定
|
順序弟有注意到,還是不行
感覺兩個form是共生共滅
只要form login下clear events的話,兩個form均會消失(form main一閃即逝)
不下clear events的話,兩個form均會存在
是否有屬性會導致此種情況呢? |
|
回頂端 |
|
 |
jms7275
註冊時間: 2005-01-08 文章: 65
第 8 樓
|
發表於: 星期四 二月 03, 2005 11:13 pm 文章主題: |
|
|
問題解決了,真是怪怪
真正的原因其實也不太確定
感覺好像是資料環境的cursor錯亂掉了,讓form login關不起來
因為家裡,打工處兩邊跑,資料庫路徑變來變去,有時都是重新加入table
所以每次的cursor1,2,...代表的table,或許都不太一樣
後來把cursor的name都分別以table名稱命名,好像就正常了
jms7275 在 星期五 二月 04, 2005 12:10 am 作了第 1 次修改 |
|
回頂端 |
|
 |
jms7275
註冊時間: 2005-01-08 文章: 65
第 9 樓
|
發表於: 星期四 二月 03, 2005 11:21 pm 文章主題: |
|
|
del~~多按一次 |
|
回頂端 |
|
 |
bigear

註冊時間: 2004-12-19 文章: 162 來自: 網路的另一端
第 10 樓
|
發表於: 星期五 二月 04, 2005 10:10 am 文章主題: |
|
|
在撰寫程式的時候常常會遇到一些奇怪的問題
往往都出現在 "命名" 所發生的問題
例如
table 命名為 login
table的欄位 命名為 name
form 命名為 login
變數 命名為 login
變數 命名為 name
報表 命名為 login
login=login.name
此時會發生什麼狀況
select login
scan
login=name <== 這個時候就會錯亂了
endscan
除非你能對整個程式邏輯非常的了解
否則的話我會建議千萬別用相同的命名
尤其是變數命名千萬要注意 _________________ 以上淺見,歡迎批評指教
________________________________________________
山不轉路轉,路不轉人轉,人不轉頭轉,頭不轉眼睛轉,眼睛不轉眼珠轉
眼珠再不轉就去睡覺,睡起來繼續轉 |
|
回頂端 |
|
 |
jms7275
註冊時間: 2005-01-08 文章: 65
第 11 樓
|
發表於: 星期六 二月 05, 2005 12:38 am 文章主題: |
|
|
bigear 寫到: | 在撰寫程式的時候常常會遇到一些奇怪的問題
往往都出現在 "命名" 所發生的問題
例如
table 命名為 login
table的欄位 命名為 name
form 命名為 login
變數 命名為 login
變數 命名為 name
報表 命名為 login
login=login.name
此時會發生什麼狀況
select login
scan
login=name <== 這個時候就會錯亂了
endscan
除非你能對整個程式邏輯非常的了解
否則的話我會建議千萬別用相同的命名
尤其是變數命名千萬要注意 |
嗯
像我有發現VFP6中,如果在grid某個欄位,自訂controlSource,
例如某函數,已非原先的table;
後來要使用輔助設計工具時,會出現錯誤訊息
然後form的lockscreen屬性就會自動變為true
執行的時候,整個畫面似乎就像當住一樣出不來 |
|
回頂端 |
|
 |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|