PDA

View Full Version : ورود به Edit و تغییر رنگ



aradsystem
جمعه 17 مهر 1388, 21:47 عصر
با سلام به همه دوستان.

چطوری میشه همه ادیت های برنامه رو کدی براش نوشت که با ورود به ادیت رنگ ادیت تغییر کنه و بعد از خروج از ادیت هم رنگش به حالت پیش فرض برگرده. یعنی میخوام onEnter و onExit رو برای همه ی ادیت ها ننویسم چون خیلی زمان میبره.

merced
شنبه 18 مهر 1388, 05:53 صبح
براي يكي بنوبيس

if Sender is TEdit then
TEdit(Sender).Color := clYellow


و رويداد OnEnter همه رو به اين تخصيص بده

amir_ir
شنبه 18 مهر 1388, 19:55 عصر
[quote=merced;824392]

if Sender is TEdit then
TEdit(Sender).Color := clYellow

سلام
میشه لطف کنید و کمی توضیح بدید که sender چی هست ؟ و اینجا به چی اشاره میکنه؟
ممنون میشم

Felony
شنبه 18 مهر 1388, 20:36 عصر
Sender به شئ که این کد رو فراخوانی میکنه اشاره میکنه ، یعنی مثلا وقتی شما وارد Edit1 شدید Sender = Edit1 میشه و عملیات مورد نظر رو روی این شئ انجام میده .

aradsystem
شنبه 18 مهر 1388, 23:01 عصر
با تشکر. بازم باید برای همه ادیت ها این کار انجام بشه. روشی راحت تر از این وجود نداره؟ مثلا فقط برای خود فرم دستوراتی بنویسیم؟

Felony
شنبه 18 مهر 1388, 23:40 عصر
با تشکر. بازم باید برای همه ادیت ها این کار انجام بشه. روشی راحت تر از این وجود نداره؟ مثلا فقط برای خود فرم دستوراتی بنویسیم؟

تمام ادیت ها رو انتخاب کنید و تو رویداد یکی از اونها کدهای مورد نظرتون رو بنویسید ، به صورت خودکار رویداد این ادیت به بقیه ادیت ها اختصاص پیدا میکنه .

Mahmood_M
یک شنبه 19 مهر 1388, 02:40 صبح
علاوه بر توضیحات دوستان ...
ابتدا دو Procedure به شکل زیر در قسمت Public فرم تعریف کرده و کد مورد نظر رو در هر کدوم بنویسید ( یکی برای OnEnter و یکی هم برای OnExit ) :

...
private
{ Private declarations }
public
procedure MyOnEnter(Sender : TObject);
procedure MyOnExit(Sender : TObject);
{ Public declarations }
end;

var
MainFrm: TMainFrm;

implementation

{$R *.dfm}

procedure TMainFrm.MyOnEnter(Sender : TObject);
begin
(Sender as TEdit).Color := clSilver;
end;

procedure TMainFrm.MyOnExit(Sender : TObject);
begin
(Sender as TEdit).Color := clWindow;
end;

حالا در رویداد OnCreate فرم به این صورت Procedure های نوشته شده رو به Event های OnEnter و OnExit ادیتها اختصاص بدید :
procedure TMainFrm.FormCreate(Sender: TObject);
var
I : Integer;
begin
for I := 0 to MainFrm.ComponentCount - 1 do
begin
if Components[I].ClassName = 'TEdit' then
begin
(Components[I] as TEdit).OnExit := MyOnExit;
(Components[I] as TEdit).OnEnter := MyOnEnter;
end;
end;
end;

این هم یک مثال : لینک دانلود (http://nabegheh.parsaspace.com/Examples/Set_Procedure.rar)

موفق باشید ...