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

請問:setfocus()與valid()

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
joyjoy



註冊時間: 2003-09-29
文章: 24


第 1 樓

發表發表於: 星期五 四月 15, 2005 7:23 pm    文章主題: 請問:setfocus()與valid() 引言回覆

各位前輩您們好!

我對一個thisform.grid.column1.text1 作 setfocus()時 (thisform.grid.column1.text1.setfocus()),
它會引發自身的valid() (thisform.grid.column1.text1.valid()),

我另外新增一個表單,加入一個文字方塊,然後
對thisform.text1 作setfocus() (thisform.text1.setfocus() ),它也會引發text1.valid()

請問這是正常的嗎?

我想要在某些動作後把焦點移到thisform.grid.column1.text1上(因為想先輸入那一個欄位),
而且要強迫輸入規定的資料,我在thisform.grid.column1.text1.valid()中寫入:
if len(allt(this.vale))<>3
messagebox("必須為3碼")
return 0
endif

結果,
從別的地方作thisform.grid.column1.text1.setfocus(),它卻引發valid事件(並發出"必須為3碼")

我用錯了方法嗎?請教我正確的方法是?

謝謝!
回頂端
檢視會員個人資料 發送私人訊息
bin1x



註冊時間: 2004-08-27
文章: 462


第 2 樓

發表發表於: 星期五 四月 15, 2005 7:47 pm    文章主題: 引言回覆

[我對一個thisform.grid.column1.text1 作 setfocus()時 (thisform.grid.column1.text1.setfocus()),
它會引發自身的valid() (thisform.grid.column1.text1.valid()),

我另外新增一個表單,加入一個文字方塊,然後
對thisform.text1 作setfocus() (thisform.text1.setfocus() ),它也會引發text1.valid()

請問這是正常的嗎?]

會嗎? 如果會的話,是否看一下text1是沒加任何程式碼的物件,或有繼承一些程式碼?
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站 MSN Messenger
joyjoy



註冊時間: 2003-09-29
文章: 24


第 3 樓

發表發表於: 星期六 四月 16, 2005 4:13 am    文章主題: 引言回覆

會呀...
為了避免是我的電腦的關係,我在朋友的電腦試,

打開foxpro,直接新增一個表單,加入一個文字方塊text1
text1.click()寫一行
thisform.text1.setfocus()       &&若寫this.setfocus()也是一樣的情形。

text1.valid()寫一行
messagebox("test")

立即執行,click該文字方塊,就跳出 "test"的訊息。點幾次就出來幾次,
真不知道我是怎麼了?

各位前輩,請救救我...
回頂端
檢視會員個人資料 發送私人訊息
bin1x



註冊時間: 2004-08-27
文章: 462


第 4 樓

發表發表於: 星期六 四月 16, 2005 7:54 am    文章主題: 引言回覆

那我可以說
好里加在
我很少用setfocus()
祝你幸運!
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站 MSN Messenger
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2160


第 5 樓

發表發表於: 星期六 四月 16, 2005 8:58 am    文章主題: 引言回覆

先看看這篇文章是否對你有幫助: 了解Visual Foxpro 的事件運作
_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
joyjoy



註冊時間: 2003-09-29
文章: 24


第 6 樓

發表發表於: 星期六 四月 16, 2005 12:32 pm    文章主題: 引言回覆

我使用setfocus()的目的是:
想要在grid外放一個CMD_ADDS,用以產生明細檔的新紀錄,並且預先產生流水號,
然後把焦點移到品名選擇的儲存格,該儲存格VALID()有限制及警示條件。

本想這是一個簡單的控制,
不過,它總會在GRID1.COLUMN2.TEXT1.SETFOCUS()時就引發警示訊息。

看來真的是我的用法有問題,所以,
我自己再研究吧..

謝謝各位前輩
回頂端
檢視會員個人資料 發送私人訊息
joyjoy



註冊時間: 2003-09-29
文章: 24


第 7 樓

發表發表於: 星期日 四月 17, 2005 1:58 am    文章主題: 引言回覆

garfield大大,
謝謝您提示我去看那篇文章。
之前就有看過那篇文章,可是沒有詳細的去瞭解它,
您提示後,我再回去看了幾次,一開始還是沒解決問題,
因為setfocus()真的會引發this.valid()。
我想了很久,覺得奇怪,後來又想起該文內容,所以我想到既然它一定會引發,
那我就在處理之前(text1值尚符合valid時),先把焦點移出(如到CMD_ADDS上)。
測試之後,正常無誤,現在終於解決"我"的問題。

這次的問題讓我好好地去瞭解這幾個事件,也讓我得以刪除一些無聊程式碼(當初為了克服問題所試的)
現在,SETFOCUS、WHEN、VALID、..........的運用,
又回到我一開始想像的---簡單又好用。

謝謝各位前輩來來回回的指導,謝謝!
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

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


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