線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1230
推到 Plurk!
推到 Facebook!

請問如何捉到目前Focus的元件名稱

尚未結案
yx_huang77
一般會員


發表:46
回覆:64
積分:22
註冊:2004-03-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-07 11:16:00 IP:220.142.xxx.xxx 未訂閱
請問如何取得目前Focus的元件類別
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-07 13:25:59 IP:203.73.xxx.xxx 未訂閱
引言: 請問如何取得目前Focus的元件類別
yx_huang77 你好: 試試這篇文章中的做法是否可行? src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=10003806&CC=223734"> -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
yx_huang77
一般會員


發表:46
回覆:64
積分:22
註冊:2004-03-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-10 08:57:00 IP:220.142.xxx.xxx 未訂閱
我的意思是我想在FormKeyPress去寫段程式控制按enter鍵時會跳到下一個欄位,但遇到TDBMemo時是換行而不是跳到下一個欄位,謝謝
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-05-10 10:57:34 IP:211.23.xxx.xxx 未訂閱
將form->KeyPreview設為true, 然後:
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
        if(Key == VK_RETURN)
        {
                this->Perform(WM_NEXTDLGCTL,0,0);
        }
}
------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D -------------------------------
yx_huang77
一般會員


發表:46
回覆:64
積分:22
註冊:2004-03-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-05-10 11:13:12 IP:220.142.xxx.xxx 未訂閱
不好意思問題放錯地方了 我是用DELPHI寫的 DELPHI的語法要如何寫呢
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-05-10 13:27:24 IP:211.23.xxx.xxx 未訂閱
一樣將form的KeyPreview屬性設為true, 在FormKeyDown中寫入:
if Key == VK_RETURN then
begin
     Self.Perform(WM_NEXTDLGCTL,0,0);
end;    
------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D ------------------------------- 發表人 - anpino 於 2004/05/10 13:50:06
yx_huang77
一般會員


發表:46
回覆:64
積分:22
註冊:2004-03-19

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-05-10 14:10:48 IP:220.142.xxx.xxx 未訂閱
anpino這樣子好像沒有做到偵測類別如果是tdbmemo的功能
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-05-10 15:54:46 IP:211.23.xxx.xxx 未訂閱
引言: anpino這樣子好像沒有做到偵測類別如果是tdbmemo的功能
你不是要用enter鍵代替tab鍵嗎? 原始引用如下:
引言: 我的意思是我想在FormKeyPress去寫段程式控制按enter鍵時會跳到下一個欄位,但遇到TDBMemo時是換行而不是跳到下一個欄位,謝謝
偵測類別很簡單, 自己在FormKeyDown多加一個判斷不就好了。 或者用下面這個方法:
if Key == VK_RETURN then
begin
  int:x;
  x = self.ActiveControl.ComponentIndex;
  x  ;
  try
    TEdit(self.components[x]).SetFocus;
  catch
    TEdit(self.components[0]).SetFocus;
    x = 0;
end;    
------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D -------------------------------
yx_huang77
一般會員


發表:46
回覆:64
積分:22
註冊:2004-03-19

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-05-10 16:35:28 IP:220.142.xxx.xxx 未訂閱
我是在tdbedit要用enter鍵代替tab鍵但在Tdbmemo時他是換行鍵而不是tab鍵
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-05-10 17:40:36 IP:211.23.xxx.xxx 未訂閱
引言: 我是在tdbedit要用enter鍵代替tab鍵但在Tdbmemo時他是換行鍵而不是tab鍵
原來如此, 請試試:
if Key == VK_RETURN then
begin
  int:x;
  x := self.ActiveControl.ComponentIndex;// 取得目前component的Index
  if ( Components[x] <> TDBMemo) then   // 若不是TDBMemo則跳到下一個component.
  begin
     Self.Perform(WM_NEXTDLGCTL,0,0);
  end;
end;    
------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D ------------------------------- 發表人 - anpino 於 2004/05/10 17:48:23
系統時間:2024-11-23 2:14:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!