線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1368
推到 Plurk!
推到 Facebook!

請問如何判斷用戶通過輸入法選擇了一個詞組?還有就是如何程序中如何獲取這個選擇詞組的字符串?

尚未結案
markss
一般會員


發表:1
回覆:2
積分:0
註冊:2003-04-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-07 17:13:39 IP:61.144.xxx.xxx 未訂閱
我現在通過一些button模擬鍵盤按鍵,然後調用輸入法來輸入中文。 因爲每一次點擊button(模擬鍵盤的一個按鍵)都會使edit失去focus,所以在button click事件中每一次都得重新edit1.setfocus。但是這樣有一個問題就是輸入法的選擇框會不停的閃爍,所以我想只有在用戶輸入了一個了句子並且確認之後(例如:點擊了enter按鍵)才獲取用戶的輸入句子並且賦值給edit1。所以就必須要判斷用戶什麽時候確認選擇的詞組,並且在那個時候獲取這個字符串。 我在測試的時候,如果是每一個按鍵時都edit1.setfocus就都可以通過,雖然會不停的閃爍。但是如果判斷用戶確認信息的話,就會出問題。請高人們幫忙看看拉。搞了好久都搞不出來啊。痛苦!! //第一種寫法可以通過 procedure TForm1.BtnClick(Sender: TObject); var aKeystoke: integer; begin edit1.SetFocus; edit1.SelStart := length(edit1.Text) 1; akeyStoke := (sender as TButton).tag; //在每一個button.tag中記錄模擬的按鈕的鍵值 keybd_event(aKeyStoke,0,0,0); keybd_event(aKeyStoke,0,KEYEVENTF_KEYUP,0); end; //第二種做法老是不能獲得字符串 procedure TForm1.BtnClick(Sender: TObject); var aKeystoke: integer; hIC: HIMC; pBuf: pchar; dwBufLen: DWORD; Compstr: string; begin //如果是輸入法狀態時 if ImmIsIME(GetKeyboardLayOut(0)) then begin akeyStoke := (sender as TButton).tag;//在每一個button.tag中記錄模擬的按鈕的鍵值 keybd_event(aKeyStoke,0,0,0); keybd_event(aKeyStoke,0,KEYEVENTF_KEYUP,0); //模擬按鍵 hIC := ImmGetContext(Form1.Handle ); //取得當前thread的input contex dwBufLen := ImmGetCompositionString(hIC, GCS_RESULTSTR, nil, 0); if dwBufLen <= 0 then begin Exit; end; try GetMem(pBuf, dwBufLen 1); if ImmGetCompositionString(hIC, GCS_RESULTSTR, pBuf, dwBufLen) > 0 then begin Compstr := string(StrLCopy(pBuf, pBuf, dwBufLen)); edit1.Text := edit1.Text compstr; edit1.setfocus; edit1.SelStart := length(edit1.Text) 1; end; finally FreeMem(pBuf, dwBufLen 1); ImmReleaseContext(Form1.Handle , hIC); end; end {for ime test} else begin edit1.SetFocus; edit1.SelStart := length(edit1.Text) 1; akeyStoke := (sender as TButton).tag; keybd_event(aKeyStoke,0,0,0); keybd_event(aKeyStoke,0,KEYEVENTF_KEYUP,0); end; end;
markss
一般會員


發表:1
回覆:2
積分:0
註冊:2003-04-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-08 16:19:42 IP:61.144.xxx.xxx 未訂閱
救命阿,各位! 期限就要到了.如果解決不了只好下崗了。
markss
一般會員


發表:1
回覆:2
積分:0
註冊:2003-04-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-11 09:17:21 IP:218.20.xxx.xxx 未訂閱
作爲一個專門的輸入法論壇,這裡的情況確實讓人感到失望了
系統時間:2024-04-20 13:39:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!