醒目你的輸入界面--控件顏色熱追蹤 -- 作者:Rogue_xu |
|
rogue
一般會員 發表:2 回覆:2 積分:0 註冊:2003-02-27 發送簡訊給我 |
這裡只是一個思路,實際應用中還是要做完善,請自行測試! 數據庫軟件輸入界面設計中,經常是會放一些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),那麼您要的都將會在這裡! 但這還只是個想法,還得看我工作的情況,如果有空!另外您的回復和鼓勵也是我的動力!
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |