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

如何做成像輸入法 ToolBar 不取得焦點(Focus).

 
kenlee1109
初階會員


發表:20
回覆:40
積分:27
註冊:2006-08-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-10-13 01:21:11 IP:61.229.xxx.xxx 未訂閱
請大家指教,謝謝了.
歸木淡
中階會員


發表:1
回覆:49
積分:75
註冊:2005-09-07

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-10-14 10:58:22 IP:71.235.xxx.xxx 未訂閱
在form的private部分加上 procedure WMMouseActivate(Var msg: tmessage); message WM_MOUSEACTIVATE; procedure tIMEform.WMMouseActivate(var msg: tmessage); begin msg.result := MA_NOACTIVATE; end; 處理onActivate, 其中mainform為focus所在的form: procedure tIMEform.FormActivate(Sender: TObject); begin if assigned(mainform) then if mainform.visible then begin Windows.SetFocus(mainform.Handle); if application.MainForm=mainform then Windows.SetFocus(application.handle); end; end;
kenlee1109
初階會員


發表:20
回覆:40
積分:27
註冊:2006-08-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-10-14 23:25:27 IP:61.229.xxx.xxx 未訂閱
謝謝歸木淡兄,小弟試看看,感謝您的熱心與專業.
kenlee1109
初階會員


發表:20
回覆:40
積分:27
註冊:2006-08-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-10-14 23:41:50 IP:61.229.xxx.xxx 未訂閱
歸木淡兄,我是用 Borland C++開發,宣告如下.
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_MOUSEACTIVATE, TMessage, WMMouseActivate)
END_MESSAGE_MAP(TForm)

//---------------------------------------------------------------------------
void __fastcall TMainForm::WMMouseActivate(TMessage &Message){
Message.Result = MA_NOACTIVATE;
}

當我點下 Mouse 在 form 上時,有觸動這個 function, 但是 focus 一樣移到這個 form 上( Title 變成深藍色表示 focus 切換),是不是尚需做啥? and 您第二段處理 OnActive 應該是
void __fastcall TMainForm::OnActive(TObject *Sender)
{
::SetFocus(Handle);
}

無法 work,請問是什麼原因?

歸木淡
中階會員


發表:1
回覆:49
積分:75
註冊:2005-09-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2006-10-17 03:30:37 IP:130.132.xxx.xxx 未訂閱
第二段的 onActivate 不是 mainform 的event, 而是 imeform的event,它使得imeform無法被激法。
系統時間:2024-12-04 1:09:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!