有關KeyDown此一event |
尚未結案
|
ammon
一般會員 發表:5 回覆:11 積分:3 註冊:2002-06-25 發送簡訊給我 |
站長, 你好: 想請教一個問題,有關我在程式中使用TLabeledEdit此一元件,並在KeyDown此一event下了如下語法: procedure TForm1.LabeledEdit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Ord(Key) = VK_Return then
begin
xxx
xxx
end;
end; 但是在run time狀態下,我去攔按下enter的動作時,似乎都沒有進此一event中,找了許久,不清楚為何有此一現象發生,但是,當我獨立使用新的application來開發,貼上新的Tlabelededit元件時,在keydown event就可以抓到,不曉得有可能導致影響的原因為何? 謝謝! ammon .^_^.
------
ammon .^_^. |
Miles
尊榮會員 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
|
ammon
一般會員 發表:5 回覆:11 積分:3 註冊:2002-06-25 發送簡訊給我 |
|
Miles
尊榮會員 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
|
ammon
一般會員 發表:5 回覆:11 積分:3 註冊:2002-06-25 發送簡訊給我 |
|
Miles
尊榮會員 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
Hi ammon兄:
我自己是的結果都是可以的, 以前遇到過的狀況是用TDBCtrlGrid上面放TDBEdit, TDBEdit的OnKeyDown會跑到TDBCtrlGrid裡去跑, 這應該是正常現象,
但你現在說的情形我試了試倒是不會, 最後的建議是請您看一下DFM裡面的資料,在你的 TLabeledEdit 是否有OnKeyDown = LabeledEdit1KeyDown這行. 我不是高手, 高手是正在銀幕前微笑的人.
------
我不是高手, 高手是正在銀幕前微笑的人. |
ammon
一般會員 發表:5 回覆:11 積分:3 註冊:2002-06-25 發送簡訊給我 |
Miles,你好: DFM的資料,我昨天也確認過了,裡頭確實有相對應的資料,所以應該不是這個問題,不過我今天從新撰寫之後,發現相同的步驟,到了我貼上另一個元件,同時做了些變化之後,就有狀況發生了,我先在panel上貼了labelededit,並在他的keydown event寫了showmessage('123'),接著一直貼上其他我要的元件,在貼上最後一個元件TBitBtn(***很重要的動作,將他的屬性KIND變動,這時在去RUN,你就會發現labelededit的keydown 嗝屁了,完全無作用了) 測試到這邊時,我覺得這...真是詭異,算是delphi 6的bug嗎?
本來剛好要上網站POST,就看到你的回覆了,真是謝謝你的幫忙。 Ammon
引言: Hi ammon兄: 我自己是的結果都是可以的, 以前遇到過的狀況是用TDBCtrlGrid上面放TDBEdit, TDBEdit的OnKeyDown會跑到TDBCtrlGrid裡去跑, 這應該是正常現象, 但你現在說的情形我試了試倒是不會, 最後的建議是請您看一下DFM裡面的資料,在你的 TLabeledEdit 是否有OnKeyDown = LabeledEdit1KeyDown這行. 我不是高手, 高手是正在銀幕前微笑的人.
------
ammon .^_^. |
Miles
尊榮會員 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
ammon兄, 果然如此, 被你測出來了
看一下下面的程式, TBitBtn.SetKind, 設定TBitBtn.Kind時會做到
procedure TBitBtn.SetKind(Value: TBitBtnKind); begin if Value <> FKind then begin if Value <> bkCustom then begin Default := Value in [bkOK, bkYes]; Cancel := Value in [bkCancel, bkNo]; if ((csLoading in ComponentState) and (Caption = '')) or (not (csLoading in ComponentState)) then begin if BitBtnCaptions[Value] <> nil then Caption := LoadResString(BitBtnCaptions[Value]); end; ModalResult := BitBtnModalResults[Value]; TButtonGlyph(FGlyph).Glyph := GetBitBtnGlyph(Value); NumGlyphs := 2; FModifiedGlyph := False; end; FKind := Value; Invalidate; end; end;當我們將Kind設成bkOK, bkYes他會自動將Default property設成True 導致我們按下Enter時會直接按到該按鈕,因此只要將Default改成False就好了 Good Luck 也謝謝你讓我知道這一點^^ 我不是高手, 高手是正在銀幕前微笑的人. 發表人 - miles 於 2002/11/29 11:58:56
------
我不是高手, 高手是正在銀幕前微笑的人. |
ammon
一般會員 發表:5 回覆:11 積分:3 註冊:2002-06-25 發送簡訊給我 |
Miles, 設限在BitBtn.Kind=bkOK, bkYes時,按下enter就被截走,是直接去把api32的呼叫給阻斷嗎?因為在程式中,似乎很難看出他寫在哪裡,在印象中,若是Form為parent而有許多子元件者,可以在Form上設定KeyPreview來將按下任何鍵先行在Form的event做判斷,而他BiBtn的作法倒是讓人感到不解,不是嗎? Ammon
引言: ammon兄, 果然如此, 被你測出來了 看一下下面的程式, TBitBtn.SetKind, 設定TBitBtn.Kind時會做到procedure TBitBtn.SetKind(Value: TBitBtnKind); begin if Value <> FKind then begin if Value <> bkCustom then begin Default := Value in [bkOK, bkYes]; Cancel := Value in [bkCancel, bkNo]; if ((csLoading in ComponentState) and (Caption = '')) or (not (csLoading in ComponentState)) then begin if BitBtnCaptions[Value] <> nil then Caption := LoadResString(BitBtnCaptions[Value]); end; ModalResult := BitBtnModalResults[Value]; TButtonGlyph(FGlyph).Glyph := GetBitBtnGlyph(Value); NumGlyphs := 2; FModifiedGlyph := False; end; FKind := Value; Invalidate; end; end;當我們將Kind設成bkOK, bkYes他會自動將Default property設成True 導致我們按下Enter時會直接按到該按鈕,因此只要將Default改成False就好了 Good Luck 也謝謝你讓我知道這一點^^ 我不是高手, 高手是正在銀幕前微笑的人. 發表人 - miles 於 2002/11/29 11:58:56
------
ammon .^_^. |
Miles
尊榮會員 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
Hello ammon:
這應該是屬於流程控制的問題, 我們可以做個實驗, 在Form上放一些TBitBtn及一些TEdit, TLabelEdit, TMaskEdit之類, 將每個TBitBtn.Default都設成True,
裡面可以寫一些如ShowMessage('BitBtn1');之類的, 程式跑動後你在每一個Edit之類的地方按Enter他都會執行到TBitBtn最後一個設定Default為True的OnClick事件中, 我想它的用意大致上是這樣, 我輸入了很多查詢的條件在各Edit中, 我不管在哪個Edit裡按Enter都要直接以各Edit為條件查詢出資料,所以都要直接執行到查詢鈕也就是TBitBtn.Default最後設為True的按鈕. 我不是高手, 高手是正在銀幕前微笑的人.
------
我不是高手, 高手是正在銀幕前微笑的人. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |