المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : كيفية إجبار الـ Edit على عدم السماح بالكتابة إلا من جهاز البار كود.


Prof.Adnan
27-04-2008, 01:55 AM
السلام عليكم ورحمة الله وبركاته.

أما بعد :

لدي Edit وإريد إجبارها على عدم السماح بالكتابة من الكيبورد....

ويمكن الكتابة فيها بواسطة الباركود أي أن الباركود يستطيع وضع النص الذي يقرأه فيها....


و المستخدم لا يستطيع الكتابة في الـ Edit.....



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

أخوكم Prof.Adnan.

B.M.AbdelAziZ
27-04-2008, 06:30 AM
لكي تمنع الكتابة في Edit1 يكفي عدم تفعيله
Edit1.Enabled := False;

او يمكنك تعطيل المفاتيح من خلال الحدث KeyPress وتلغي المفتاح المكتوب
key:=#0;

وتكتب بEdit1 برمجيا باستخدام المكون الذي تستخدمه للتعامل مع البركود

والسلام عليكم

Prof.Adnan
27-04-2008, 01:44 PM
السلام عليكم ورحمة الله وبركاته.

أما بعد :

أخي في الله DeltaAziz جزاك الله كل خير.

أنا لا استخدم أي مكون للقرآءة من الباركود.....


الباركود يقوم بالكتابة تلقائياً ضمن الـ Edit.....


هل توجد طريقة, ؟؟؟

أنا فكرت بأنني أستطيع أن أضع شرط كالتالي في الحدث KeyPress : في حال كان الجهاز الذي يكتب في الـ Edit هو الباركود اسمح له بالكتابة وإلا Key=#0;....


وفي حال كان غير ممكن الرجاء إرفاق المكون مع شرح له ...




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

أخوكم Prof.Adnan.

مهدي
27-04-2008, 01:51 PM
و عليكم السلام و رحمة الله

بالإضافة إلى ما ذكره أخي عزيز يمكنك استعمال الإجراء Abort


procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
abort;
end;

ويمكن الكتابة فيها بواسطة الباركود أي أن الباركود يستطيع وضع النص الذي يقرأه فيها....
هذه لم أفهمها

Prof.Adnan
27-04-2008, 02:27 PM
السلام عليكم ورحمة الله وبركاته.

أما بعد :

أخي في الله ....


لدي Edit....

أضع عليها مؤشر الماوس ثم أقرأ الباركود فيقوم جهاز الباركود بوضع النص الذي قرأه فيها (في الـ Edit)....

ولكن بنفس الوقت يستطيع المستخدم العادي أن يكتب فيها....


الذي ****ه الآن أن فقط أن المستخدم لا يستطيع الكتابة فيها....

بينما جهاز الباركود يستطيع الكتابة فيها........



وأنا لا استخدم أي مكون للقرآءة من الباركود.....


الباركود يقوم بالكتابة تلقائياً ضمن الـ Edit.....


هل توجد طريقة ؟؟؟

أنا فكرت بأنني أستطيع أن أضع شرط كالتالي في الحدث KeyPress :

في حال كان الجهاز الذي يكتب في الـ Edit هو الباركود اسمح له بالكتابة وإلا Key=#0;....


وفي حال كان غير ممكن الرجاء إرفاق المكون مع شرح له ...




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

أخوكم Prof.Adnan.

merouane
27-04-2008, 03:24 PM
و عليكم السلام و رحمة الله تعالى و بركاته

إذا كان لديك التطبيق أرفقه

لأنه في حالتك سنبقى في الخيال ثم لا نتيجة

لا بد ان تذكر المكونات، وهل هذا تطبيق يرفق مع جهاز مثل الذي يوجد في السوبر ماركت؟

لأنني في الأول لم أفهم ما تريد ، ثم عندما اجابك لأخ عبد العزيز قلت لا تستعمل أي مكون، إذا ماذا تستعمل؟

ألا تظن ان هذه المعلومة أهم ما في السؤال؟

من اقوال ابى بكر الصديق رضى الله عنه:

اذا استشرت فاصدق الحديث تصدق المشورة

تحياتي :)

Prof.Adnan
27-04-2008, 03:43 PM
أخي في الله....

من اقوال ابى بكر الصديق رضى الله عنه:

اذا استشرت فاصدق الحديث تصدق المشورة
أنا لا أكذب عليك هذا هو الكود اللذي أجرب عليه مرفق....


معلومة لك للإستفادة :
جهاز الباركود الذي يستخدم الـ USB لا يأتي معه أي برنامج خاص أو أي تعريف خاص....

وبمجرد أن تركبه على جهاز الكومبيوتر يتعرف على أنه كيبورد...

ويكفي أن تضع المؤشر في أي محرر نصوص أو أي عنصر يتيح الإدخال النصي وتقوم بالقراءة بواسطة جهاز الباركود يقوم جهاز الباركود بوضع النص الذي قرأه في محرر النصوص أو العنصر الذي يتيح الإدخال النصي وكأنك تكتبه كتابةةةةة.

وليس كما يقول البعض أنه يقوم بحفظها بالحافظة ومن ثو يقوم بعميلة Pest لها في محرر النصوص أو العنصر الذي يتيح الإدخال النصي.....



لأنني في الأول لم أفهم ما تريد ، ثم عندما اجابك لأخ عبد العزيز قلت لا تستعمل أي مكون، إذا ماذا تستعمل؟
لدي Edit وإريد إجبارها على عدم السماح بالكتابة من الكيبورد....

