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

醒目你的輸入界面--控件顏色熱追蹤 -- 作者:Rogue_xu

 
rogue
一般會員


發表:2
回覆:2
積分:0
註冊:2003-02-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-29 20:54:18 IP:218.16.xxx.xxx 未訂閱
這裡只是一個思路,實際應用中還是要做完善,請自行測試! 數據庫軟件輸入界面設計中,經常是會放一些DBEidt,DBGrid,DBXXXX等等數據庫控件放在FORM上,供用戶輸入資料,但是如果欄目較多,用戶一面要看稿一面又要看電腦,很容易找不到光標現在是在哪個欄位裡了. 如果能實現,當進入控件時,其顏色改為較深的醒目顏色,離開後又恢復白色,則用戶在輸入資料時就會非常容易找到當前的焦點! 這個問題,我思考了很久,以前一直是想著攔截系統消息的辦法來實現,但是到後來最終沒有完成,也看過一位CODER的代碼,哈,他是寫好一個通用過程,然後在每個FORM裡面手動的連接,哈,我才不想這麼干呢,誰叫程序都是懶人呢! 好了,說到正題,幾行代碼解決的方法! unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, StdCtrls ; type TForm1 = class(TForm) procedure NewActiveControlChange(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCreate(Sender: TObject); private OldControl: TWinControl;//用來存放上次的控件 { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses typinfo;//一定得加, {$R *.dfm} procedure TForm1.NewActiveControlChange(Sender: TObject); begin //有人寫信來問,如果不想在某個窗口中哂么耸录绾巫?br /> //第一種方法 //if Screen.ActiveForm=MainForm then exit; //第二種方法(用Name或是Caption或Hnit等等,靈活哂?) //if Screen.ActiveForm.name=‘XXX‘ then exit; //第三種方法(tag值),設置為1,則不用此事件 //if Screen.ActiveForm.Tag=1 then exit; if Assigned(OldControl) then //看存不存在上次的控件,如果有恢復其顏色 begin //是否存在顏色屬性 if GetPropInfo(OldControl, ‘Color‘) <> nil then SetPropValue(OldControl, ‘Color‘, clWhite); end; //把現在的ActiveControl保存連接到OldControl中 OldControl:=Screen.ActiveControl; //看看當前的焦點控件是否有COLOR屬性並設置 if GetPropInfo(Screen.ActiveControl, ‘Color‘) <> nil then SetPropValue(Screen.ActiveControl, ‘Color‘, clInfoBK); end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin //有人忘記寫如下語句,關閉程序時會死,加上這一句即可 //在MDI的主程序中這樣寫我沒測試,不知會不會出錯, //如出錯,你就把它改在Destory事件中好了! Screen.OnActiveControlChange := nil; //下班之前要記得把電腦關掉,要不然會著火的喔 end; procedure TForm1.FormCreate(Sender: TObject); begin Screen.OnActiveControlChange := AppEvents1ActiveControlChange; //把你寫好的事件連接到SCREEN上去,這裡是關鍵 end; end. 好了,看了上面的三五行代碼,相信菜鳥都搞得明白了,再不明白的話,就給我寫郵件吧:rogue_xu@sina.com 還有,最近我想寫一個電子文檔,把我開發C/S結構的數據庫程序的所有技巧與經驗一點一點的敘述出來,當然全書是在一個全面的實例的基礎上敘述的,所以屆時您將不僅得到一本書,更能得到一份源碼!對於初學者,您想開發數據庫程序(C/S),那麼您要的都將會在這裡! 但這還只是個想法,還得看我工作的情況,如果有空!另外您的回復和鼓勵也是我的動力!
系統時間:2024-11-28 0:42:15
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!