الأحد، 18 نوفمبر 2012

أداة جلب و إستخراج مفتاح ( CLÉ ) الحساب الجاري ( CCP ) خاص بالجزائريين


السلام عليكم و رحمة الله .. في هذا الموضوع إن شاء الله سأضع لكم برامج بسيط جداً يقوم بجلب مفتاح أو CLÉ

لأي حساب جاري CCP ( خاص بالجزائريين )

البرمجة تمت بــ Embarcadero RAD Studio XE2 بلغة الــ Delphi إستخدمت مكونات

Dynamic Skin Form

-------------------------------------------------------

مع بعض الصور للبرنامج .. أولاً إيقونة البرنامج


واجهة البرنامج الرئيسية مع تجريب جلب مفتاح لحساب ما ..


البرنامج كما ذكرت بسيط .. فقط علينا كتابة رقم حساب جاري CCP و هو يقوم مباشرة بجلب المفتاح أو CLÉ الخاص به

و عند غلق البرنامج سيتم تلقائياً إنشاء ملف CCP.TXT يحمل المعلومات المدخلة ( CCP & CLÉ )

 

صورة لأهم إجراء في البرنامج


أي نقطة غير مفهومة مستعد لشرحها لكم

لتحميل البرنامج



عند تحميل الملف تنتج لك الملفات التالية


قم أولاً بتثبيت الخطوط الموجودة في المجلد ( Polices )

حتى تضمن العمل بالبرنامج على أكمل وجه كوني إستخدمت خط Ubuntu .. مدة البرمجة كانت أقل من 8 دقائق

------------------------------------------------------------------------



مدونة ديزاد سوفت التقنية


الجمعة، 2 مارس 2012

قم بجعل إتصالك بقاعدة البيانات ديناميكياً Connection to the database dynamically


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

أخص بالذكر قاعدة بيانات Access مع Delphi

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

ستواجه مشكل في الإتصال .. لذا في هذا الدرس إن شاء الله لن يكون هذا مشكل لك

الطريقة التقليدية للإتصال بقاعدة البيانات Access قمت بشرح فيديو لها


الآن .. لنقم بفتح مشروع جديد في Delphi .. و نضع المكونات الضرورية للإتصال


في حدث  للفورم نضع الكود التالي

الخاص بالإتصال


------------------------------------------------------------------------------------------

procedure TForm1.FormCreate(Sender: TObject);
var passwd:string;
begin
  passwd:='123456';
  adoconnection1.ConnectionString:=
     'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;'+
     'Data Source='+extractfilepath(application.ExeName)+'\Test.mdb'+
     ';Mode=Share Deny None;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";'+
     'Jet OLEDB:Database Password='+passwd+
     ';Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;'+
     'Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password='+passwd+
     ';Jet OLEDB:Create System Database=False;'+
     'Jet OLEDB:Encrypt Database=False;'+
     'Jet OLEDB:Don''t Copy Locale on Compact=False;'+
     'Jet OLEDB:Compact Without Replica Repair=False;'+
     'Jet OLEDB:SFP=False;';
  adoconnection1.Connected:=true;
  AdoTable1.TableName:='Table1';
  Adotable1.Active:=true;
end;


------------------------------------------------------------------------------------------


Data Source='+extractfilepath(application.ExeName)+'\Test.mdb'

هنا قم بوضع ملف قاعدة البيانات في نفس مسار الملف التنفيذي

لو وضعت ملف قاعدة البيانات داخل مجلد إجعل Data Source كما يلي

Data Source='+extractfilepath(application.ExeName)+'\Dossier\Test.mdb'

النتيجة بعد تشغيل البرنامج


تم الإتصال بنجاح

إلى هنا ينتهي هذا الدرس البسيط حول جعل الإتصال بقاعدة البيانات ديناميكياً في Delphi





مدونة ديزاد سوفت التقنية

الخميس، 23 فبراير 2012

شرح ضغط الملفات في Delphi



السلام عليكم و رحمة الله .. أهلاًبكم أعزائي زوار مدونة ديزاد سوفت التقنية

في هذا الموضوع إن شاء الله سأشرح لكم إحدى أسهل الطرق لضغط الملفات في Delphi

سنعتمد كلياً على مكون خاص يسمح لنا بإنشاء ملفات بصيغة Zip

أولاً علينا تحميل المكون ZipForge الذي يتوافق مع نسخة Delphi الخاصة بك