ويمكن الكتابة فيها بواسطة الباركود أي أن الباركود يستطيع وضع النص الذي يقرأه فيها....


و المستخدم لا يستطيع الكتابة في الـ Edit.....
ومن هذا الكلام نستنتج أنني أستخدم فقط Edit.



ألا تظن ان هذه المعلومة أهم ما في السؤال؟
تم وضع المعلومة.




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

أخوكم Prof.Adnan.

B.M.AbdelAziZ
27-04-2008, 06:31 PM
هذه ليست طريقة للتعامل مع الباركود
ابحث عن SDK الخاص به او اطلبه من الشركة لكي يمكنك ان تبرمجه
و السلام عليكم ورحمة الله

مهدي
27-04-2008, 06:58 PM
وبمجرد أن تركبه على جهاز الكومبيوتر يتعرف على أنه كيبورد...
هذا يعني أن البرنامج سيقوم بالتفريق بين key حسب نوعية لوحة المفاتيح

أي أن البرنامج لا يقوم بتنفيذ الأوامر التي تأتي من لوحة المفاتيح الأولى و هي لوحة المفاتيح الإفتراضية و يقوم بتنفيذ أوامر لوحة المفاتيح الثانية و هي الجهاز القاريء لشفرة المعرّف (Barcode)

merouane
27-04-2008, 08:06 PM
و عليكم السلام و رحمة الله تعالى و بركاته

يا أخي لا أكذِّبك ، لا أنت و لا أي أحد أتناقش معه

و المعنى كان : أذكر كل المعطيات لتحصل على أحسن مشورة أي قيمة و فائدة المشورة نسبية مرتبطة بكمية و دقة المعطيات

المهم يا أخي .. لفائدتي وفائدة الأعضاء أذكر لنا اسم المنتج ربما يجد أحدهم ما ينفعنا كلنا

تحياتي :)

Prof.Adnan
29-04-2008, 04:50 PM
قارئ الباركود من نوعية OPTICON ....


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

أخوكم Prof.Adnan.

Prof.Adnan
29-04-2008, 05:17 PM
هذه صفحة المنتج في موقع الشركة...


http://www.opticon.com/uploads/LargeImage/opr2001_largeimage.jpg

http://www.opticon.com/Cabled-1D-laser--Laser-Barcode-Scanner--01022410024002.aspx



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



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

أخوكم Prof.Adnan

B.M.AbdelAziZ
29-04-2008, 06:02 PM
القاعدة العامة:
كل جهاز يوصل بالحاسب يمكن برمجته بالحصول على SDK من الشركة المصنعة له
بالSDK تجد كل المعلومات الكافية والشافية للتعامل مع ذلك الجهاز
عليك بالأ تصال بالشركة وطلب منها SDK الذي غالبا ما لايكون مجاني
-
طبعا هناك طرق اخرى مثل الهندسة العكسية...

والسلام عليكم ورحمة الله

Prof.Adnan
29-04-2008, 06:12 PM
كيف يمكننا معرفة الجهاز الذي يكتب في Edit معينة...؟؟؟


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

أخوكم Prof.Adnan

مهدي
30-04-2008, 12:15 AM
إليك هذا الكود الذي تستطيع أن تتعرف به على خصائص لوحة المفاتيح


function KeyBoardType: string;
begin
case GetKeyboardType(0) of
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'
else
Result := 'Unrecognized keyboard type';
end;
end;

function KeyBoardSubype: Integer;
begin
Result := GetKeyboardType(1);
end;

function NumberOfFunctionKeys: string;
begin
case GetKeyboardType(3) of
1: Result := '20';
2: Result := '12/18';
3: Result := '10';
4: Result := '12';
5: Result := '10';
6: Result := '24';
7: Result := 'Hardware dependent'
else
Result := 'N/A';
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
label1.Caption := Format('Keyboard Type: %s', [KeyBoardType]);
Label2.Caption := Format('Keyboard Subtype: %d', [KeyBoardSubype]);
Label3.Caption := Format('Keyboard Subtype: %s', [NumberOfFunctionKeys]);
end
لكن أحسن أن تبحث على SDK الذي ذكره الأخ عزيز.

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

مهدي
02-05-2008, 09:54 AM
قم بتجريب المثال التالي

المثال في المرفقات

wesamnet
07-12-2008, 03:36 PM
للأسف لا يتوفر لدي برنامج 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 أرقام أو أحرف
أتمنى أني وفقت لتوصيل المعلومة وشكرا

معمر محسن
10-12-2008, 11:08 PM
عندي عكس هذه المشكلة وهي اني **** ان امنع الباركود من الادخال وليس المستخدم حيث ان اجهزة الباركود usb تقوم بادخال الرقم في اي محرر نصوص مفتوح بمجرد مرور الباركود امامها فاحيانا يكون الادخال ليس في الخانةالمطلوب ادخال الرقم بها بل احيانا يكون جدول بيانات مفتوح فتدخل القيمة بالخطأ باحد الحقول وتغير القيمة الموجودة به اصلا فكيف يمكن التحكم بمتى يسمح بقبول القيم المدخلة من قبل الباركود ومتى يتم رفضها
واعتقد ان القول بان قارئ الباركود مثل لوحة المفاتيح وعلى المستخدم ان يكون منتبها اين ومتى يقوم بعملية الادخال هو قول خاطئ لان دور المبرمج حماية المستخدم من الاخطاء المحتملة