VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

login畫面與main主畫面,畫面更替的問題

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
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
執行的時候,整個畫面似乎就像當住一樣出不來
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作