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

程式沒有Focus在最上層,如何能使Edit元件接收鍵盤的輸入資料

答題得分者是:Stallion
ychch0819
一般會員


發表:25
回覆:29
積分:15
註冊:2006-08-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-08-10 11:23:04 IP:59.120.xxx.xxx 訂閱
由於Windows XP把usb barcode scanner當成一般的IO device, 也就是只要游標停在Edit元件上…掃瞄後,結果會自動顯示在Edit上,而因為某種原因,使用scanner的人無法一直看著螢幕,所以我的程式可能會被別的程式擠到下層去,但仍然要讓使用者能夠隨時掃瞄(不用在去切換程式,作業員可能不懂),所以希望程式的Edit元件上仍可以顯示出scanner的結果,不知有沒有辦法!?
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-08-13 00:14:15 IP:211.22.xxx.xxx 未訂閱

在OnDeactivate事件裡this->SetFocus()以及SomeEdit->SetFocus();

aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-08-13 08:38:00 IP:61.229.xxx.xxx 未訂閱

===================引 用 文 章===================

在OnDeactivate事件裡this->SetFocus()以及SomeEdit->SetFocus();

從來沒有機會使用到這個事件,謝謝stallion提到,也讓我注意到,學習到。
我剛看了說明檔,裡面有提到如果是在form中實現onDeactivate事件,那僅當同一個application中被其他的form給擠下去時才會觸發。說明還有特別提到,若是別的application把這個form給擠下,那就要使用TApplication中的OnDeactiveate事件。照原來的問題的描述,應該是需要用到TApplication中的事件!

我照bcb說明檔的例子稍改一下,應該是:
void __fastcall TForm1::AppDeactivate(TObject *Sender)

{
this->SetFocus( );
SomeEdit->SetFocus();
}

void __fastcall TForm1::FormCreate(TObject *Sender)

{
Application->OnDeactivate = AppDeactivate;
}

其中AppDeactivate這個方法需要自己加入TForm1裡。

是不是TForm1中的OnDeactivate的部份也要SetFocus()以及SomeEdit->SetFocus(); 呢? 沒式過,不知TApplication的那事件是否也做用在同一個application中的form的失去focus? 試看看就知道了!

------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
系統時間:2024-11-23 13:34:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!