  | 
				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
 
執行的時候,整個畫面似乎就像當住一樣出不來 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |