# Native Code > برنامه نویسی در Delphi > محیط توسعه (IDE) دلفی > سوال: چه دستوری بنویسم که کل event handler  برای تمام DBEdit ها یک کار را انجام دهند؟

## ali_abbasi22145

سلام

 چه دستوری بنویسم که کل event handler مثلا MouseMove  ها برای تمام DBEdit ها یک کار را انجام دهند؟
یعنی یکی یکی برای هر کل DBEdit ها ننویسم مثلا : 

procedure TDynamicForm.First_nameMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
  First_name.Hint := First_name.Text;
end;

----------


## hadisalahi2

باید از پارامتر Sender برای این کارها استفاده کنی
و همچنین میتونی از یک حلقه for برای نسبت دادن پروسیجر ها استفاده کنی
مثلا اینطوری


for 1 :=0 to form1.controlscount-1 do
if form1.controls[i] is tedbedit then
Tdbedit(Form1.controls[i]).onmouseMove:=First_nameMouseMove;

----------


## ali_abbasi22145

سلام 
مرسی چک کردم خطا می دهد!
لطفا  یک برنامه ساده دلفی کنید و attach کنید اینجا:
فکر کنم اینجا نوشته هاش درهم برهم شده

----------


## ali_abbasi22145

اگر منظورتون اينه كار نمي كند

  for i:=0 to  DynamicForm.ControlCount -1 do
  if DynamicForm.Controls[i]is TDBEdit then
   begin
    TDBEdit(DynamicForm.Components[i]).OnMouseMove := First_nameMouseMove;
   end;

----------


## ابوالفضل عباسی

سلام
نمیدونم چرا انقدر سختش میکنید؟
اگر قراره همه ی dbedit ها یک کار انجام دهند مثلا در onclick یکی از dbedit ها یک فرمان بنویسید،بعد در قسمت event بقیه dbedit ها روی مثلث کوچیکه بزنید،تا لیستی بیاید و در آن لیستonclick آن dbedit رو پیدا کنید مثلا:
در dbedit1 یک فرمان نوشته ام.
در آن event یک dbedit2 روی مثلث کوچیکه انتخاب میکنم و onclickdbedit1 رو پیدا میکنم.
حالا dbedit2 هم فرمان dbedit1 رو انجام میدهد.

فقط اگر فرمان برای هر dbedit جداگانه باید انجام بشود باید از اسم کامپوننت component[i].name استفاده شود.

----------


## mm26363@yahoo.co.uk

از evenhandlerها نیز میتونی استقاده کنی

----------


## hadisalahi2

> اگر منظورتون اينه كار نمي كند
> 
>   for i:=0 to  DynamicForm.ControlCount -1 do
>   if DynamicForm.Controls[i]is TDBEdit then
>    begin
>     TDBEdit(DynamicForm.Components[i]).OnMouseMove := First_nameMouseMove;
>    end;


چه خطایی میده لطفا خطا رو بنویس به ببینم مشکل کجاست

----------


## hadisalahi2

> سلام
> نمیدونم چرا انقدر سختش میکنید؟
> اگر قراره همه ی dbedit ها یک کار انجام دهند مثلا در onclick یکی از dbedit ها یک فرمان بنویسید،بعد در قسمت event بقیه dbedit ها روی مثلث کوچیکه بزنید،تا لیستی بیاید و در آن لیستonclick آن dbedit رو پیدا کنید مثلا:
> در dbedit1 یک فرمان نوشته ام.
> در آن event یک dbedit2 روی مثلث کوچیکه انتخاب میکنم و onclickdbedit1 رو پیدا میکنم.
> حالا dbedit2 هم فرمان dbedit1 رو انجام میدهد.
> 
> فقط اگر فرمان برای هر dbedit جداگانه باید انجام بشود باید از اسم کامپوننت component[i].name استفاده شود.


ما سختش نمیکنیم عزیزم
اینی که شما میگی در موقع طراحی کاربرد داره نه اجار

اگه فرضا من صد تا کنترل داشته باشم به نظرت میتونم بیام یکی یکی اینا رو انتخاب کنم و بعد بهشون پروسیجر نسبت بدم؟

این کدی که نوشتم هیچ مشکلی نداره و خودم صد ها بار ازش استفاده کردم
پس اگه خطایی داره مربوط به سینتکس هستش

بفرمایید تا مشکل رو برطرف کنیم

----------


## hadisalahi2

> از evenhandlerها نیز میتونی استقاده کنی


شما بفرمایید یعنی چه؟

----------


## ابوالفضل عباسی

ایشون به سوال خودشون جواب میده.
روش اقا هادی کاملا درسته . و امتحان شده است.ولی من برای edit هایی که عملیات های مشابه ای دارند از پروسیجر استفاده میکنم.

----------