ZipForge v.6.00 Personal Edition
EnvironmentFile Size
Delphi 42.460 MbDownload
Delphi 52.463 MbDownload
Delphi 62.679 MbDownload
Delphi 72.704 MbDownload
Delphi 20052.688 MbDownload
Delphi 2006, C++ Builder 20062.909 MbDownload
Delphi 2007, C++ Builder 20072.911 MbDownload
Delphi 2009, C++ Builder 20092.717 MbDownload
Delphi 2010, C++ Builder 20102.748 MbDownload
Delphi XE, C++ Builder XE2.747 MbDownload
Delphi XE2, C++ Builder XE23.384 MbDownload
C++ Builder 42.720 MbDownload
C++ Builder 52.754 MbDownload
C++ Builder 63.008 MbDownload
Turbo Delphi and C++ Builder2.909 MbDownload
D4-D2010, XE, XE2, CB4-CB2010, Turbo Delphi and Turbo C++ Builder13.852 MbDownload



بعد التحميل قم بتركيب المكون .. ( يثبت كأي برنامج )

قم الآن بفتح مشروع جديد في Delphi و ضع المكون الجديد كما يضهر لك في الصورة


نحتاج إلى زر كي نقوم بتجريب عمليت الضغط


دوبل كليك على الزر كي نقوم بكتابة الكود الخاص به

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



الآن قم بإنشاء ملف نصي txt يحمل الإسم Test و يكون مساره في D مباشرة


جرب الآن البرنامج


كما تلاحظ تم إنشاء ملف مضغوط Zip إنطلاقاً من الملف النصي

يمكنك التعديل و التطوير على الكود حتى يلبي غرضك بالضبط .. كأن يقوم بتسمية الملف بتاريخ اليوم ...

هذا رابط سيفيدكم





إلى هنا ينتهي هذا الموضوع .. إلى درس جديد







مدونة ديزاد سوفت التقنية


الأربعاء، 11 يناير 2012

شرح تخزين الصور في قاعدة بيانات Access



السلام عليكم و رحمة الله .. درسنا لهذا اليوم هو عن تخزين الصور ذات الصيغة bmp داخل قاعدة بيانات Access 

و سأتطرق إن شاء الله في درس آخر عن تخزين أي صيغة مهما كانت ( jpeg - png - .... )

 إذا ً لنقم بفتح مشروع جديد في الدلفي 

http://i.imgur.com/xhcrm.png

ثم نقوم بربطه بقاعدة بيانات Access تحتوي على الحقول ( ID - Nom - Prénom - Image )

لا تنسو الحقل Image يأخذ Le Type OLE Opject

http://i.imgur.com/SyfSv.png

لم لا يعرف طريقة ربط Delphi مع قاعدة بيانات Access الشرح هنا

الآن بعد عملية الربط نفعل الشيئ الموضح في الفيديو ..


هنا قمت بسحب عناصر ADOTable إلى الفورم مباشرة

يصبح الفورم كما يلي

http://i.imgur.com/xZxpi.png

ملاحظة : لاداعي لسحب ID لأنو هو المسؤول عن ترقيم السجلات و هو ترقيم تلقائي

الآن نضيف المكون OpenPictureDialog في الخاصية Filter لهذا المكون نغيرها كما يلي

http://i.imgur.com/gdRu4.png

هذا من أجل جعل المستخدم يختار الصور بصيغة bmp فقط

لنقم الآن بإضافة زر جديد أما المكون DBImage كي نقوم بتحميل الصور من خلاله

و المكون DBGrid و DBNavigator ليصبح تصميم الفورم النهائي بهذا الشكل

http://i.imgur.com/kX5Hu.png

الآن إلى صلب موضوعنا هو كيف يمكن تحميل الصورة ؟ إليكم الإجابة

دوبل كليك على الزر و نضع الكود التالي

http://i.imgur.com/9VgbZ.png

----------------------------------------------------------------------------------

                                    procedure TForm1.Button1Click(Sender: TObject);
                                    begin

                                    If OpenPictureDialog1.Execute then
                                    DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);

                                    end;

----------------------------------------------------------------------------------


هنا نصل إل نهاية موضوعنا أتمنى أن يكون مفهوم للجميع و لم لديه إضافة فل يتفضل 

و لأي أسئلة أنا في الخدمة

هذا فيديو لنتيجة ما كنا نقوم به لم يريد المشاهدة




