J
jiichen
Unregistered / Unconfirmed
GUEST, unregistred user!
現在在寫一個類似 Tmemo 的編輯控件,是從
TCustomControl 繼承而來的。
Scroll 方面是用兩個 TScrollBar 控件,而不是使用 API 的方法。
這控件是依我自己的意思來寫的,大致分成顯示與編輯兩類,
目前顯示方面已完成,可以讀檔並顯示及使用 Scroll Bar。
而編輯方面,想使用 WM_KEYDOWN、WM_KEYUP ,但是
攔截不到方向鍵,作了一個簡單的程式來測試,主視窗中除了
我的控件外,另還有幾個 Button ,當按下右鍵時,便看見
Button 焦點跑來跑去,到我的控件時,只觸發了 WM_KEYUP
事件,且焦點也跑至下一個 Button。
問題1:如何攔截方向鍵?
問題2:按方向鍵後,焦點不會跑至下一個控件?
這裡是部分程式碼:
procedure WMKEYUP(var msg:TWMKEYUP); message WM_KEYUP;
procedure WMKEYDOWN(var msg:TWMKEYDOWN); message WM_KEYDOWN;
procedure WMGetDlgCode(var Message: TWMGetDlgCode); message WM_GETDLGCODE;
// 實作 ----------------------------------------------------------
procedure TCustomJCMemo.WMGetDlgCode(var Message: TWMGetDlgCode);
begin
//
inherited;
if FWantTab then
Message.Result := Message.Result or DLGC_WANTTAB;
if FWantAllKeys then
Message.Result := Message.Result or DLGC_WANTALLKEYS;
end;
procedure TCustomJCMemo.WMKEYUP(var msg: TWMKEYUP);
begin
inherited;
end;
procedure TCustomJCMemo.WMKEYDOWN(var msg: TWMKEYDOWN);
begin
inherited;
end;
TCustomControl 繼承而來的。
Scroll 方面是用兩個 TScrollBar 控件,而不是使用 API 的方法。
這控件是依我自己的意思來寫的,大致分成顯示與編輯兩類,
目前顯示方面已完成,可以讀檔並顯示及使用 Scroll Bar。
而編輯方面,想使用 WM_KEYDOWN、WM_KEYUP ,但是
攔截不到方向鍵,作了一個簡單的程式來測試,主視窗中除了
我的控件外,另還有幾個 Button ,當按下右鍵時,便看見
Button 焦點跑來跑去,到我的控件時,只觸發了 WM_KEYUP
事件,且焦點也跑至下一個 Button。
問題1:如何攔截方向鍵?
問題2:按方向鍵後,焦點不會跑至下一個控件?
這裡是部分程式碼:
procedure WMKEYUP(var msg:TWMKEYUP); message WM_KEYUP;
procedure WMKEYDOWN(var msg:TWMKEYDOWN); message WM_KEYDOWN;
procedure WMGetDlgCode(var Message: TWMGetDlgCode); message WM_GETDLGCODE;
// 實作 ----------------------------------------------------------
procedure TCustomJCMemo.WMGetDlgCode(var Message: TWMGetDlgCode);
begin
//
inherited;
if FWantTab then
Message.Result := Message.Result or DLGC_WANTTAB;
if FWantAllKeys then
Message.Result := Message.Result or DLGC_WANTALLKEYS;
end;
procedure TCustomJCMemo.WMKEYUP(var msg: TWMKEYUP);
begin
inherited;
end;
procedure TCustomJCMemo.WMKEYDOWN(var msg: TWMKEYDOWN);
begin
inherited;
end;