delphi4arab منتديات دلفي للعرب

نسخة كاملة : كيفية إجبار الـ Edit على عدم السماح بالكتابة إلا من جهاز البار كود.
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
قارئ الباركود من نوعية OPTICON ....


والله ولي التوفيق.

أخوكم Prof.Adnan.
هذه صفحة المنتج في موقع الشركة...


[صورة: opr2001_largeimage.jpg]

http://www.opticon.com/Cabled-1D-laser--...24002.aspx



**** من الأخ DeltaAziz شرح العمليات وجزاه الله كل خير....



والله ولي التوفيق

أخوكم Prof.Adnan

القاعدة العامة:
كل جهاز يوصل بالحاسب يمكن برمجته بالحصول على SDK من الشركة المصنعة له
بالSDK تجد كل المعلومات الكافية والشافية للتعامل مع ذلك الجهاز
عليك بالأ تصال بالشركة وطلب منها SDK الذي غالبا ما لايكون مجاني
-
طبعا هناك طرق اخرى مثل الهندسة العكسية...

والسلام عليكم ورحمة الله
كيف يمكننا معرفة الجهاز الذي يكتب في Edit معينة...؟؟؟


والله ولي التوفيق

أخوكم Prof.Adnan
إليك هذا الكود الذي تستطيع أن تتعرف به على خصائص لوحة المفاتيح

كود :
[B]function [/B]KeyBoardType: [B]string[/B]; [B]begin case [/B]GetKeyboardType(0) [B]of [/B]1: Result := 'IBM PC/XT or compatible (83-key) keyboard'; 2: Result := 'Olivetti "ICO" (102-key) keyboard'; 3: Result := 'IBM PC/AT (84-key) or similar keyboard'; 4: Result := 'IBM enhanced or compatible'; 5: Result := 'Nokia 1050 and similar keyboards'; 6: Result := 'Nokia 9140 and similar keyboards'; 7: Result := 'Japanese keyboard' [B]else [/B]Result := 'Unrecognized keyboard type'; [B]end[/B]; [B]end[/B]; [B]function [/B]KeyBoardSubype: Integer; [B]begin [/B]Result := GetKeyboardType(1); [B]end[/B]; [B]function [/B]NumberOfFunctionKeys: [B]string[/B]; [B]begin case [/B]GetKeyboardType(3) [B]of [/B]1: Result := '20'; 2: Result := '12/18'; 3: Result := '10'; 4: Result := '12'; 5: Result := '10'; 6: Result := '24'; 7: Result := 'Hardware dependent' [B]else [/B]Result := 'N/A'; [B]end[/B]; [B]end[/B]; [B]procedure [/B]TForm1.Button1Click(Sender: TObject); [B]begin [/B]label1.Caption := Format('Keyboard Type: %s', [KeyBoardType]); Label2.Caption := Format('Keyboard Subtype: %d', [KeyBoardSubype]); Label3.Caption := Format('Keyboard Subtype: %s', [NumberOfFunctionKeys]); [B]end[/B]
لكن أحسن أن تبحث على SDK الذي ذكره الأخ عزيز.

فإن لم يكن لديه SDK فلدي فكرة سنقوم بتجريبها.
قم بتجريب المثال التالي

المثال في المرفقات
للأسف لا يتوفر لدي برنامج delphi على جهازي حاليا ولكني قمت بحل مثل هذه المشكلة من قبل بشكل بسيط جدا
من المعروف أن سرعة إدخال الأرقام عن طريق الباركود ريدير لا تتعدى الثانية الواحدة
و من الواضح أن البرنامج الذي تتعامل معه يتعامل مع قواعد بيانات لها طول معين للباركود
المهم الطريقة عليك إتباع التالي :
عليك أن تكتب عند الحدث editchange دالة لتحديد الوقت الحالي مثلا
كود :
timenow := now ;
حيث يتم تعريف المتغير timenow من نوع ttime بشكل عام
ثم يتم تفعيل timer لتأكد من طول مربع النص
كود :
procedure timer1.ontimer begin if (length (edit1.text) <= 5) and (secoundbetween(timenow,now)<1) then edit1.text := '' end;
طبعا أنا أفترضت في هذا المثال أن طول الباركود لا يقل عن 5 أرقام أو أحرف
أتمنى أني وفقت لتوصيل المعلومة وشكرا
عندي عكس هذه المشكلة وهي اني **** ان امنع الباركود من الادخال وليس المستخدم حيث ان اجهزة الباركود usb تقوم بادخال الرقم في اي محرر نصوص مفتوح بمجرد مرور الباركود امامها فاحيانا يكون الادخال ليس في الخانةالمطلوب ادخال الرقم بها بل احيانا يكون جدول بيانات مفتوح فتدخل القيمة بالخطأ باحد الحقول وتغير القيمة الموجودة به اصلا فكيف يمكن التحكم بمتى يسمح بقبول القيم المدخلة من قبل الباركود ومتى يتم رفضها
واعتقد ان القول بان قارئ الباركود مثل لوحة المفاتيح وعلى المستخدم ان يكون منتبها اين ومتى يقوم بعملية الادخال هو قول خاطئ لان دور المبرمج حماية المستخدم من الاخطاء المحتملة
الصفحات : 1 2