لتحميل ملفات المشروع كاملاً


أو الملف التنفيذي فقط


و ضروري تحميل قاعدة البيانات






مدونة ديزاد سوفت التقنية

السبت، 7 يناير 2012

شرح التعامل مع المكون ComboBox في مشاريع قواعد البيانات


السلام عليكم و رحمة الله .. لاحظت أن العديد يستفسر عن طريقة للتعامل مع المكون ComboBox 

في مشاريع قواعد البيانات كيف نربط حقل معين من جدول بهذا المكون و العديد من الأمور

 الأخرى الضرورية في هذا الدرس إن شاء الله لن يكون هذا مشكل لك  سنضع مثال و نقوم ببرمجته مع

بعض من الصفر كي نفهم

 حضروالأدوات لازمة لنقم بفتح مشروع جديد في الدلفي

http://i.imgur.com/kpkid.png

ثم نضع به المكونات

spSkinEdit1 الخاص بكتابة الإسم و اللقب

spSkinComboBox1 الخاص لتحديد المدينة

spSkinSpeedButton1 من أجل إظافة إسم مدينة جديد

spSkinSpeedButton2 من أجل تأكيد عملية التسجيل

spSkinGroupBox1 من أجل التنظيم

spSkinGroupBox2 من أجل التنظيم

spSkinLabel1 هو المسؤول عن كتابة اللتي قبل Edit

spSkinLabel2 هو المسؤول عن كتابة اللتي قبل ComboBox

spSkinScrollBar1 نقوم برطه مع DBGrid كي يسمح لنا بالإنتقال للأسفل و أعلى السجلات

spSkinDBGrid1 لعرض البيانات المسجلة

-----------------------------------------

إستعملت مكتبة المكونات Dynamic Skin Form v12 لمن لا يملكها فل يتوجه هنا

لأنو سيجد صوربة في الفهم إذا إستعمل مكونات الدلفي الإفتراضية و أنصح الجميع بالعمل بهذه المكتبة
-----------------------------------------

نحصل على الصورة التالية .. حافظو على هذا التنسيق

http://i.imgur.com/4XaSv.png

نقوم بوضع المكونات لازمة للإتصال بقاعدة البيانات لمن لا يعرف فل يراجع الدرسين



و لم لا يعرف طريقة وضع الصور في المكونات مثل ما وضعت أنا في Button هناك فل يراجع دروس الفيديو

لنقم بإعدادات قاعدة البيانات

نحتاج إلى جدولين فقط الجدول الأول يحمل الإسم Persons و الجدول الثاني City

نحتاج في الجدول الأول إلى 3 حقول

 http://i.imgur.com/itMuA.png

الحقل الأول ID هو ترقيم تلقائي للسجلات

Person يكون Text نحتاجه لكتابة معلومات الشخص إسم و لقب

City نفس الشيئ يكون Text هو لتسجيل إسم المدينة

نحتاج في الجدول ثاني إلى حقلين فقط

http://i.imgur.com/ZI3Wc.png

الحقل الأول ID هو ترقيم تلقائي للسجلات

City نفس الشيئ يكون Text هو لتسجيل إسم المدينة


إذاً لنكمل .. بعد عمل إتصال بقاعدة البيانات و ربط DBGrid .. نحصل على التالي

http://i.imgur.com/hNkVN.png

الآن لنقم بإظافة فورم جديد للمشروع .. تابع الطريقة من القائمة

http://i.imgur.com/aZc08.png

نختار المشروع

http://i.imgur.com/mfhqs.png

ثم

http://i.imgur.com/zzylG.png

هكذا تم إنشاء فورم جديد .. لنضع في هذا الفورم الجديد ما يلي 

spSkinGroupBox1

spSkinEdit1

و نغير إسم الفورم إلى Ajouter une nouvelle ville أو بالعربي إضافة مدينة حديدة

كما في الصورة

http://i.imgur.com/G8FTh.png

حالياً إنتهينا من التصميم فقط .. لننتقل الآن إلى الجزئ البرمجي من الموضوع

الفورم الأول //

نضيف أسفل  http://i.imgur.com/sjpUH.png  ما يلي .. http://i.imgur.com/oucmu.png

هذا من أجل ربط الفورم الأول بالثاني و أتيح إستعمال مكونات الفورم الثاني من الفورم الأول

