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

SetFocus Problem

尚未結案
GDMichael
一般會員


發表:27
回覆:36
積分:12
註冊:2004-10-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-26 10:25:05 IP:203.185.xxx.xxx 未訂閱
如果我有個control想setfocus,那就 Ctrl.SetFocus... 但是如果這個control可能存在不同版面或Tab出現,然而,我沒有方法知道它在那一頁,因為我用FormCount去找control,那麼怎麼辦?如果沒有set回tab的page的話就會有問題,請問怎麼解決?
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-26 10:41:51 IP:202.39.xxx.xxx 未訂閱
是 TPageControl 嗎? 是的話試試如下的方式:
var
  tab: TTabSheet;
begin
  // 假設要 SetFocus 的元件是 Edit1
  tab := TTabSheet(Edit1.Parent);
  PageControl1.ActivePage := tab; // 切換到 Edit1 所在的 TabSheet
  Edit1.SetFocus;  
end;
GDMichael
一般會員


發表:27
回覆:36
積分:12
註冊:2004-10-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-26 10:59:09 IP:203.185.xxx.xxx 未訂閱
如果我有些control是under一個page control,之後又再under另外一個page control或是有些control是沒有under任何pagecontrol,那怎麼辦?
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-26 19:25:59 IP:202.39.xxx.xxx 未訂閱
看這樣行不行(假設有兩層 TPageControl 的話):
var
  pg1, pg2: TPageControl;
  tab1, tab2: TTabSheet;
begin
  // 假設要 SetFocus 的元件是 Edit1
  if not (Edit1.Parent is TForm) then // 若 Edit1 不是在 TForm 上
  begin
    tab1 := TTabSheet(Edit1.Parent); // Edit1 是在哪個 TabSheet 上
    pg1 := TPageControl(tab.Parent); // 這個 TTabSheet 是在哪個 TPageControl 上
    if pg1.Parent is TTabSheet // 這個 TPageControl 是在一個 TTabSheet 上
    begin
      tab2 := TTabSheet(pg1.Parent); // 找到最下層的 TTabSheet 
      pg2 := TPageControl(tab2.Parent);
      pg2.ActivePage := tab2;
    end;
    pg1.ActivePage := tab1;
  end;
  Edit1.SetFocus;  
end;
系統時間:2024-05-02 18:16:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!