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

如何控制User只能輸入全形字型

尚未結案
sam1125
一般會員


發表:3
回覆:2
積分:1
註冊:2004-02-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-11 11:57:24 IP:211.78.xxx.xxx 未訂閱
請教大家: User有時於資料庫欄位會輸入與SQL指令衝突之字元,造成程式處理發生SQL指令錯誤之狀況,請問如何由程式來自動切換輸入全形?
kwu
中階會員


發表:10
回覆:57
積分:58
註冊:2003-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-19 13:20:15 IP:61.63.xxx.xxx 未訂閱
引言: 請教大家: 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-19 19:04:15 IP:211.78.xxx.xxx 未訂閱
感謝提供上述方法,確實可控制半形無法輸入,但User打數字鍵盤發現無法輸入時,會覺得系統有問題,所有我希望能直接切換為全形輸入法之方法
kaida
中階會員


發表:4
回覆:35
積分:52
註冊:2003-03-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-19 20:33:57 IP:218.85.xxx.xxx 未訂閱
只需將 memo 或 edit 的 imeMode 設為 imChinese,imeName 設為需要的中文輸入法即可。
kwu
中階會員


發表:10
回覆:57
積分:58
註冊:2003-10-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-20 00:42:55 IP:61.226.xxx.xxx 未訂閱
引言: 感謝提供上述方法,確實可控制半形無法輸入,但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;
}    
系統時間:2024-06-02 14:22:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!