نذهب الآن للمكون spSkinSpeedButton2 الخاص بإعتماد التسجيل نجعله معطلاً و هذا بتغيير الخاصية

http://i.imgur.com/11AGh.png

الآن لمكون spSkinEdit1 الخاص بكتابة الإسم و اللقب في حدث OnChange نكتب الكود التالي

http://i.imgur.com/pUeaT.png

تعمدت وضع صورة للكود كي أجبركم على إعادة كتابته ( هذه أحسن طريقة للتعلم )

الآن إلى المكون spSkinComboBox1 الخاص لتحديد المدينة أيضاً في حدث OnChange نكتب الكود التالي

http://i.imgur.com/bjaHR.png

الفائدة من الإجرائين السابقين هي منع المستخدم من التسجيل حتى تكون كل المعلومات مكتوبة أي

الــ Edit ليس فارغ و ComboBox ليس في الوضع -1 .. أضن مفهوم

الآن لننتقل للمكون spSkinSpeedButton1 من أجل إظافة إسم مدينة جديد في إجراء OnClick نكتب

http://i.imgur.com/NDwiK.png

كي يتم إظهار الفورم الثاني

الآن لننتقل للمكون  spSkinSpeedButton2 من أجل تأكيد عملية التسجيل أيضاً في إجراء OnClick نكتب

http://i.imgur.com/TniMF.png

هذا الكود الخاص بإدخال البيانات من المكونينspSkinEdit1 وspSkinComboBox1  إلى قاعدة البيانات

ثم يقوم بتفيغ محتوى spSkinEdit1 و يجعل المكون spSkinComboBox1 في الموضع -1 و يعطل الزر

الآن نعود للمكون spSkinComboBox1 لكن هذه المرة في حدث OnEnter نكتب الكود التالي

http://i.imgur.com/vCnIY.png

في هذا الإجراء أحتاجكم تركزو معي قليلاً .. سأشرحه سطر سطر ( زنقة زنقة ههه )

عرفت متغير ( i ) من نوع عدد صحيح Integer هو من أجل إستعماله في الحلقة

*** spSkinComboBox1.Items.Clear;

نقوم بمسح كل الموجود داخل المكون spSkinComboBox1 

*** City.First;

هنا نقوم بإرجاع المأشر على أول تسجيل

*** for i:=0 to City.RecordCount-1 do

هنا شكلت حلقة تكرارية تبدأ من 0 إلى غاية آخر تسجيل - 1

RecordCount هو يمثل قيمة صحيحة = عدد السجلات في الجدول

داخل الحلقة لدينا

*** if CityCity.IsNull = False then

يعني إذا كانت القيمة داخل الحقل City في الجدول City غير معدومة إفعل

*** spSkinComboBox1.Items.Insert(i,CityCity.Value);

هنا يقوم بملئ سطر من المكون spSkinComboBox1 بتلك القيمة

*** City.Next;

هنا للإنتقال للسجل التالي 

و هاكذا حتى تنتهي الحلقة التكرارية حينها نجد أن المكون spSkinComboBox1 قد تم ملؤه بقم من الجدول

هذا كل شيئ في الفورم الأول .. لننتقل إلىا لفورم الثاني

في حدث OnClose للفورم نكتب الكود التالي

http://i.imgur.com/g4oEe.png

هو مأجل تفريغ القيمة الموجودة داخل spSkinEdit1

الآن في حدث OnKeyPress للمكون spSkinEdit1 نكتب الكود التالي

http://i.imgur.com/UWSGV.png

هو من أجل تسجيل أسماء المدن الجديدة داخل قاعدة البيانات و ذلك عند الضغط على زر Entrée

لكنه يتحقق في البداية إذا كانت القيمة داخل spSkinEdit1 معدومة أم لا إذا كانت غير معدومة ينفذ و إما لا




إنتهينا الآن من الشيئ البرمجي و من المثال كلياً ..


 لا حظتم كيف يسهل المكون ComboBox على المستخدم العمل بل من الضروري وضع حقل المدينة بهذا الشكل


و أيضاً ينصح بوضعه في العديد من الأماكن فقط وضفو هذا الشرح و لن تجدو أي صعوبة


إن شاء الله


 الآن هذا فيديو لهذا البرنامج البسيط لمن يريد مشاهدة ما كنا نعمل عليه



و هذا رابط تحميل ملفات المشروع كاملة 


أو الملف التنفيذي فقط


و هذا ملف قاعدة البيانات