全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:4555
推到 Plurk!
推到 Facebook!

【KeyPress】不知是否有函數表可參考之

答題得分者是:RaynorPao
uuujjj
一般會員


發表:31
回覆:59
積分:18
註冊:2002-09-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-02-27 22:09:16 IP:61.218.xxx.xxx 未訂閱
各位高手大大們好~^^ 想撰寫一些熱鍵的程式…… 但是不大知道keycode在delphi和vb有沒有什麼差別…?? 我目前所知道的是… enter → #13 而ctrl、shift…之類的都是利用keydown的內鍵傳回值 但是…Esc、或是f1、f2…那些呢???? 不好意思…麻煩前輩們指教…^^" 發表人 - uuujjj 於 2003/02/27 22:11:44
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-02-27 22:43:12 IP:61.221.xxx.xxx 未訂閱
引言: 各位高手大大們好~^^ 想撰寫一些熱鍵的程式…… 但是不大知道keycode在delphi和vb有沒有什麼差別…?? 我目前所知道的是… enter → #13 而ctrl、shift…之類的都是利用keydown的內鍵傳回值 但是…Esc、或是f1、f2…那些呢???? 不好意思…麻煩前輩們指教…^^"
uuujjj 你好: 請參考以下的連結
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-02-27 22:49:12 IP:218.163.xxx.xxx 未訂閱
引言: 各位高手大大們好~^^ 想撰寫一些熱鍵的程式…… 但是不大知道keycode在delphi和vb有沒有什麼差別…?? 我目前所知道的是… enter → #13 而ctrl、shift…之類的都是利用keydown的內鍵傳回值 但是…Esc、或是f1、f2…那些呢???? 不好意思…麻煩前輩們指教…^^"
您可以參考這篇文章: http://delphi.ktop.com.tw/topic.php?topic_id=22224 其中有一篇是這麼講:(引述ccchen大大) KeyPress與KeyDown之意義不同, 當我們輸入一個鍵時, 先有WM_KEYDOWN,WM_KEYUP. 之後系統經過轉換在送出WM_CHAR. KEYPRESS相當於WM_CHAR之結果, 故已被轉為CHAR 例: 不論輸入大小寫A, keyDown中均是65, 必須配合 shiftstate才知大小寫, KeyPress則可正確得到 所有function key由於無法轉成char故在keypress中均無效 故 1. 須取得user輸入之字元->在keypress處理 2. 功能鍵->在keydown或keyup處理
------
~小弟淺見,參考看看~
QOO10
初階會員


