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

Edit1輸入後按Enter..將Focus移到Button上

尚未結案
vittel
一般會員


發表:13
回覆:14
積分:5
註冊:2003-09-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-20 19:03:31 IP:140.114.xxx.xxx 未訂閱
新手發問請多指教.. 我想問這個問題.. 我想在程式執行時..在一個TEdit上輸入之後按Enter.. 然後Tab的Focus也就是那個虛線的框框..自動跳到確定的Button上.. 這樣我只要再按一次Enter就好..而不用再去動滑鼠.. 我現在做法就是在Edit1的OnKeyPress事件中判斷是不是Enter按下.. 但是我不知道要怎麼把Tab的Focus移到Button.. 游標始終停在Edit1裡閃爍.. 請問該怎麼辦阿..教教我.. 我翻了好多文章了..找不到.. 而且我也搜尋不到..因為我也不太知道要搜尋什麼key word.. 只好貼文章求救了.. 發表人 - Gemi0305 於 2003/12/20 23:23:43
vittel
一般會員


發表:13
回覆:14
積分:5
註冊:2003-09-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-20 19:21:35 IP:140.114.xxx.xxx 未訂閱
引言: 新手發問請多指教.. 我想問這個問題.. 我想在程式執行時..在一個TEdit上輸入之後按Enter.. 然後Tab的Focus也就是那個虛線的框框..自動跳到確定的Button上.. 這樣我只要再按一次Enter就好..而不用再去動滑鼠.. 我現在做法就是在Edit1的OnKeyPress事件中判斷是不是Enter按下.. 但是我不知道要怎麼把Tab的Focus移到Button.. 游標始終停在Edit1裡閃爍.. 請問該怎麼辦阿..教教我.. 我翻了好多文章了..找不到.. 而且我也搜尋不到..因為我也不太知道要搜尋什麼key word.. 只好貼文章求救了..
阿..自問自答..剛post完才想到..我不是用了Focus這個字眼.. 怎麼沒用這個字搜尋.. 結果一搜尋下果然找到了.. 原來就是用Form下有一個ActiveControl.. 將他設為你想要的元件就好了..例如..
 
void __fastcall TForm::Edit1KeyPress(TObject *Sender, char &Key)
{
    if(AnsiString(Key)=="\r"){
        ActiveControl=Button1;
    }
}
原來這麼簡單..如果寫得不好請多指教.. 如果板主覺得我太豬頭就砍掉好了..
CuteBabyBoy
初階會員


發表:18
回覆:97
積分:48
註冊:2003-07-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-22 09:17:20 IP:218.167.xxx.xxx 未訂閱
您可以使用 Button1->SetFocus(); void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { Button1->SetFocus(); } //--------------------------------------------------------------------------- 而 ActiveControl 是當我的畫面有很多元件時...去判斷此時誰得到 Focus 的方式. 例 if(ActiveControl == Edit1) { } else if(ActiveControl == Edit2) { }
foxrabbit
一般會員


發表:11
回覆:16
積分:5
註冊:2003-11-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-22 21:48:37 IP:203.67.xxx.xxx 未訂閱
這個是只要你按下enter它就會往下跳一格,不管是button or edit,你參考看看 void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key) { if( (Key == VK_RETURN) && (CheckBox1->Checked == true)) { Key=0; // swallow the key here Perform(WM_NEXTDLGCTL,0,0); // focus next control } }
CuteBabyBoy
初階會員


發表:18
回覆:97
積分:48
註冊:2003-07-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-12-23 09:33:21 IP:218.167.xxx.xxx 未訂閱
引言: 這個是只要你按下enter它就會往下跳一格,不管是button or edit,你參考看看 void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key) { if( (Key == VK_RETURN) && (CheckBox1->Checked == true)) { Key=0; // swallow the key here Perform(WM_NEXTDLGCTL,0,0); // focus next control } }
Dear foxrabbit 當您在用 FormKeyPress Event 時 , 必須 Focus 在 Form 上,可是當Form 上有其他類似 TEdit ( 會得到 Focus 的元件) 時,Focus 就很難回到 Form 上,所以像您所說的 "會往下跳一格" ,我想..應該會失效吧... 如果有誤解的地方...歡迎來討論~~~ ^^
CuteBabyBoy
初階會員


發表:18
回覆:97
積分:48
註冊:2003-07-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-12-23 09:41:46 IP:218.167.xxx.xxx 未訂閱
Dear foxrabbit    我參考您的做法...寫以下的範例...這應該是您想要表達的吧...^^    
 
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
        Edit1->OnKeyPress = EditKeyPress ;
        Edit2->OnKeyPress = EditKeyPress ;
        Edit3->OnKeyPress = EditKeyPress ;
}
//---------------------------------------------------------------------------    void __fastcall TForm1::EditKeyPress(TObject *Sender, char &Key)
{
        if( (Key == VK_RETURN)  )
        {
                Key=0; // swallow the key here
                Perform(WM_NEXTDLGCTL,0,0); // focus next control
        }
}
//---------------------------------------------------------------------------
系統時間:2024-05-16 9:39:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!