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

grid 中邊打字邊搜索

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



註冊時間: 2009-10-14
文章: 41


第 1 樓

發表發表於: 星期四 十月 29, 2009 10:15 am    文章主題: grid 中邊打字邊搜索 引言回覆

請教各位先進:

我用一個form 裡面有grid1的物件,在form的keypress中寫下面的代碼


*GRDM1
IF !THISFORM.GRID1.VISIBLE=.T. &&先確認該GRID是焦點所在,再分按鍵作用,以作索引。
RETURN
ENDIF
@ 27 , 30 say nkeycode
@ 27 , 50 say nShiftAltCtrl
do case
case NKEYCODE = 127 && BackSpace.back a character
IF !EMPTY( MY_SEEK )
MY_SEEK = SUBSTR( MY_SEEK , 1 , LEN( MY_SEEK ) - 1)
@ 26 , 30
@ 26 , 30 say MY_SEEK
ENDIF
RETURN
case NKEYCODE = 10 && Ctrl_Enter.clear key buffers
MY_SEEK = ""
@ 26 , 30
RETURN
case nkeycode = 13 && Enter.確定
thisform.itemname = invtory.ino
thisform.release
return
case nkeycode = 27 && Esc.放棄
thisform.itemname = ""
thisform.release
return
otherwise && search data
IF CHR(nKeyCode)$"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
MY_RECNO=RECNO()
*@ 26 , 23 say MY_SEEK
SEEK MY_SEEK + UPPER( CHR( NKEYCODE ) )
IF !FOUND()
WAIT WINDOWS MY_SEEK + UPPER( CHR( NKEYCODE ) )
GO MY_RECNO &&停在最後找到紀錄的
ELSE
MY_SEEK=MY_SEEK+UPPER( CHR(nKeyCode) )
@ 26 , 30 say MY_SEEK
ENDIF
ELSE
.

* GO TOP
* MY_SEEK="" &&重設搜索鍵
ENDIF
endcase

這段代碼的作用為,當游標在grid1時,用keypress程序 攔截user在鑑盤所key的每一個字,然後搜索更新grid裡面的內容,但是很奇怪的是,我在鍵盤所打每一個的字,或按倒退鍵,速度很慢,但我在gird1,移動游標做上下筆資料移動時,速度又很正常,
請教各位前輩,這個問題是為甚麼是否有解
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 2 樓

發表發表於: 星期四 十月 29, 2009 10:46 am    文章主題: 引言回覆

我會避免作這種我認為是傻事的動作.
理由就在倒數三行中

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
LiuRambo



註冊時間: 2007-11-27
文章: 481


第 3 樓

發表發表於: 星期四 十月 29, 2009 12:01 pm    文章主題: 引言回覆

按一個字就seek一次.........
會不會太操啊

如果真要搜尋
換用cursor試試看,我不確定
真正原因syntech老大已經說的很清楚了
好像之前也有人要vfp做出像google一樣及時搜尋的.....
沒有這麼需要這樣搞吧
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
lee188188



註冊時間: 2007-01-27
文章: 33


第 4 樓

發表發表於: 星期四 十月 29, 2009 5:16 pm    文章主題: 引言回覆

請設一TEXTEDIT文字輸入欄, 點尋找時VISIBLE=.T.

interactive Change
---------------------------
SET NEAR ON
SEEK TRIM(THIS.VALUE)
SET NEAR OFF
THISFORM.GRID1.REFRESH

KeyPress
--------------------------
if nkeycode=13
thisform.grid1.setfocus
THIS.VISIBLE=.F.
nodef
else
if nkeycode=27
thisform.grid1.setfocus
nodef
endif
endif

即可達可您的要求
我覺得不要用 @ SAY, ... 這種輸出動作較慢, 應用LABEL顯示較好.
但是隨打隨找的畫面在主機多人且資料量大時反應較慢.
回頂端
檢視會員個人資料 發送私人訊息
LiuRambo



註冊時間: 2007-11-27
文章: 481


第 5 樓

發表發表於: 星期四 十月 29, 2009 5:27 pm    文章主題: 引言回覆

這樣搞會變成 你的每個客戶電腦都要不錯
網路還不可以太慢

導致慢的因素太多了
怕是搞到後來會變成砸自己腳的大石頭
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
cgsusually67



註冊時間: 2009-10-14
文章: 41


第 6 樓

發表發表於: 星期四 十月 29, 2009 5:28 pm    文章主題: 謝謝各位前輩指點 引言回覆

請問所謂的cursor 處理是甚麼意似,有可能會比較快嗎
回頂端
檢視會員個人資料 發送私人訊息
cgsusually67



註冊時間: 2009-10-14
文章: 41


第 7 樓

發表發表於: 星期四 十月 29, 2009 5:57 pm    文章主題: 可是程式碼改成下面這樣....還是慢 引言回覆

請教各位大大,因為我程式碼已經改成下面這樣,等於沒有做搜尋,但是在打每一個字時,或按倒退鍵減字,速度還是很慢,看起來應該不是seek的問題,那可能原因是甚麼.感謝

do case
case NKEYCODE = 127 && BackSpace.back a character
IF !EMPTY( THISFORM.SEARCH_STR.CAPTION )
THISFORM.SEARCH_STR.CAPTION = SUBSTR( THISFORM.SEARCH_STR.CAPTION
, 1 , LEN( THISFORM.SEARCH_STR.CAPTION ) - 1)
ENDIF
RETURN
otherwise && search data
IF
CHR(nKeyCode)$"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
THISFORM.SEARCH_STR.CAPTION = THISFORM.SEARCH_STR.CAPTION + UPPER(
CHR(nKeyCode) )
ENDIF
endcase
回頂端
檢視會員個人資料 發送私人訊息
LiuRambo



註冊時間: 2007-11-27
文章: 481


第 8 樓

發表發表於: 星期四 十月 29, 2009 9:02 pm    文章主題: 引言回覆

你有沒有試過放個messagebox或是wait windows來看看到底執行幾次
搞不好按個鍵多跑了好幾次
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
cgsusually67



註冊時間: 2009-10-14
文章: 41


第 9 樓

發表發表於: 星期五 十月 30, 2009 8:54 am    文章主題: 可是我測過了...... 引言回覆

我按照各位前輩的指點,做了測試,譬如在程式碼中放入mesaagebix(""),以確定我按鍵盤的每個按鍵,程式到底跑了幾次,是確定只有一次,怎麼辦,.........請各位高手幫幫忙
回頂端
檢視會員個人資料 發送私人訊息
LiuRambo



註冊時間: 2007-11-27
文章: 481


第 10 樓

發表發表於: 星期五 十月 30, 2009 11:00 am    文章主題: 引言回覆

檢查看看還有沒有其他的even在互相影響
或者是在同一個form裡面還有其他的keypress在干擾
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

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


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