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

如何清除 keyboard buffer ?

答題得分者是:m8815010
xfile
初階會員


發表:21
回覆:80
積分:25
註冊:2004-10-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-15 17:32:22 IP:220.130.xxx.xxx 未訂閱
新手發問 :p 小弟寫了個程式,用 memo 輸入文字,如果輸入的內容是空的(直接按 Enter) 則清除 memo 內容,若 memo 有內容,則把 memo 的內容傳到另外的元件中, 並把 memo 清空。以下是問題所在 : void __fastcall TForm1::Memo2KeyPress(TObject *Sender, char &Key) { if(Key == VK_RETURN) { if (Memo2->Text != "") Message_Print(Memo2->Text); // 自訂函數,送出 memo 內容 } } 在 OnKeyPress 中按了什麼鍵都會先判斷,判斷完,也就是 OnKeyPress 事件 處理完以後以後再存入 memo 中,所以下一次 memo 一定不是空的,裡面 最少有 "\r\n" 這種東西。 若在 OnKeyDown 事件中判斷的話,memo 會多出 "\r\n",判斷的難度 就會增加,可以的話有沒有辦法在 OnKeyPress 就清空 keyboard buffer 呢 ? 這樣的話比較簡單明快。
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-15 17:58:04 IP:61.63.xxx.xxx 未訂閱
引言: 新手發問 :p 小弟寫了個程式,用 memo 輸入文字,如果輸入的內容是空的(直接按 Enter) 則清除 memo 內容,若 memo 有內容,則把 memo 的內容傳到另外的元件中, 並把 memo 清空。以下是問題所在 : void __fastcall TForm1::Memo2KeyPress(TObject *Sender, char &Key) { if(Key == VK_RETURN) { if (Memo2->Text != "") Message_Print(Memo2->Text); // 自訂函數,送出 memo 內容 } } 在 OnKeyPress 中按了什麼鍵都會先判斷,判斷完,也就是 OnKeyPress 事件 處理完以後以後再存入 memo 中,所以下一次 memo 一定不是空的,裡面 最少有 "\r\n" 這種東西。 若在 OnKeyDown 事件中判斷的話,memo 會多出 "\r\n",判斷的難度 就會增加,可以的話有沒有辦法在 OnKeyPress 就清空 keyboard buffer 呢 ? 這樣的話比較簡單明快。
xfile你好< >: 不是很明白你的意思< >,不曉得是不是這樣:

void __fastcall TForm1::Memo1KeyPress(TObject *Sender, char &Key)
{
 if (Key==VK_RETURN) {
     Key=0;       <--多加這一行
     if (Memo1->Text!="")
         Memo2->Text=Memo2->Text Memo1->Text;
 }
}
這樣enter鍵(換行)就不會進到你的Memo1中了! All! 發表人 -
xfile
初階會員


發表:21
回覆:80
積分:25
註冊:2004-10-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-15 18:59:26 IP:220.130.xxx.xxx 未訂閱
............... 深受打擊 orz  真是簡潔有力,為什麼我沒想到啊啊啊啊啊 ~~~ 繞了好大一圈,在網路上找了又找, 沒想到我要的效果只要這幾個字就可以完成, 我是笨蛋 ........ >
系統時間:2024-06-21 13:35:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!