發表:59
回覆:89
積分:29
註冊:2002-12-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-02-28 12:48:11 IP:61.229.xxx.xxx 未訂閱
引言: 各位高手大大們好~^^ 想撰寫一些熱鍵的程式…… 但是不大知道keycode在delphi和vb有沒有什麼差別…?? 我目前所知道的是… enter → #13 而ctrl、shift…之類的都是利用keydown的內鍵傳回值 但是…Esc、或是f1、f2…那些呢???? 不好意思…麻煩前輩們指教…^^" 發表人 - uuujjj 於 2003/02/27 22:11:44
下列兩段攘您參考希望對您有幫助 procedure FORM1.FormKeyPress(Sender: TObject; var Key: Char); begin if (key=#13) then begin if not (activecontrol is TDBGRID) then begin KEY:=#0; PerForm(WM_NEXTDLGCTL,0,0); end; end; end; procedure FORM1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin inherited; if shift = [ssCtrl] then begin case key of VK_F4 :sbCLIHIST.Click; VK_F9 :sbPARHIST.Click; vk_f10:sbCF10.click; end; end else begin case key of vk_f8 :SpeedButton2.Click; vk_f9 :SpeedButton3.Click; vk_f11:SpeedButton4.Click; end; END; end;
Rain
資深會員


發表:31
回覆:236
積分:268
註冊:2003-02-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-02-28 20:38:28 IP:218.5.xxx.xxx 未訂閱
都在Windows.pas裏邊,可用例如'VK_RETURN'搜索這些鍵值在單元中位置
uuujjj
一般會員


發表:31
回覆:59
積分:18
註冊:2002-09-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-02-28 21:01:52 IP:61.218.xxx.xxx 未訂閱
引言: uuujjj 你好: 請參考以下的連結 >< face="Verdana, Arial, Helvetica"> 不好意思…對於這個連結有很多資源可以看到… 但是,恕我…^^"" 太嫩了點… 我不知道這些keycode要如何使用… 我下面是我依照那keycode表撰寫的程式… 但是…><""" 無法使用… 我不知道是哪裡錯了~嗚… procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key =vk_end then begin close; end; end; 發表人 - uuujjj 於 2003/02/28 21:03:03
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-02-28 21:15:20 IP:61.221.xxx.xxx 未訂閱
引言: 不好意思…對於這個連結有很多資源可以看到… 但是,恕我…^^"" 太嫩了點… 我不知道這些keycode要如何使用… 我下面是我依照那keycode表撰寫的程式… 但是…><""" 無法使用… 我不知道是哪裡錯了~嗚… procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key =vk_end then begin close; end; end;
uuujjj 你好: 請善用本網站的搜尋功能,看看別人寫的範例吧
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
uuujjj
一般會員


發表:31
回覆:59
積分:18
註冊:2002-09-28

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-02-28 21:17:26 IP:61.218.xxx.xxx 未訂閱
引言: 下列兩段攘您參考希望對您有幫助 procedure FORM1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin inherited; if shift = [ssCtrl] then begin case key of VK_F4 :sbCLIHIST.Click; VK_F9 :sbPARHIST.Click; vk_f10:sbCF10.click; end; end else begin case key of vk_f8 :SpeedButton2.Click; vk_f9 :SpeedButton3.Click; vk_f11:SpeedButton4.Click; end; END; end;
謝謝QOO10前輩的指導… 但我想請教一下…^^" vk_f8:SpeedButton2.Click; 這是不是代表按下「F8」,即啟動如按下SpeedButton2的事件??? 但是,我現在用key = vk_f8 沒有任何反應… 難不成…vk_f8這些函數只能對應已寫好的事件程序嗎??? 還是說,我有哪裡沒設定… 因而使我的熱鍵再怎麼按也沒有反應…><||| 因為我用shift傳回值可以順利執行, 但…key值的… 如果用RaynorPao前輩所提供的函數表都沒辦法使用…@@||| 嗚……::: >< ::: 不好意思…太嫩了… 再請教大家一下~
uuujjj
一般會員


發表:31
回覆:59
積分:18
註冊:2002-09-28

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-02-28 21:26:23 IP:61.218.xxx.xxx 未訂閱
引言: uuujjj 你好: 請善用本網站的搜尋功能,看看別人寫的範例吧 >< face="Verdana, Arial, Helvetica"> 謝謝~那最終的問題是… 這些keycode(我指的是vk_f8之類的)不能使用類似… key = #13 對應用法 key = vk_f8 這樣嗎????^^" 其實在一開始前,就有善用了,謝謝~ 只是,並沒有我想要的答案… 所以,我想再次詢問前輩們~不好意思~^^
uuujjj
一般會員


發表:31
回覆:59
積分:18
註冊:2002-09-28

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-02-28 21:49:07 IP:61.218.xxx.xxx 未訂閱
ㄚ呀呀……ㄚ呀呀… RaynorPao前輩…謝謝您點醒我…^0^ 我剛好瞄到一行…小小的一行… 但,卻是我的重點… 呵… 那就是:(下二行引用hagar大大的話) QOO10 原本的就可以了 應該是 TForm.KeyPreview 的屬性沒有設有 True 的關係吧! 這是個關鍵哪… 非常感恩~~^ ^ 解開了…就好高興…謝謝您~ 這樣一來,就撰寫出下面ok的程式了… 謝謝~ procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin case key of VK_F8: Form1.Close ; end; end; 另外的也可以: procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key=vk_f8 then begin Form1.Close ; end; end; 太開心囉…謝謝~ 發表人 - uuujjj 於 2003/02/28 21:56:25
系統時間:2024-04-26 4:49:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!