如何控制User只能輸入全形字型 |
尚未結案
|
sam1125
一般會員 發表:3 回覆:2 積分:1 註冊:2004-02-11 發送簡訊給我 |
|
kwu
中階會員 發表:10 回覆:57 積分:58 註冊:2003-10-31 發送簡訊給我 |
引言: 請教大家: User有時於資料庫欄位會輸入與SQL指令衝突之字元,造成程式處理發生SQL指令錯誤之狀況,請問如何由程式來自動切換輸入全形?sam1125你好: 請參考下面的方法 請於 Memo1 的 KeyPress 事件中加入下列的程式碼 這樣可讓 User 只能輸入全形字型,不知是不是你要的功能? void __fastcall TForm1::Memo1KeyPress(TObject *Sender, char &Key) { if ((Key != 0x08) && !(Key & 0x80)) Key = 0; } |
sam1125
一般會員 發表:3 回覆:2 積分:1 註冊:2004-02-11 發送簡訊給我 |
|
kaida
中階會員 發表:4 回覆:35 積分:52 註冊:2003-03-02 發送簡訊給我 |
|
kwu
中階會員 發表:10 回覆:57 積分:58 註冊:2003-10-31 發送簡訊給我 |
引言: 感謝提供上述方法,確實可控制半形無法輸入,但User打數字鍵盤發現無法輸入時,會覺得系統有問題,所有我希望能直接切換為全形輸入法之方法sam1125你好: 請將程式碼改成下列方式,可自動切換至輸入法並切成全形輸入,也不允許輸入半形字 此方法經測試過可在英數及中文輸入法中互相切換 不需設定 ImeName 及 ImeMode 也不需要設定 ImeName 指定輸入法名稱及設定 ImeMode = imChinese HKL hkl[20]; bool IsEditMode; void __fastcall TForm1::FormShow(TObject *Sender) { ZeroMemory(hkl,sizeof(HKL)); GetKeyboardLayoutList(255,hkl); } //--------------------------------------------------------------------------- void __fastcall TForm1::Memo1KeyPress(TObject *Sender, char &Key) { if ((Key != VK_BACK) && !(Key & 0x80)) Key = 0; } //--------------------------------------------------------------------------- void __fastcall TForm1::Memo1Enter(TObject *Sender) { HKL hk = GetKeyboardLayout(0); if (hk == hkl[0]) { keybd_event(VK_CONTROL,0,0,0); keybd_event(VK_SPACE,0,0,0); keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0); keybd_event(VK_SPACE,0,KEYEVENTF_KEYUP,0); if (!IsEditMode) { keybd_event(VK_SHIFT,0,0,0); keybd_event(VK_SPACE,0,0,0); keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0); keybd_event(VK_SPACE,0,KEYEVENTF_KEYUP,0); } } IsEditMode = true; } //--------------------------------------------------------------------------- void __fastcall TForm1::Memo1Exit(TObject *Sender) { HKL hk = GetKeyboardLayout(0); if (hk != hkl[0]) { if (IsEditMode) { keybd_event(VK_SHIFT,0,0,0); keybd_event(VK_SPACE,0,0,0); keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0); keybd_event(VK_SPACE,0,KEYEVENTF_KEYUP,0); } keybd_event(VK_CONTROL,0,0,0); keybd_event(VK_SPACE,0,0,0); keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0); keybd_event(VK_SPACE,0,KEYEVENTF_KEYUP,0); } IsEditMode = false; } |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |