Board logo

標題: 如何在TextBox1中顯示輸入法 [打印本頁]

作者: sillykin    時間: 2013-8-31 00:50     標題: 如何在TextBox1中顯示輸入法

如何在TextBox1中顯示輸入法『倉頡』
如何在TextBox2中顯示輸入法『注音』
每次都要重新切換...vba可否做的到呢 ????
作者: sillykin    時間: 2013-9-1 01:49

回復 1# sillykin


    如圖
作者: GBKEE    時間: 2013-9-1 12:59

回復 2# sillykin
請參閱vba的說明
  1. IMEMode 屬性  這個屬性只適用於遠東(Far East)所寫的應用程式,其它應用程則忽略。
複製代碼
vba語法無法切換中文的輸入法
作者: luhpro    時間: 2013-9-4 23:08

本帖最後由 luhpro 於 2013-9-4 23:11 編輯

回復 1# sillykin
網路上找到的方法, 利用 SendKeys -
使用前必須先設定好輸入法的快速切換鍵 :
倉頡 Ctrl + Shift + 1
注音 Ctrl + Shift + 3 如右圖 :  [attach]15940[/attach]

因為 TextBox 沒有類似 GotFocus 或是 Activate 之類的事件來實作剛進入時切換輸入法的動作,
這裡我透過各TextBox 的 MouseUp 事件來切換輸入法,
不過, 此法只能用於滑鼠點擊的方式來做切換 TextBox 的動作,
若是使用者使用 Tab 鍵來切換的話就只能切換是否為中文輸入狀態囉.
  1. Private Sub TextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  2.   'SendKeys ("^+0")  ' 可不用加此行, 因為我最初是設定切換英數的快速鍵為 Ctrl + Shift + 0 , 而這個已可由 TextBox1.IMEMode = fmIMEModeOff  來實現了.
  3. End Sub

  4. Private Sub TextBox2_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  5.   SendKeys ("^+1")
  6. End Sub

  7. Private Sub TextBox3_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  8.   SendKeys ("^+3")
  9. End Sub

  10. Private Sub UserForm_Initialize()
  11.   TextBox1.IMEMode = fmIMEModeOff ' 英數
  12.   TextBox2.IMEMode = fmIMEModeOn  ' 倉頡
  13.   TextBox3.IMEMode = fmIMEModeOn  ' 注音
  14. End Sub
複製代碼
[attach]15941[/attach]
作者: GBKEE    時間: 2013-9-5 08:22

回復 5# luhpro
建議改用Enter事件(進入TextBox之前事件),不必動到滑鼠.(Tab鍵可移動在TextBox之間)
  1. Private Sub TextBox1_Enter()
  2.     SendKeys "^ + {BS}"
  3. End Sub
  4. Private Sub ATextBox2_Enter()
  5.     SendKeys ("^+1")
  6. End Sub
  7. Private Sub ATextBox3_Enter()
  8.     SendKeys ("^+3")
  9. End Sub
複製代碼

作者: sillykin    時間: 2013-9-8 00:12

感謝luhpro 及g大版主的回覆..讓小弟大高眼界..




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)