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

Form是否有當ActiveControl改變時的事件?

尚未結案
jeffreck
高階會員


發表:247
回覆:340
積分:197
註冊:2003-01-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-14 22:33:30 IP:61.70.xxx.xxx 未訂閱
請教各輩 Form是否有當ActiveControl改變時的事件? 如Form中有多個Control當目前Focus改變時 Form是否有事件可以用 因未來會有數量不等的Control 所以為了方便不在Control的 OnEnter中做 謝謝各位輩,如不行也請告知
hagar
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-14 22:52:59 IP:202.39.xxx.xxx 未訂閱
試試 TScreen.OnActiveControlChange 事件,  或在 Application.OnIdle 事件中來判斷, 參考: http://www.q3.nu/trucomania/truco.cgi?215&ing
   private
     { Private declarations }
     procedure Esperando(Sender: TObject; var Done: Boolean);     var
   Form1: TForm1;
   GuardaColor:TColor;
   AnteriorControlActivo:TWinControl;    procedure TForm1.Esperando(Sender: TObject; var Done: Boolean);
 begin
   if AnteriorControlActivo <> Form1.ActiveControl then
   begin
     {Aqui si hemos cambiado de control activo}         {Restauramos el color del control del que hemos salido}
     with TWinControl(AnteriorControlActivo) do
     begin
       Brush.Color:=GuardaColor;
       Repaint;
     end;         {Guardamos el color del control en el que hemos entrado}
     with TWinControl(Form1.ActiveControl) do
     begin
       GuardaColor:=Brush.Color;
       Brush.Color:=clRed;
       Repaint;
     end;
     AnteriorControlActivo := Form1.ActiveControl;
   end;
   Done:=TRUE;
 end;     procedure TForm1.FormActivate(Sender: TObject);
 begin
   AnteriorControlActivo:=Form1.ActiveControl;
   with TWinControl(Form1.ActiveControl) do
     GuardaColor:=Brush.Color;
   Application.OnIdle:=Esperando;
 end;
--- 屬於那自己生命的歌 不管是什麼顏色
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-16 14:37:36 IP:211.23.xxx.xxx 未訂閱
hagar 的方式會動, 不過可以寫得更簡潔一些..     
procedure TForm1.MyHandler(Sender: TObject);
var
  cBuf : array[0..MAX_PATH] of char ;
  wc : TWinControl ;
begin
  wc:=screen.ActiveControl ;
  if wc=nil then
    exit ;      if wc.Name='' then
    begin
    if wc.GetTextLen>0 then
      begin
      wc.GetTextBuf(cBuf,sizeof(cBuf)) ;
      Caption:=strpas(cBuf) ;
      end ;
    end
  else
    Caption:=wc.Name ;    end;    procedure TForm1.Button1Click(Sender: TObject);
begin
  Screen.OnActiveControlChange:= MyHandler;
end;
 
...Aquarius
------
水瓶男的blog: http://791909.blogspot.com
系統時間:2024-05-11 15:50:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!