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

checkbox onkeydown events

答題得分者是:hagar
QOO10
初階會員


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-12-26 17:09:42 IP:61.229.xxx.xxx 未訂閱
請教各位前輩,我在 checkbox onkeydown 寫程式但都沒作用,是不是有那 裏要設定??謝謝
QOO10
初階會員


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-12-26 17:25:47 IP:61.229.xxx.xxx 未訂閱
引言:
引言: 請教各位前輩,我在 checkbox onkeydown 寫程式但都沒作用,是不是有那 裏要設定??謝謝
QOO10: 請改在 CheckBox onClick 或 onKeyPress
>
RaynorPao
版主


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-12-26 18:04:27 IP:61.221.xxx.xxx 未訂閱
引言: 請教各位前輩,我在 checkbox onkeydown 寫程式但都沒作用,是不是有那 裏要設定??謝謝
QOO10 你好: 先在你的 OnKeyDown 裡面加上一個 ShowMessage 以確定是否已經執行 -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
QOO10
初階會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-12-26 19:51:40 IP:61.229.xxx.xxx 未訂閱
引言:
引言: > < face="Verdana, Arial, Helvetica"> QOO10: CheckBox.SetFocus; 試試看
肯定有 >
QOO10
初階會員


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-12-26 19:55:46 IP:61.229.xxx.xxx 未訂閱
引言:
引言:
引言: > < face="Verdana, Arial, Helvetica"> QOO10: CheckBox.SetFocus; 試試看
肯定有 > < face="Verdana, Arial, Helvetica"> 附上 SOURCE unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; CheckBox1: TCheckBox; Edit2: TEdit; procedure CheckBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure CheckBox1KeyPress(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.CheckBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin SHOWMESSAGE('KEY UP'); end; procedure TForm1.CheckBox1KeyPress(Sender: TObject; var Key: Char); begin SHOWMESSAGE('KEY UP'); end; end.
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-12-26 20:09:57 IP:163.15.xxx.xxx 未訂閱
QOO10你好: 試一試 procedure TForm1.CheckBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key=#13 then SHOWMESSAGE('KEY UP'); end; procedure TForm1.CheckBox1KeyPress(Sender: TObject; var Key: Char); begin if key=#13 then SHOWMESSAGE('KEY UP'); end;
------
======================
昏睡~
不昏睡~
不由昏睡~
QOO10
初階會員


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-12-27 09:06:27 IP:61.229.xxx.xxx 未訂閱
引言: 經過我的測試,一切OK 按下認意鍵 都會 SHOWMESSAGE('key up'); 不知你的問題在那裡
可否將你的程式 mail 給我,嚷我了解到底是不是我有那個屬性未設謝謝!! e-mail :mikehuang01@yahoo.com.tw
QOO10
初階會員


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-12-27 16:42:49 IP:61.229.xxx.xxx 未訂閱
引言:
引言: [可否將你的程式 mail 給我,嚷我了解到底是不是我有那個屬性未設謝謝!! e-mail :mikehuang01@yahoo.com.tw
QOO10: 我已經 E-Mail 給你了,不知是否收到
SORRY!!上午一直再忙現在才回,你的信已收到,謝謝您.但是還是不行,就聯你給的 PROJECT1.EXE 都還是不行,將滑鼠移到 CHECKBOX 並 DBCLICK讓其打勾,在按 UP 鍵 FOCUS 跑到 EDIT2!!
QOO10
初階會員


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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-12-27 17:53:22 IP:61.229.xxx.xxx 未訂閱
引言:
引言: SORRY!!上午一直再忙現在才回,你的信已收到,謝謝您.但是還是不行,就聯你給的 PROJECT1.EXE 都還是不行,將滑鼠移到 CHECKBOX 並 DBCLICK讓其打勾,在按 UP 鍵 FOCUS 跑到 EDIT2!! < face="Verdana, Arial, Helvetica"> QOO10: 你的意思是說 桉 UP 這個鍵 嗎? 如果只是 UP & DOWN 鍵 那就好辦了
真的!!就是 >
QOO10
初階會員


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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2002-12-28 11:35:21 IP:61.229.xxx.xxx 未訂閱
引言:
引言: 真的!!就是 > < face="Verdana, Arial, Helvetica"> QOO10: 那妳是要讓 up/ down/ page up /page down 這些鍵 按下時 FOCUS 不要跑到 EDIT2 是這樣嗎?
我的目的是當 user 將 focus 移到 checkbox 後若按上述件會 focus 到 " 指定的元件"!!
QOO10
初階會員


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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2002-12-30 09:03:06 IP:61.229.xxx.xxx 未訂閱
引言:
引言: 我的目的是當 user 將 focus 移到 checkbox 後若按上述件會 focus 到 " 指定的元件"!!
如果是要 設定 focus 你可以利用 ONExit 這個事件 procedure TForm1.CheckBox1Exit(Sender: TObject); begin showMessage('CHECKBOX 焦點離開'); // 在下面指定新的 focus 到 指定的元件"!! end;
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#12 引用回覆 回覆 發表時間:2002-12-30 09:28:02 IP:202.39.xxx.xxx 未訂閱
大概像這樣吧:
procedure TForm1.CheckBox1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case Key of
    VK_UP, VK_PRIOR: Edit1.SetFocus; // 往下鍵 / PageUp 鍵
    VK_DOWN, VK_NEXT: Edit2.SetFocus; // 往上鍵 / PageDown 鍵
  end;
end;
-- Believe the unbelievable.
QOO10
初階會員


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

發送簡訊給我
#13 引用回覆 回覆 發表時間:2002-12-30 10:39:54 IP:61.229.xxx.xxx 未訂閱
引言:
引言: 大概像這樣吧:
procedure TForm1.CheckBox1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case Key of
    VK_UP, VK_PRIOR: Edit1.SetFocus; // 往下鍵 / PageUp 鍵
    VK_DOWN, VK_NEXT: Edit2.SetFocus; // 往上鍵 / PageDown 鍵
  end;
end;
-- Believe the unbelievable.
hagar兄: 在 CheckBox 內的 ONKeyDown 是無法 爪到 VK_UP & VK_DOWN 因為它 CheckBox 會 將 這兩個key 直接 傳給 Parent 然後 Parent 會切換 focus
cmf前輩: 我將程式改成如下: (還是不行) 若改在 onexit 則無法得知user 案的鍵 unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Label1: TLabel; CheckBox1: TCheckBox; procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = VK_UP then if ActiveControl is TCheckBox then showmessage('1111'); end; end.
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#14 引用回覆 回覆 發表時間:2002-12-30 10:44:25 IP:202.39.xxx.xxx 未訂閱
引言: hagar兄: 在 CheckBox 內的 ONKeyDown 是無法 爪到 VK_UP & VK_DOWN 因為它 CheckBox 會 將 這兩個key 直接 傳給 Parent 然後 Parent 會切換 focus
那改成如下的方式, 應該就可以抓得到 VK_UP 等鍵了
    procedure CMDialogKey(Var Msg: TWMKey); message CM_DIALOGKEY;    procedure TForm1.CMDialogKey(Var Msg: TWMKEY);
begin
  if (ActiveControl = CheckBox1) then begin
    case Msg.Charcode of
      VK_UP, VK_PRIOR: Edit1.SetFocus; // 往下鍵 / PageUp 鍵      
      VK_DOWN, VK_NEXT: Edit2.SetFocus; // 往上鍵 / PageDown 鍵 
    end;
  end;
  inherited;
end;
-- Believe the unbelievable.
QOO10
初階會員


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

發送簡訊給我
#15 引用回覆 回覆 發表時間:2002-12-30 11:14:09 IP:61.229.xxx.xxx 未訂閱
引言:
引言: hagar兄: 在 CheckBox 內的 ONKeyDown 是無法 爪到 VK_UP & VK_DOWN 因為它 CheckBox 會 將 這兩個key 直接 傳給 Parent 然後 Parent 會切換 focus
那改成如下的方式, 應該就可以抓得到 VK_UP 等鍵了
    procedure CMDialogKey(Var Msg: TWMKey); message CM_DIALOGKEY;    procedure TForm1.CMDialogKey(Var Msg: TWMKEY);
begin
  if (ActiveControl = CheckBox1) then begin
    case Msg.Charcode of
      VK_UP, VK_PRIOR: Edit1.SetFocus; // 往下鍵 / PageUp 鍵      
      VK_DOWN, VK_NEXT: Edit2.SetFocus; // 往上鍵 / PageDown 鍵 
    end;
  end;
  inherited;
end;
-- Believe the unbelievable.
hagar兄: 你好 CMDialogKey 我要放在 form1.onkeyDowm call 他嗎?? 我試過,但 CMDialogKey 必須傳入 TWMKEY type 但我不知如何將 onkeydown 之 key (word) 如何轉成 TWMKEY ??還煩您教導.tks!!
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#16 引用回覆 回覆 發表時間:2002-12-30 11:16:23 IP:202.39.xxx.xxx 未訂閱
QOO10 原本的就可以了 應該是 TForm.KeyPreview 的屬性沒有設有 True 的關係吧!    -- Believe the unbelievable.
QOO10
初階會員


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

發送簡訊給我
#17 引用回覆 回覆 發表時間:2002-12-30 11:34:32 IP:61.229.xxx.xxx 未訂閱
引言:
引言:
引言:
引言: hagar兄: 在 CheckBox 內的 ONKeyDown 是無法 爪到 VK_UP & VK_DOWN 因為它 CheckBox 會 將 這兩個key 直接 傳給 Parent 然後 Parent 會切換 focus
那改成如下的方式, 應該就可以抓得到 VK_UP 等鍵了
    procedure CMDialogKey(Var Msg: TWMKey); message CM_DIALOGKEY;    procedure TForm1.CMDialogKey(Var Msg: TWMKEY);
begin
  if (ActiveControl = CheckBox1) then begin
    case Msg.Charcode of
      VK_UP, VK_PRIOR: Edit1.SetFocus; // 往下鍵 / PageUp 鍵      
      VK_DOWN, VK_NEXT: Edit2.SetFocus; // 往上鍵 / PageDown 鍵 
    end;
  end;
  inherited;
end;
-- Believe the unbelievable.
hagar兄: 你好 CMDialogKey 我要放在 form1.onkeyDowm call 他嗎?? 我試過,但 CMDialogKey 必須傳入 TWMKEY type 但我不知如何將 onkeydown 之 key (word) 如何轉成 TWMKEY ??還煩您教導.tks!!
type TForm1 = class(TForm) Edit1: TEdit; CheckBox1: TCheckBox; Edit2: TEdit; procedure CheckBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure CheckBox1KeyPress(Sender: TObject; var Key: Char); private { Private declarations } //放在這裡 procedure CMDialogKey(Var Msg: TWMKey); message CM_DIALOGKEY; public { Public declarations } end;
兩位前輩,KeyPreview 有設 True 但如下程式,我不懂的再轉行態部分 非常感謝兩位!! type TForm1 = class(TForm) Edit1: TEdit; CheckBox1: TCheckBox; Edit2: TEdit; DBGrid1: TDBGrid; procedure FormKeyPress(Sender: TObject; var Key: Char); private { Private declarations } procedure CMDialogKey(Var Msg: TWMKey); message CM_DIALOGKEY; public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.CMDialogKey(Var Msg: TWMKEY); begin if (ActiveControl = CheckBox1) then begin case Msg.Charcode of VK_UP, VK_PRIOR: sHOWMESSAGE('up'); end; end; inherited; end; procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin CMDialogKey(key); // 型態不對 end; end.
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#18 引用回覆 回覆 發表時間:2002-12-30 11:46:05 IP:202.39.xxx.xxx 未訂閱
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if Ord(key) ... 
end;
-- Believe the unbelievable.
QOO10
初階會員


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

發送簡訊給我
#19 引用回覆 回覆 發表時間:2002-12-30 12:03:22 IP:61.229.xxx.xxx 未訂閱
引言:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if Ord(key) ... 
end;
-- Believe the unbelievable.
是這樣嗎??還是不行 procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin CMDialogKey(ord(key)); // 型態不對 end;
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#20 引用回覆 回覆 發表時間:2002-12-30 12:07:30 IP:202.39.xxx.xxx 未訂閱
您在 TForm 的 KeyPress 事件中要做什麼事?    -- Believe the unbelievable.
QOO10
初階會員


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

發送簡訊給我
#21 引用回覆 回覆 發表時間:2002-12-30 12:13:21 IP:61.229.xxx.xxx 未訂閱
引言: 您在 TForm 的 KeyPress 事件中要做什麼事? -- Believe the unbelievable.
謝謝,hager 與 cmf 兩位問題解決了,"您在 TForm 的 KeyPress 事件中要做什麼事?" 是我誤會 hager 兄的意思,現已了解.
系統時間:2024-05-08 7:10:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!