# Native Code > برنامه نویسی در Delphi > مباحث عمومی دلفی و پاسکال >  روش استفاده از بارکد خوان (طوری که هرجای فرم بارکد خوانده شد عمل کند)

## Delphi7_love

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

----------


## Felony

برای این کار باید پیغام های مربوط به صفحه کلید رو بررسی کنید ( مثلا WM_KeyDown ) ، مشکل اینجاست که بارکد خوانتون مثل صفحه کلید عمل میکنه و اگر قرار باشه یه روال سراسری براش نوشته بشه کار صفحه کلید رو هم مختل میکنه ، یعنی کاربر ممکنه تو یه Edit بخواد با صفحه کلید مثلا نامش رو وارد کنه ولی چون برنامه رو به پیغام های صفحه کلید حساس کردید برنامه فکر میکنه بارکدخوان داره این کار رو میکنه و متن وارد شده رو تو Edit مورد نظر شما وارد میکنه !

در هر صورت باید با ترفندی این مشکل رو رفع کنید ، مثلا Message Handler رو برای اشیاء خاصی بنویسید یا ... 

برای تعریف Message Handler به صورت سراسری هم باید یک Message Handler بنویسید و اون رو به رویداد OnMessage شئ Application اختصاص بدید ، تعریف زیر رو به قسمت Private فرمتون اضافه کنید :
    Procedure MyMessage(var Msg: TMsg; var Handled: Boolean);
و به صورت زیر کدش رو بنویسید :
procedure TForm1.MyMessage(var Msg: TMsg; var Handled: Boolean);
begin
  if Msg.message= WM_KEYDOWN then
  begin
    Edit1.Text:= Edit1.Text+ Chr(Msg.wParam);
    Msg.wParam:= 0;
  end;
end;
و در رویداد OnCretae فرم برنامتون :
Application.OnMessage:= MyMessage;

----------

