關於setfocus... |
尚未結案
|
albert0917
一般會員 發表:5 回覆:4 積分:1 註冊:2004-01-08 發送簡訊給我 |
|
qoo1234
版主 發表:256 回覆:1167 積分:659 註冊:2003-02-24 發送簡訊給我 |
http://oldlook.experts-exchange.com/Programming/Programming_Languages/Delphi/Q_20707266.html 自行修改你要的效果(目前是:非焦點,無3D顯示效果)
unit StealthyEdit; interface uses Windows, Messages, SysUtils, Classes, Controls, StdCtrls,Forms; type TStealthyEdit = class(TEdit) private { Private declarations } procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER; procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; procedure CMEnter(var Message: TCMEnter); message CM_ENTER; procedure CMExit(var Message: TCMExit); message CM_EXIT; protected { Protected declarations } public { Public declarations } constructor Create(AOwner: TComponent); override; published { Published declarations } end; procedure Register; implementation constructor TStealthyEdit.Create(AOwner: TComponent); begin // Create with no focus inherited Create(AOwner); BorderStyle:=bsNone; end; procedure TStealthyEdit.CMMouseEnter(var Message: TMessage); begin inherited; BorderStyle:=bsSingle; end; procedure TStealthyEdit.CMMouseLeave(var Message: TMessage); begin inherited; // Only change the border style if we DO NOT HAVE focus if (GetFocus <> Handle) then BorderStyle:=bsNone; end; procedure TStealthyEdit.CMEnter(var Message: TCMEnter); begin inherited; Perform(WM_KILLFOCUS, 0, 0); BorderStyle:=bsSingle; PostMessage(Handle, WM_SETFOCUS, 0, 0); PostMessage(Handle, EM_SETSEL, 0, -1); end; procedure TStealthyEdit.CMExit(var Message: TCMExit); begin inherited; BorderStyle:=bsNone; end; procedure Register; begin RegisterComponents('Stealthy', [TStealthyEdit]); end; end.網海無涯,學無止境! |
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi: 你可以將控制背景的程式碼寫在 OnEnter 與 OnExit 事件中
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; Edit8: TEdit; Edit9: TEdit; Edit10: TEdit; Edit11: TEdit; Edit12: TEdit; procedure FormCreate(Sender: TObject); procedure Edit1Exit(Sender: TObject); procedure Edit1Enter(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; OriginalColor : TColor; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin OriginalColor := Form1.Color; end; procedure TForm1.Edit1Exit(Sender: TObject); begin Form1.Color := OriginalColor; end; procedure TForm1.Edit1Enter(Sender: TObject); var FColor : TColor; begin IF Sender.ClassNameIs('TEdit') THEN BEGIN CASE TEdit(Sender).TabOrder OF 0 : FColor := clMaroon; 1 : FColor := clGreen; 2 : FColor := clOlive; 3 : FColor := clNavy; 4 : FColor := clPurple; 5 : FColor := clTeal; 6 : FColor := clGray; 7 : FColor := clSilver; 8 : FColor := clRed; 9 : FColor := clLime; 10 : FColor := clYellow; 11 : FColor := clBlue; ELSE FColor := OriginalColor; END; Form1.Color := FColor; END; end; end.其中,Edit1 ~ Edit12 的 OnEtner 事件皆為 Edit1Enter, OnExit 事件皆為 Edit1Exit -------------------------------- 小弟才疏學淺,若有謬誤請不吝指教 --------------------------------
------
Fishman |
albert0917
一般會員 發表:5 回覆:4 積分:1 註冊:2004-01-08 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |