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

控制焦點的轉移

尚未結案
XaioBin
一般會員


發表:2
回覆:2
積分:0
註冊:2005-04-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-18 15:09:57 IP:218.16.xxx.xxx 未訂閱
在表單有三個Edit,Edit1、Edit2、Edit3;當Edit1輸入內容為某個特定值時,按TAB遊標直接跳過Edit2,跑到Edit3。我把override SetFocusedControl函數,實作如下: if (Control = Edit2)and (TEdit(Control) = ‘’) then BEGIN ActiveControl := Edit3; Control := Edit3; END; inherited SetFocusedControl(Control); 但是現在輸入接收框是Edit3,但遊標卻在Edit2上。 多謝!!!
speedup
資深會員


發表:19
回覆:259
積分:280
註冊:2003-07-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-18 15:29:43 IP:220.135.xxx.xxx 未訂閱
試試 
 
inherited SetFocusedControl(Control);
if (Control = Edit2)and (TEdit(Control) = ‘’) then
BEGIN
  //ActiveControl := Edit3; 拿掉
  //Control := Edit3;拿掉
  Edit3.SetFocus;
END;    
混心雜欲 棄修身~唉
------
唉~
XaioBin
一般會員


發表:2
回覆:2
積分:0
註冊:2005-04-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-04-18 15:46:15 IP:218.16.xxx.xxx 未訂閱
问题已经解决了,以下两方法即可! function TForm1.SetFocusedControl(Control: TWinControl): Boolean; begin if (Control = Edit2)and (TEdit(Control).Text='') then BEGIN Control := Edit3; PostMessage(Edit2.Handle,WM_KILLFOCUS,0,0); PostMessage(Edit3.Handle,WM_SETFOCUS,0,0); END; Result := inherited SetFocusedControl(Control);//缺省处理 end; 这样也可以的, if (Control = Edit2) and (TEdit(Control).Text = '') then BEGIN Control := Edit3; SetActiveWindow(Application.Handle); END; inherited SetFocusedControl(Control); 發表人 - XaioBin 於 2005/04/18 22:13:36
tiao
一般會員


發表:11
回覆:19
積分:6
註冊:2005-02-01

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-20 13:25:25 IP:218.14.xxx.xxx 未訂閱
用SetFocus
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-04-20 14:05:26 IP:210.65.xxx.xxx 未訂閱
Sorry !! 插一下花    在 Edit1 的 OnExit 事件上加入下列程式碼即可
procedure TForm1.Edit1Exit(Sender: TObject);
begin
  if TEdit(Sender).Text = '' then // 自行指定特定值
    Edit2.SetFocus
  else
    Edit3.SetFocus;
end;
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
XaioBin
一般會員


發表:2
回覆:2
積分:0
註冊:2005-04-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-04-20 14:50:39 IP:218.16.xxx.xxx 未訂閱
引言: Sorry !! 插一下花 在 Edit1 的 OnExit 事件上加入下列程式碼即可
procedure TForm1.Edit1Exit(Sender: TObject);
begin
  if TEdit(Sender).Text = '' then // 自行指定特定值
    Edit2.SetFocus
  else
    Edit3.SetFocus;
end;
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ---------------------------------- < face="Verdana, Arial, Helvetica"> 因為在我做的系統中有很多類似的要控制的表單,所以就寫在父表單中 .就不需要重複寫!
系統時間:2024-05-18 4:11:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!