• الإعلانات

    • فيصل الحربي

      تسجيل عضوية جديدة في المنتدى   01/31/2016

      السلام عليكم ورحمة الله وبركاته  عزيزي العضو الجديد :  حاليا رسالة الإيميل لتأكيد صحة إيميلكم تذهب للبريد العشوائي ( جاري حل المشكلة )  فإذا لم تجد رسالة التحقق من إيميلكم في صندوق الوارد لديكم إتجه للبريد العشوائي ( JUNK)  وقم بتفعيل إشتراككم من هناك   

ORWA

الخبراء المعتمدون
  • عدد المشاركات

    1,375
  • تاريخ الانضمام

  • تاريخ اخر زياره

كل شيء نشر بواسطة ORWA

  1. صنع موقع ويب بالدلفي DataSnap/REST HTML5/jQuery

    الشكر للأستاذ زكيري على المحتوى القيم , فعلا سيستفيد من المعلومات الكثيرين الآن وبالمستقبل. أطيب التمنيات بالتوفيق
  2. وحدات مكتبة أدوات دلفي الداعمة للغة العربيةلتحسين دعم بيئة دلفي للغة العربية 1- تحسين اتجاه الكثير من المكونات لتصبح من اليمين إلى اليسار يشمل مكونات مثل : - ToolBar- TreeView- PageControl- DateTimePicker- StatusBar- ListView- الخ ..2- إظهار صناديق الرسائل باللغة العربية يشمل تعريب الأزرار وضبط إتجاه الرسائل بشكل صحيح :3- تحسين دعم ActionBars - يشمل تحسين ضبط اتجاه القوائم الرئيسية والقوائم المنبثقة الخاصة بالمكونات Actionmanager - إضافة إلى تعريب نافذة تخصيص القوائم وأشرطة الأدوات 4- تحسين تعريب بعض النصوص القياسية وبعض الرسائل التي تظهر في زمن التشغيل بعض النصوص مثل أسماء الأشهر والتواريخ والوحدات وغير ذلك وبعض الرسائل التي يظهرها البرنامج عند التشغيل :_______________عروة علي عيسى http://www.orwah.net http://www.sy-it.com
  3.   Arabic Delphi VCL Units   وحدات مكتبة أدوات دلفي الداعمة للغة العربية     - دعم صناديق الرسائل العربية - تحويل مكونات هامة إلى اليمين  - تعريب الكثير من الرسائل التي قد تظهر في زمن التشغيل - لايحتاج استخدامها لإضافة أي كود _______________ طريقة التشغيل :  فقط قم بارفقات ملفات الوحدات التي يستخدمها برنامجك وضعها بنفس المجلد مع بقية ملفات برنامجك  وسيتم التعامل معها اليا من دون تغير اي سطر في الكود   _______________ البيئات المدعومة حاليا : - Delphi 10.1 Berline     _______________ المشاكل المعروفة : - ToolBar DrawingStyle = dsNormal :  يتسبب بانقلاب الصور , يمكن تلافي ذلك باختيار  DrawingStyle = dsGradient      _______________ روابط :   - سيتم تطوير هذه الملفات بشكل دوري وتوفير نسخ احدث منها لمتابعة تطوير الملفات : من هنا GitHub   - للحصول على آخر نسخة من الملفات : حمل من هنا   - للمزيد من المعلومات والشروحات : من هنا Wiki   _______________ عروة علي عيسى  www.orwah.net  www.sy-it.com
  4. هنا يمكنك أن تجد بعض الكتب الإلكترونية المجانية عن دلفي : -------------------------------------------------------------------------------- - إسم الكتاب : Mastring Delphi7 - الوصف : كتاب شامل أكثر من رائع ينصح به لكل مستخدم . تأليف ماركو كانتو - الحجم : 20 MB - اللغة : English - رابط التحميل : http://www.podgoretsky.com/ftp/Docs/Delphi...0Delphi%207.chm - ملاحظات : الكتاب بتنسيق ملفات مساعدة متطورة وليس PDF . تمت إضافتة من قبل العضو : ORWA --------------------------------------------------------------------------------- - إسم الكتاب : Borland Delphi 7 Developer's Guide - الوصف : دليل المطورين مرجع مهم ينصح به لكل مستخدم 1113صفحة - الحجم : 6.82 Mb - اللغة : English - رابط التحميل : http://www.3asfh.com/books/Borland%20Delph...9;s%20Guide.rar - ملاحظات : تمت إضافتة من قبل العضو : php4sa --------------------------------------------------------------------------------- - إسم الكتاب : The Tomes of Delphi Win32 Core API Windows 2000 Edition - الوصف : كتاب رائع عن برمجة API , ينصح به للخبراء > 759 صفحة - الحجم : 6.6 MB لكن حجم الملف المضغوط 2..5 MB - اللغة : English - رابط التحميل : يبدو ان الرابط تعطل . على كل حال تستطيع ان تجدة في هذه الصفحة http://www.orwah.net/modules/mybooks/viewcat.php?cid=4 - ملاحظات : تمت إضافتة من قبل العضو : ORWA --------------------------------------------------------------------------------- - إسم الكتاب : Delphi6 Developers Guide - الوصف : , 1200 صفحة - الحجم : 9 MB - اللغة : English - رابط التحميل : http://awar.host.sk/D6DG.PDF - ملاحظات : إضغط بالزر الأيمن وأختر حفظ الهدف بإسم . تمت إضافتة من قبل العضو : ORWA --------------------------------------------------------------------------------- - إسم الكتاب : البرمجة الغرضية التوجه في دلفي - الوصف : , 54 صفحة - الحجم : 372KB - اللغة : العربيه - رابط التحميل : إضغط بالإيمن هنا , ثم حفظ الهدف بإسم - ملاحظات : سيتم تحميل نسخة كامله منه قريبا تمت إضافتة من قبل العضو : ORWA --------------------------------------------------------------------------------- - إسم الكتاب : ComponentWritersGuide - الوصف : دليل بناء أدوات ومكونات دلفي , 188 صفحة - الحجم : 2.13 Mb - اللغة : English - رابط التحميل : http://www.delphidevelopers.com/learnbooks...ritersGuide.pdf - ملاحظات : تمت إضافتة من قبل العضو : ORWA --------------------------------------------------------------------------------- - إسم الكتاب : DelphiLanguageGuide - الوصف : دليل لفهم لغة الدلفي بشكل عام 266 صفحة . - الحجم : 3 MB - اللغة : English - رابط التحميل : http://www.delphidevelopers.com/learnbooks...nguageGuide.pdf - ملاحظات : تمت إضافتة من قبل العضو : ORWA --------------------------------------------------------------------------------- - إسم الكتاب : Borland Delphi 4 in 21 Days - الوصف : - الحجم : 2.74Mb - اللغة : English - رابط التحميل : http://www.3asfh.com/books/delphi421days.zip - ملاحظات : تمت إضافتة من قبل العضو : php4sa --------------------------------------------------------------------------------- - إسم الكتاب : RaveDevGuide - الوصف : لتعلم إستخدام تقارير الـ RAVE المرفقة مع نسخ الدلفي الحديثة , 175 صفحة - الحجم : 1.18 Mb - اللغة : English - رابط التحميل : http://www.delphidevelopers.com/learnbooks...aveDevGuide.pdf - ملاحظات : تمت إضافتة من قبل العضو : ORWA --------------------------------------------------------------------------------- - إسم الكتاب : IntraWeb_Manual - الوصف : لتعلم كتابة تطبيقات ويب ديناميكية بإستخدام IntraWeb المرفقة مع D7 , 124 صفحة - الحجم : 1.15 Mb - اللغة : English - رابط التحميل : http://downloads.atozedsoftware.com/intraw...rawebManual.pdf - ملاحظات : تمت إضافتة من قبل العضو : ORWA --------------------------------------------------------------------------------- - إسم الكتاب : Delphi_Windows API - الوصف : توابع API ويندوز من خلال دلفي , كتاب جيد على شكل ملف مساعدة - الحجم : 1.39 Mb - اللغة : English - رابط التحميل : ftp://218.89.164.3/delphi/src/Delphi.Win32.Core.API.rar - ملاحظات : يفضل إستخدام برنامج تحميل .في حال لم تستطع تحميل الكتاب , راجع الموقع الأصلي له http://www.delphifans.com/SoftView/SoftView_132.html تمت إضافتة من قبل العضو : ORWA --------------------------------------------------------------------------------- - إسم الكتاب : Delphi_Threads - الوصف : كتاب لشرح التعامل مع المجاري المتعددة (Multi_Threading) من خلال دلفي , الحجم 320 KB - الحجم : 470 Kb - اللغة : English - رابط التحميل : http://www.delphidevelopers.com/learnbooks...phi_Threads.chm - ملاحظات : تمت إضافتة من قبل العضو : ORWA --------------------------------------------------------------------------------- - إسم الكتاب : ModeMaker_UserManual - الوصف : كتاب لتعليم محرر UML المرفق مع Delphi7 . صفحات 113 - الحجم : 470 Kb - اللغة : English - رابط التحميل : http://www.delphidevelopers.com/learnbooks...erManual620.pdf - ملاحظات : تمت إضافتة من قبل العضو : ORWA --------------------------------------------------------------------------------- - إسم الكتاب : Learning PASCAL - الوصف : - الحجم : 112 Kb - اللغة : English - رابط التحميل : http://www.3asfh.com/books/pascal_lessons.rar - ملاحظات : تمت إضافتة من قبل العضو : php4sa --------------------------------------------------------------------------------- - إسم الكتاب : O`Reillys Delphi in a Nutshell - الوصف : - الحجم : - اللغة : - رابط التحميل : http://aware.host.sk/Nutshell.rar - ملاحظات : تمت إضافتة من قبل العضو : php4sa ******** مجموعة كتب أخرى ********* - إسم الكتاب : eDirectory - الوصف : building eDirectory-Enabled Application Using Delphi : Low-Level - الحجم : 513 KB - اللغة : English - رابط التحميل : http://developer.novell.com/research/appno.../03/a020203.pdf - ملاحظات : تمت إضافتة من قبل العضو : ORWA --------------------------------------------------------------------------------- - إسم الكتاب : Pilot Application Dev - الوصف : Development of the Pilot Application in Delphi - الحجم : 19.7Kb - اللغة : English - رابط التحميل : http://www.cit.dk/COT/reports/reports/Case3/10/cot-3-10.pdf - ملاحظات : تمت إضافتة من قبل العضو : ORWA --------------------------------------------------------------------------------- - إسم الكتاب : Systems Biology Workbench - الوصف : Systems Biology Workbench .Delphi/Kylix Programmer’s Manual - الحجم : 241Kb - اللغة : English - رابط التحميل : http://www.sbw-sbml.org/sbw/docs/api/Delphi/DelphDoc.pdf - ملاحظات : تمت إضافتة من قبل العضو : ORWA --------------------------------------------------------------------------------- - إسم الكتاب : multi-dimensional arrays - الوصف : linking Delphi to S: memory management and multi-dimensional arrays - الحجم : 81Kb - اللغة : English - رابط التحميل : http://www.stats.uwo.ca/...../bravington/delphi-useful.pdf - ملاحظات : تمت إضافتة من قبل العضو : ORWA --------------------------------------------------------------------------------- - إسم الكتاب : Migrating D to K - الوصف :Migrating your Delphi™ 5 Projects to Kylix - الحجم : 855Kb - اللغة : English - رابط التحميل : http://community.borland.com/article/image...ing_delphi5.pdf - ملاحظات : تمت إضافتة من قبل العضو : ORWA --------------------------------------------------------------------------------- - إسم الكتاب : MTS_COM_Delphi - الوصف : Writing MTS and Com+ Component in Delphi - الحجم : 100Kb - اللغة : English - رابط التحميل : http://consulting.dthomas.co.uk/ooad_artic..._COM_Delphi.pdf - ملاحظات : تمت إضافتة من قبل العضو : ORWA --------------------------------------------------------------------------------- ملاحظة : لإضافة كتاب قم بالرد على هذة المشاركة وضع رابط الكتاب مع المعلومات السابقة . وسيقوم المشرف بعد ذلك بحذف المشاركة وإضافة المعلومات التي وضعتها إلى هذة الصفحة بعد تضمين إسمك في حقل "تمت إضافتة من قبل العضو : " . شكرا لمساعدتك في إغناء مكتبتنا .
  5. هنا سيتم جمع مجموعه من الأدوات والمكونات المميزة للغه دلفي يرجى أخذ مايلي بعين الحسبان : 1- تحميل الملف أفضل بكثير من وضع رابط له , لإن الروابط تتغير كثيرا 2- وضح شرح مبسط عن المكون 2- تفصيل النسخ التي يعمل عليها المكون مثلا D2..D7 3- يفضل وضع شفره المكون في حال توفرها
  6. مقدمة بورلاند دلفي 2005 (Borland Delphi 2005) هي آخر نسخة أصدرت من دلفي . معنية بتقديم "تطوير سريع للتطبيقات" من أجل نظام تشغيل ميكروسوفت ويندوز , ومنصه ميكروسوفت دوت نيت . بواسطة كل من لغتي - دلفي (من أجل كل من ويندوز 32 "Win 32" و دوت نيت ".Net 1.1" ) - سي شارب "C# " (من أجل .Net 1.1 فقط ) . فكرة عامه : تملك دلفي 2005 ثلاث شخصيات : - شخصيه Win32 بإستخدام لغة الدلفي المعروفه . خلف لدلفي 7 (Delphi 7) . - وشخصيتي .NET أخرتين : - الأولى تستخدم اللغه دلفي . خلف لدلفي 8 (Delphi 8) . - الثانيه تستخدم اللغه C# . خلف لسي شارب بيلدر (C#Builder 1.0) . كنتيجة فإن دلفي 2005 هي الخطوة التاليه لمجموع ثلاث منتجات من بورلاند من أجل بيئة RAD مناسبه لWin32 كماهي مناسبة ل.NET مزايا أساسيه : - الدعم لثلاث شخصيات مختلفة Delphi for Win32, Delphi for .NET و C#. كل ذلك من خلال بيئه تطوير (وتنقيح debugging) واحدة . - هجرة وتحويل سهلين من تطبيقات Win32 إلى تطبيقات .NET بواسطة نفس بيئة التطوير . - الدعم الكامل للغة الدلفي مع إضافه العديد من التحسينات مثل 1. multi-unit namespaces 2. for ... in ... do loops 3. inline functions 4. الخ ... والعديد من ميزات تحسين الكود لإبعد حد ممكن . - الدعم الكامل لـ ( WinForms, ASP.NET Web Forms بالإضافة إلى - VCL framework on .NET, and VCL for Win32 with) من خلال مصمم مرئي لبناء التطبيقات بالطريقة RAD التي عودتنا بورلاند عليها . - دعم الوصول المتغير الخصائص لقواعد البيانات (heterogeneous database access) بإستخدام ADO.NET Data Adapter وليس فقط BdpDataAdapter . وكذلك الأمر تطبيقات قواعد البيانات متعددة المراحل بإستخدام الأدوات الجديدة مثل مكونات DataSync, DataHub, RemoteServer و RemoteConnection . - دعم للتحليل (refactoring) لإعادة هيكله شفرتك المصدرية , وزيادة المحفوظيه وفرصه إعادة الإستخدام الناجح . - دعم إختبار الوحدات (unit testing) بإستخدام DUnit و NUnit , بإستخدام بيئة إختبار_الوحدة الرائعة من أجل مشاريع دلفي Win32 و دلفي .NET و C# وذلك يزيد نوعيه الكود بشكل كبير . - الدعم لـ Enterprise Core Objects II , ومنصه نمذجه أغراض UML مدمجة تملك دعم لقواعد البيانات (بإستخدام BDP " Borland Data Provider") والآن متاحة أيضا من اجل ASP.NET . - دعم لـ ASP.NET مع متحكمات قواعد بيانات للويب لتسهيل تصميم, تنفيذ , ونشر تطبيقات ويب قويه . - دعم لبرمجة الإصدارات و لبرمجة الفريق (version and team development) مع نسخ إحتياطي خاص وعرض للسيرة (history view) . بالإضافه إلى الدمج الإختياري مع StarTeam . - تدعم التكامل مع J2EE Enterprise JavaBeans (EJB) أو CORBA servers بواسطة حلول Janeva من أجل تطبيقات دلفي .NET و C# . Borland Delphi 2005 سنتحدث هنا قليلا عن التحسينات في دلفي 2005 , أولا بيئة التطوير المتكامله , ثم refactoring , ثم فحص الوحدات بإستخدام DUnit and NUnit , ثم التحسينات في قواعد البيانات والويب , دعم ALM , وأخيرا مترجم دلفي , تحسينات اللغه والتنقيح . 2.1 IDE يتبع ....
  7. مجموعة المشاريع الحالية : - إسم المشروع : الناطق الصوتي - الوصف : محرك Text To Speach - رابط المشروع : http://www.arabteam2000-forum.com/index.php?showtopic=51923 - ملاحظات : - فكرة المشروع من قبل العضو : --------------------------------------------------------------------------------- - إسم المشروع : O_Mailer - الوصف : برنامج بريد الكتروني (زبون) متكامل الميزات - رابط المشروع : http://www.arabteam2000-forum.com/index.ph...t=0#entry244044 - ملاحظات : المشروع مفتوح المصدر ومجاني , تستطيع المشاركة به - فكرة المشروع من قبل العضو : ORWA
  8. قسم المشاريع

    مشاريع من الأرشيف : --------------------------------------------------------------------------------- - إسم المشروع : مشروع من أول خطوة في قواعد البيانات - الوصف : مشروع جماعي مع الشرح المبسط لقاعدة بيانات تجارية (+UML) - رابط المشروع : http://www.arabteam2000-forum.com/index.php?showtopic=12704 - ملاحظات : - فكرة المشروع من قبل العضو :زكيري عبد العالي --------------------------------------------------------------------------------- - إسم المشروع : Arabic_Texts_Finder - الوصف : مكون جميل يحوي خيارات للبحث في النصوص العربية - رابط المشروع : http://www.arabteam2000-forum.com/index.php?showtopic=48026 - ملاحظات : مفتوح المصدر + مجاني , - فكرة المشروع من قبل العضو :ORWA --------------------------------------------------------------------------------- - إسم المشروع : Arabic_Man - الوصف : مكون لزيادة دعم دلفي للغة العربية - رابط المشروع : http://www.arabteam2000-forum.com/index.php?showtopic=47801 - ملاحظات : مفتوح المصدر + مجاني , - فكرة المشروع من قبل العضو :ORWA ملاحظة : يرجى لفت نظر المشرف في حال العثور على مشاريع من الأرشيف
  9. هنا يمكنك أن تجد بعض المواقع المهتمة بلغة دلفي : -------------------------------------------------------------------------------- - إسم الموقع : delphi.about - الوصف : موقع تعليمي شامل , يحوي الكثير من الدروس والمقالات - اللغة : English - رابط الموقع : http://delphi.about.com/ - ملاحظات - تمت إضافتة من قبل العضو : ORWA -------------------------------------------------------------------------------- - إسم الموقع : torry - الوصف : موقع ضخم وجميل , يعتبر من موارد الدلفي المهمة غني بالأدوات والمقالات والأمثلة - اللغة : English - رابط الموقع : http://www.torry.net/ - ملاحظات : ليست كل الأدوات الموجودة فيه مجانيه . - تمت إضافتة من قبل العضو :ORWA -------------------------------------------------------------------------------- - إسم الموقع : delphi.icm - الوصف : موقع أدوات جميل وظريف , يحوي مجموعة أدوات قيمة مفهرسه بطريقة منظمة جدا - اللغة : English - رابط الموقع : http://delphi.icm.edu.pl/ - ملاحظات : - تمت إضافتة من قبل العضو :ORWA -------------------------------------------------------------------------------- - إسم الموقع : delphi game dev - الوصف : مهتم ببرمجة الألعاب , يحوي بعض الدروس - اللغة : English - رابط الموقع : http://www.delphigamedev.com/ - ملاحظات : - تمت إضافتة من قبل العضو : php4sa -------------------------------------------------------------------------------- - إسم الموقع : jazar soft - الوصف : يحوي مجموعة من الأكواد - اللغة :English - رابط الموقع : http://www.jazarsoft.com/codebook/index.php - ملاحظات : - تمت إضافتة من قبل العضو : php4sa -------------------------------------------------------------------------------- - إسم الموقع : delphi3000 - الوصف : - اللغة : English - رابط الموقع : http://www.delphi3000.com - ملاحظات : - تمت إضافتة من قبل العضو :02/11/2004 -------------------------------------------------------------------------------- - إسم الموقع : planetsourcecode - الوصف : البلانيت سورس كود ... للمصادر المفتوحة - اللغة : English - رابط الموقع : http://www.planetsourcecode.com/ - ملاحظات : - تمت إضافتة من قبل العضو : 02/11/2004 -------------------------------------------------------------------------------- - إسم الموقع : swiss Delphi center - الوصف : - اللغة : English - رابط الموقع : http://www.swissdelphicenter.ch/en/index.php - ملاحظات : - تمت إضافتة من قبل العضو : 02/11/2004 -------------------------------------------------------------------------------- - إسم الموقع : Delphi basics - الوصف : - اللغة : English - رابط الموقع : http://www.delphibasics.co.uk - ملاحظات : - تمت إضافتة من قبل العضو : 02/11/2004 -------------------------------------------------------------------------------- - إسم الموقع : swiss torry - الوصف : النسخة السويسرية من موقع Torry - اللغة : English - رابط الموقع : http://swiss.torry.net - ملاحظات : - تمت إضافتة من قبل العضو : 02/11/2004 -------------------------------------------------------------------------------- - إسم الموقع : Delphi central - الوصف : - اللغة : English - رابط الموقع : http://www.delphi-central.com - ملاحظات : - تمت إضافتة من قبل العضو : 02/11/2004 -------------------------------------------------------------------------------- - إسم الموقع : delphizine - الوصف : مجلة معنية بلغة دلفي - اللغة : English - رابط الموقع : https://www.delphizine.com - ملاحظات : - تمت إضافتة من قبل العضو : 02/11/2004 -------------------------------------------------------------------------------- - إسم الموقع : delphicorner - الوصف : - اللغة : English - رابط الموقع : http://www.delphicorner.f9.co.uk - ملاحظات : - تمت إضافتة من قبل العضو : 02/11/2004 -------------------------------------------------------------------------------- - إسم الموقع : delphi32 - الوصف : موقع شامل , يحوي الكثير من الأدوات والأخبار - اللغة : English - رابط الموقع : http://www.delphi32.com/ - ملاحظات : - تمت إضافتة من قبل العضو : ORWA -------------------------------------------------------------------------------- مواقع عربية : -------------------------------------------------------------------------------- - إسم الموقع : موقع عروة نت - الوصف : موقع مهتم بدلفي واخبارها , مقالات عن دلفي , أدوات ومكونات الخ .. - اللغة : العربية - رابط الموقع : www.orwah.net - ملاحظات - تمت إضافتة من قبل العضو : ORWA -------------------------------------------------------------------------------- - إسم الموقع : موقع أخبار دلفي - الوصف : آخر أخبار دلفي ومقالاتها , مبوبة وباللغة العربية - اللغة : العربية - رابط الموقع : www.delphi.orwah.net - ملاحظات - تمت إضافتة من قبل العضو : ORWA -------------------------------------------------------------------------------- - إسم الموقع : شبكة ومنتديات دلفي للعرب - الوصف : موقع تعليمي مفتوح لكل من يريد الإفادة و الاستفادة، يهتم بالبرمجة في بيئة دلفي، في جميع المجالات: أنظمة التشغيل، قواعد البيانات، انترنت وشبكات .... - اللغة : العربية - رابط الموقع : delphi4arab.com - ملاحظات - تمت إضافتة من قبل العضو : DeltaAziz <span style='font-size:8pt;line-height:100%'>ملاحظة : لإضافة موقع قم بالرد على هذة المشاركة وضع رابط الموقع مع المعلومات السابقة . وسيقوم المشرف بعد ذلك بحذف المشاركة وإضافة المعلومات التي وضعتها إلى هذة الصفحة بعد تضمين إسمك في حقل "تمت إضافتة من قبل العضو : " . نتمنى أن تكون المواقع المضافة على قدر من الأهمية . شكرا لمساعدتك في إغناء مكتبتنا .</span>
  10. مشروع APL بناء لغة برمجة عربية .. APL=Arabic Programming Language هل يمكن بناء لغة برمجة عربية ؟. سؤال يتردد كثيرا تجربة : البارحة فكرت بالموضوع , بشكل جدي . ووجدت أن الفكرة يجب أن تبدأ من الإنترنت العربية , لإنها لن تبدأ برأيي من الشركات العربية .أو من الحكومات العربية . من سينجحون بتنفيذ الفكرة هم أفراد يجتمعون على الإنترنت , ويتبادلون الخبرات والأفكار حتى يحصلو على نواة للغة تملك خاصية القدرة على إلتطوير السهل وإعادة الإستخدام (ReUsibility) . ومن ثم قد تتبنى جهات معينه هذا الموضوع ويكبر حتى يصبح حقيقة . ربما على الأغلب هؤلاء النواة يجتمعون في منتديات , وربما يكون المنتدى هو arabTeam2000 .... ؟؟ من يدري لاأملك الكثير من المعلومات لإضعها كمشاركة نظريه هنا . ولكن منذ البارحة لليوم كانت النتائج جيدة بالنسبة لي خلال بحثي على الإنترنت . وتجريبي له على أرض الواقع قلت لنفسي : أولا نحن بحاجة لبناء برنامج يقرأ شفرة اللغة المزعومة التي نريد بنائها ويحول نحوها إلى نحو أسمبلي مثلا . ثم نريد أن نحول الأسمبلي الناتج إلى ملف قابل للتنفبذ . وأستطعت خلال عدة ساعات أن أحقق ذلك ... كبداية هذا الملف المرفق (النواه) وهو ملف صغير جدا , يستطيع توليد ملف تنفيذي (قابل للتنفيذ) من شفره نحن نكتبها .. الشفرة حتى الآن لا تدعم إلا تعليمة واحدة هي تعليمة "طباعه()" والناتج هو ملف دوس يطبع العبارة التي نكتبها له . هذه الشفرة ليست كلها من إنتاجي .. . معظم شفرته هي تجميع من الإنترنت , ولكني كنت أختبر إمكانية الفكرة فقط . كما أنه بوضعه الراهن غير قابل للتطوير السريع كما أتفنا ولكني أعدكم أنني سأقوم بذلك قريبا . وربما سأعتمد على خبراء الأسمبلي لدعم تعليمات جديدة , والمشروع طويل طويل ,, وبحاجة للعديد من الأعمال . لكني سررت لنجاحي في إنتاج شيء جديد (بالنسبة لي على الأقل) .. فإذا كانت الفكرة ممكنه ,, لماذا لا نقوم بالتفكير الجدي فيها ...... مارأيكم بإنتاج لغة برمجة عربية , " بالتأكيد ليست هذا البرنامج الصغير الذي أعمل علية" , ولكنها على الأقل يجب أن تكون أفضل منه بكثير . وماهي خطوات العمل برأيكم ؟ ملاحظة البرنامج الصغير هذا معمول على دلفي , سأقوم ببعض الإضافات علية , ومن ثم سأنشر شفرته هنا APL.zip
  11. Delphi for php demo

    شكرا للأخ فراس ولجميع الأخوة , :lol: مع اني حصلت على نسخة منها منذ فترة من الزمن , ولكني البارحة فقط حتى جربت ان اقوم بمثالي الأول على delphi 4 php . تبدو الامور تسير على ما يرام خاصة من ناحية البيئة المتكاملة , ومكتبة الادوات التي توفر طريقة تصميم وتطوير أسهل من المحرارات الحالية لphp والتي تعتمد على كتابة الاكواد . كذلك مكتبة الأدوات التي تحوي خصائص شبيهه بDelphi كثيرا .. , .. لمست ان البيئة بحاجة لبعض التطويرات من عدة جوانب , ويوجد بعض البطء , وبعض النقص بالادوات ... أنها تقريبا شبيهه بالإصدارة الأولى من دلفي Delphi1 ... بالنسبة لي فقد استخدمت الإصدارة الأولى من Delphi4php وهناك إصدارة احدث منها . الإصدارة الاحدث فيها تحسينات عديدة وتلافي للكثير من القصور في الإصدارة الأولى , وسأحاول ان اجربها قريبا .. رفع الملفات وتشغيلها على الموقع تطلب بعض الشروط بالسيرفر , وبعض التعديلات بملفات VCL التي يجب رفعها , كما ان تطبيق قاعدة بيانات صغيرة سوف يتطلب رفع وحدات VCL المتعلقة بقواعد البيانات كلها مثل AdoDB وغيرها وهذا يأخذ حجم وعدد ملفات إضافية , تكون محطوطة في مجلد جانبي اسمة VCL أشبة ما يكون بمكتبة runtime للموقع.. ولكن يمكننا القول أن تطبيق صفحة ديناميكية مثلا للإتصال بقاعدة البيانات وعرضها والعمليات عليها تتم خلال ثواني فقط . وبسرعة وبشكل مريح .. وضع مكون قاعدة البيانات ومكون الجدول table ومكون datasource , ثم مكونات إظهار اخرى مثل navigator و dbgrid و غيرها . وتكفي بضعة سطور للإضافة والحذف والتحكم .. إنطباعي الأول أن الإصدارات اللاحقة منها سيكون لها مستقبل مشرق غالبا , الإصدارة الحالية (التي جربتها) ماتزال متخلفة بعض الشيء قياسا لبيئات لغات برمجة عليا مثل دلفي او سي شارب او غيرها, ولكنها يمكن ان تعتبر ثورة قياسا لمحررات php المتوافرة حاليا والتي تعتمد على كتابة الكود ولايوجد فيها بيئة مكونات ولا مكتبة ادوات مريحة ولا مصمم نماذج .. ربما وخلال إصدارة أو إصدارتين قادمتين من Delphi4php يمكن أن نحصل على بيئة متكاملة محسنة جاهزة للإستخدام الثقيل (تطبيقات العالم الحقيقي وخاصة المشاريع الكبيرة) .. مثال على تطبيق بسيط جدا أعد خلال فترة قصيرة بالفأرة وسطر واحد من الكود : http://orwah.net/d4php/ سأعمل بالفترة القادمة على تجربتها على نطاق أوسع والحصوص على الإصدارة الأحدث , وربما رفع بعض المواقع والأمثلة التي بنيت على هذه البيئة ..
  12. إسم الكتاب : معايير في تقييم لغات البرمجه , نسخة أوليه عدد الصفحات : 55 صفحة اللغة : العربية الحجم : 510 KB الصيغة : PDF الوصف : بماذا يجب أن نفكر عند إختيار لغه برمجة . رابط التحميل : http://www.orwah.net/modules/mybooks/viewcat.php?cid=15] أو من مكتبة الكتب في الموقع معـايير في تقييـم لغـات البرمجـه بماذا يجب أن نفكر عند إختيار لغه برمجه . عروة عيسى . 5/12/2004 نسخه أوليـّـه , للحصول على النسخة النهائية راجع : www.orwah.net الفهرس .. _____________________________ مقدمه .................................................................................................................... 4 لمن هذا الكتاب .................................................................................................... 5 ملاحظات لابد منها .................................................................................................... 5 دعم OOP البرمجه غرضيه التوجه . أو البرمجه الشيئيه مقدمه عن غرضيه التوجه …………………………………………………………………………………………….. 6 التغليف Encapsulation ........................................................................................... 6 الوراثه من أنماط موجوده ........................................................................................... 7 تعدديه الأشكال (Polymorphism) ............................................................................... 8 مناقشه ...................................................................................................................... 9 لغات البرمجه الغرضيّه الصرفه مقابل اللغات الهجينه ....................................................... 10 الوراثه المتعدده Multiple inheritance ........................................................................ 11 نموذج الأصناف الساكن مقابل نموذج مرجعيه الغرض .................................................... 12 الإداره الآليه للذاكره ومجمع النفايات .…………………….…………………………. garbage collect 14 الاستدعاء المتأخر (وتعدديه الأشكال) Late Binding and Polymorphis ........................... 15 معلومات الأصناف في زمن التشغيل RTTI ................................................................ 15 القوالب والبرمجه الجينيه (Generic Programming) ...................................................... 16 التجريد Abstraction ................................................................................................ 17 بعض المزايا الأخرى ................................................................................................ 17 القياسيه .................................................................................................................. 18 المقروئيه Readability وتنظيم اللغه ........................................................................ 19 - سرعه التكويد ..................................................................................................... 21 أمن اللغه Language Safe ...................................................................................... 23 وصول منخفض المستوى low-level access ............................................................... 26 السرعه Speed ...................................................................................................... 28 سرعه تطوير التطبيق ((الإنتاجيه)) ........................................................................ 28 سهوله اللغه ............................................................................................... 28 قابليه إعاده الإستخدام ReUsibility ................................................................. 30 التوسعيه Extendibility ................................................................................. 30 التخاطب مع نظم وتقنيات مختلفه .............................................................. 30 دعم التقنيات المختلفه ............................................................................ 31 توفر مكتبه أدوات واسعه Wide Component Library .......................................... 32 خلاصه ..................................... ................................................................. 32 السرعه في التنفيذ Executing Speed ..................................................................... 34 حجم التطبيق Application Size .............................................................................. 37 دعم المجاري المتعدده Multi Threading .............................................................. 38 معالجه الإستثناءات exception handling ................................................................ 39 دعم GUI و graphics ..................................... ....................................................... 39 الإنتشار والتسويق والدعم الفني Marketing and Support ................................... 41 المحموليه Portability ..................................... ..................................................... 44 المحموليه على صعيد نظم التشغيل ..................................... ....................................... 44 اللغات التي تعمل على منصات خاصه ..................................... .............................. 44 نسخ من اللغه مخصصه للعمل على نظم مختلفه .................................................... 46 محررات مختلفه تدعم نظم مختلفه ....................................................................... 47 المحموليه على صعيد إصدارات نظام التشغيل المختلفه ................................................... 47 المحموليه على صعيد نظام تشغيل واحد_أجهزه مختلفه ................................................. 49 مكتبات زمن تشغيل (Run Time) ..................................... .................................. 49 الأدوات التي إستخدمناها في برنامجنا ................................................................. 50 التكامل مع نظام التشغيل OS integrity ................................................................ 51 دعم الويب Web Supporting ............................................................................... 52 مفتوحه المصدر Open Source ............................................................................. 53
  13. المبرمج الحقيقي ... ماذا بعد هل انت مبرمج حقيقي ؟ http://www.orwah.net/modules/news/article.php?storyid=54 استقيظت صباحا بابتسامة متحفظه على وجهي , واتجهت نحو المطبخ لإعداد كوب من القهوة التي بدأت حديثا بالتأقلم مع طعمها المر . أخذت أول رشفة مستمتعا بإنغام فيروز القادمة من المذياع في الغرفة المجاورة , ثم التقطت القلم وشرعت بكتابة نتائج الاجتماع المسائي مع بعض الشخصيات "البرمجية" التي كنت قد قابلتها مساء أمس . هكذا بدأ صباحي بعد لقائي ببعض المتسلقين على "الوسط البرمجي" , من دكاترة الجامعات ومعيدين يدرسون مواد متعلقة بالبرمجيات ((تبدو عليهم علامات الإنبهار بإنجازات الدكاترة)) , ومتحذلقين آخرين شاءت الأقدار وجودهم بالصدفة هناك .. بمزيد من الأسى واللوعة أزف اليكم نتيجة الاجتماع النهائية , بإني لست "مبرمجا حقيقيا" , والأهم من ذلك أني لاأطمح أن اكون مبرمج حقيقي بعد الآن ... طبعا هذا ضمن تعريف "الوسط البرمجي" لمفهوم المبرمج الحقيقي ؟؟ قد يظن البعض بإن قولي أني لم اعد أرغب أن أكون مبرمج حقيقي هو تقييم من احد هؤلاء "الطاحشين" على الوسط . أبدا ... بالعكس , كانت عبارات الاستحسان المبالغ بها تعطر الجلسة وتشعرني اني أكبر ببضعة عقود من العمر , وطبعا أخذت وضعي المريح على الكرسي , و"عرّمت" بمزيد من الزهو والثقة بالنفس أثناء المديح .. الذي كان يتخللة فترات طويلة ومملة من الوعظ والإرشاد التي يفترض بها أنها تعطيني الطريق السليم كي أكمل مسيرتي نحو ما اصطلح انه "المبرمج الحقيقي" ... - نعم يا بني , يقول احدهم , شغلك مرتب وانا أفخر بوجود عرب شاطرين متلك ,, ثم يسحب سحبة من سيجارتة ويتابع ... وطموحين .. ولكني أريدك ان تعمل بمزيد من الحرفية وتبتعد عن الأمور الجاهزة التي تقدمها لك لغة البرمجة ,, ولتعلم أي بني أن المبرمج الحقيقي لايستخدم Form تقدمة له لغة البرمجة بشكل جاهز , ثم يرصّ المكونات فوقة ببلاهة , المبرمج الحقيقي يبني النموذج من الصفر ! (يخبط على الطاولة ) - يبث كمية كبيرة من الدخان في وجهي , ثم يستأنف قائلا , نصيحة لوجه الله , لاتستخدم لغة برمجة visual أبدا .. لإنها أثبتت فشلها . وبرامجها لاتقارن أمام برامج الـ Consol المستقرة المبنية من قبل مبرمجين أقوياء ... ثم يضيف : حقيقيين . هذه كانت عينة من الفكر الذي واجهني ليلة امس .. ولشعوري أنه من المستحيل إجراء نقاش مثمر مع هذه الثلّه من الأدمغة العائمة قررت تجنب الصدام الفكري وأكتفيت بتلميحات غير مريحة تعكر صفو الإتفاق بالرأي الذي يجمعون عليه .. يستطرد الآخر بالحديث حول الخوارزمية التي يعمل عليها منذ حوالي السنة ويؤكد أن نسبة النجاح باتت معقولة ولكنة لايزال يعاني من أخطاء الذاكرة التي تظهر بشكل عشوائي ... يعقب بإنها أخطاء غير مهمة .. ويذكر بإن النظام ويندوز غير مستقر .. تبين لي لاحقا ان هذه الخوارزمية تخص فكرة رياضية ما وأنه يستخدم لغة fortran لتطبيقها . وعل حد تعبيرة فإن أي هر من هررة هذه الأيام الذين يستخدمون "لغات برمجة للأولاد" ويصفون نفسهم بإنهم مبرمجي اليوم , لن يستطيعو حكماً التقدم خطوة واحدة فيها .. ولكنة أسرّ لي أنه مستعد لإطلاعي على خطواتها أيمانا منه اني لست متعربشا على الوسط البرمجي لحد تعبيرة ! وقال أنني إذا أثبتت صحة كلام سابق لي أختلفنا حولة , سيسمح لي بالعمل معه على هذه الخوارزمية الكنز ؟؟ الثالث أكتفى بالإشادة بالمهارات التي تلقاها في روسيا أثناء تحضيره للدوكتوراه .. وقال أنه لو أراد العمل بالبرمجيات لما سبقة أحد , ولكنة يعرف أن الغادي والبادي يدخل في السلك ويظن نفسه بيل غيتس بعد اول برنامج Hello World يقوم بكتابتة .. استرسل الأخير في نصحي بالإعتماد على الرياضيات في البرمجة مؤكدا مرارا أنه لا سبيل للبرمجة بدون إتقان الرياضيات , وقال خذ على سبيل المثال محررات النصوص , بناء محرر نصوص بسيط مثل VX يحتاج لدماغ عالم بالرياضيات .. لإن النص ماهو إلا مصفوفة معقدة من الحروف .. وختم نصيحته الطويلة الأمد بهدية غالية , حيث أكد أنه سيبحث في مكتبته عن الكتاب الذي وعدني به . وقال ان مشكلة كون الكتاب باللغة الروسية غير مهمة , لأنو أنا ما بينخاف عليي !! ؟؟ !! هههههههههه .. أعرف انك عزيزي القاريء مللت مثلي من السرد الطويل وغير الممتع لمجريات الليلة العفنة تلك , التي كان عليي ان تذكر دائما أنني تلميذ بالنهاية , وهم أساتذة ؟؟ ووراء كل كلمة قبول واستحسان كان عليي الإستمتاع بسمفونية طويلة من النصائح حتى اعرف كيف أصبح "مبرمج حقيقي" .!!! وللأسف أي مبرمج حقيقي. المهم الان وبناء على تعريف المبرمج الحقيقي الذي أستشفيته من الحوار السابق , فانا لم أعد مهتم بعد الآن أن أصبح مبرمج حقيقي , وبعد قليل من ساعات الهدوء والتفكير وجدت ان الوصف الدقيق لحالتي لايندرج تحت إسم : "مبرمج" .. وربما إذا خيرت ان أسمي نفسي لأخترت وصف : "مطور تطبيقات" الذي بت أجده مناسبا أكثر .. - مطور التطبيقات يهتم ببناء برامج مستقرة ذات أداء وكفائة عالية بأقل تكلفة ممكنه من الجهد والوقت والمال . - مطور التطبيقات يركز في مفهومة على الإنتاجية العالية لإداءة , والتي تساعد على الإستفادة بشكل أمثل من جودة المنتج . - المبرمج "الحقيقي" يركز كثيرا على الطريقة .. بينما يركز مطور التطبيقات على النتيجة , لذلك يختار الطريقة الأنسب لتحقيق النتيجة بأقل تكلفة . - المبرمج يكون مسؤول عادة عن تحويل جزء من المسألة إلى صيغة يفهمها الحاسوب , أما مطور التطبيقات مسؤول عن إنتاج برامج كفوءة رخيصة . فالمبرمج هو فرد .. أما مطور التطبيقات قد يكون فرد او مؤسسة , والمبرمج يعمل ضمن اطار مطور التطبيقات - كل مطور تطبيقات هو مبرمج .. ليس كل مبرمج مطور تطبيقات - المبرمج أقرب للممثل ,أما مطور التطبيقات أقرب للمخرج , وهو حالة من حالات مدير المشروع , لكنه اكثر عمومية ...... .... .. سأتوقف اليوم هنا .. واظن ان المقالة القادمة ستكون عن (المبرمج VS مطور التطبيقات) ولكن ربما بنظرة اكثر تفصيلا .. والآن فنجان القهوة خاصتي أصبح باردا , ولم يعد من المفيد الإستمرار بالكتابة . لذلك أستودعكم الله إلى لقاء آخر ... ربما أكون قد أصبحت فلاح على تركتور إلى ذلك الحين .. وخاصة مع لقاءات مشابهة مع الوسط البرمجي المزعوم .. ملاحظة اخيرة .. تذكرني هذه العبارة بعبارة "الوسط الفني" والفضائح المحيطة به , وفهمكم كفاية .. عروة علي عيسى .. www.orwah.net سوريا 2005
  14. من الصعب إعداة تنسيق المقاله بشكلها الأصلي ... لقراءة المقالة بتنسيق جيد أنقر هنا : http://www.orwah.net/modules/news/article.php?storyid=82 مباديء في تصميم قواعد البيانات مقدمة: معظم المبرمجين ليسوا مؤهلين لإدارة قواعد البيانات أو لتصميم نماذج ضخمه منها . ولكنهم مضطرون دائما للتعامل معها من خلال مشاريعهم البرمجية المختلفة والتي كثيرا ماتكون ذات صلة كبيرة بقواعد البيانات نظرا لحاجات السوق . - ستغطي هذه المقاله بعض المباديء الأساسية لتصميم وتشكيل فواعد البيانات , وستحوي إجراءات وقائية وآداب التعامل مع قواعد البيانات لغير المختصين أمثالنا والذين لايودون قضاء السنين اللاحقة من حياتهم في مناهج إدارة وتصميم قواعد البيانات .. وهي موجهة للمبرمجين المتآلفين مع برمجة قواعد البيانات المبنية على المزود , وبالتأكيد عبارات Sql كذلك . -------------------------------------------------------------------------------- من أهم الأمور التي يمكننا التفكير بها عند تصميم قاعدة بيانات هي المرونه , الاستقرارية , قابلية التوسع , الأمن .. سأحاول الجمع بين هذه الأهداف في مجموعة من النقاط المفيده , وأعلم أنها ليست بالكثير , ولكن ربما يستفيد منها آخرون مهتمون بتطبيقات قواعد البيانات , ويعانون مشاكل مع تطبيقاتهم بمجرد أن تكبر قاعدة بيانهم قليلا فوق الحد الذي اعتادوا عليه .. - أشياء من المهم تجنبها كلمات قد تكون محجوزة : عندما تعطي الحقول والجداول أسماء فعليك الحذر من استخدام أسماء قد تكون محجوزة (reserved words) , ومن المهم ان تلاحظ أن عدم كون بعض الكلمات المشهورة محجوزة في قاعدة بياناتك الحالية لايعني أنها لن تكون كذلك في المستقبل أو في قاعدة بيانات أخرى , مما يصّعب موضوع ترقية قاعدة البيانات المستخدمه أو تغييرها . خاصة أن التصميم الجيد لقاعدة البيانات يضع في الحسبان أن أي قاعدة بيانات قد يتم ترقيتها توريدها بالمستقبل لأنظمة وتطبيقات أخرى . مثال على بعض الكلمات: Name, Order, By, Sort, Number, Currency, Text, Desc, Date, Time, Username, Password, Group, Data, Min and Max. لفترة طويلة كنت أستخدم البعض منها مثل Name و Desc , ولكني الآن أعرف تماما مدى خطأ ذلك , فالكلمة Desc هي أحد معرفات "modifier" العبارة Order By في Sql . ولاتعرف متى تظهر لك المشاكل عند حدوث تشابه كهذا , بامكانك مثلا استخدام اكلمة Descr بدلا منها . للأسف استخدام بعض هذه الأسماء لايزال شائعا مثل Name و Text رغم وجود الكثير من التحذيرات بالابتعاد عنه . وكحل جذري أنصح باستخدام بادئه لكل حقول الجدول , ربما تمثل الحروف الأولى من الجدول , مثل dept_name بدلا من name حيث dept اختصار Departmint أي جدول الفروع . لاتستخدم اللغة العربية في التسمية وهذه من النصائح الشائعة في منطقتنا . المشكله ليست بالأسماء العربية فقط , بل بأي إسم بغير اللغة الإنكليزية , لإن اللغة الإنكليزية هي الوحيدة المضمون وجودها على الجهاز , والمضمون دعم برنامج إدارة قواعد البيانات ولغة البرمجة لها .حتى اللغة الإنكليزية عليك مراعاة القواعد والنصائح وقيود التسمية بها , فما بالك أن تسمي أسماء حقول أو غيرها باستخدام لغات اخرى كاللغة العربية مثلا !! ولو كان برنامج إدارة قواعد البيانات DBMS يدعم التسمية باللغة العربية فمن الخطورة البالغة القيام به , ستواجهك مشاكل مع لغة البرمجة , كما أنك قد تقرر في أي لحظة نقل القاعدة إلى نظام إدارة قواعد بيانات جديد قد لايدعم على الغالب الأسماء العربية , وغيرها من المشاكل التي قد تقضي على المشروع فقط بسبب عدم مراعاته للقياسية . لاتكرر الأسماء على مستوى قاعدة البيانات الجميع يعرف أنه لايجب تكرار أسماء الحقول في جدول واحد . ولكن النصيحة الآن أن لاتكرر أسماء الحقول أو الجداول على صعيد قاعدة البيانات كلها وليس فقط ضمن الجدول نفسه أو الSchema نفسها , أي لاتضع الحقل name في جدولين مختلفين , برأيي طريقة وضع بادءة للحقول تعتبر مناسبه لحل هذه المشكلة أيضا قواعد أساسية وأفكار مفيدة اجعل أسماء الجداول والكيانات بالمفرد singular تكررت معي هذه القاعدة كثيرا , سواء بالOOP أو بمفاهيم هندسة لبرمجيات أو UML أو قواعد البيانات أو غيرها , .. لايوجد سبب أساسي , ولكن هذا يعتبر عرف تقني يسير عليه الاخصائيون منذ زمن . فقط تذكر معي كم مره واجهت نفسك أثناء كتابة عبارة Sql إذا كان الجدول customer أم customers ؟ لابأس قد تقول إني متأكد أن الجدول يكون بالعادة customer , لكن ماذا عن حالات أخرى مثل order_line بدلا من order_lines مع أن العلاقة علاقة رأس بإطراف ؟ . إذا راجعت الأمثلة الشهيرة والشفرات المفتوحة ستجد هذه القاعدة تطبق في 100% من الحالات , ولابأس بتطبيقها من قبلك كي تبقى داخل السياق . وتتأكد من عدم خروجك عن المألوف الذي يضمن لك السلامه تجنب الإختصارات Abbreviations مالم يكن الاختصار واضحا تماما , أو ضروريا , فلا تكثر من استخدام الاختصارات في قاعدة بياناتك , وأضعف الإيمان أحرص على أن تكون واضحه ولاريب فيها . دعني مثلا أجرب أن أقدم بعض الأمثلة التي قد تدل على أكثر من معنى : Name Possible Meanings Inv_ID Inventory? Invoice? Investment? Disc_Code Discontinued? Discount? Discovery? Item_Ct Count? Connector? Prod_Count Product? Produced? Production? Proj_Amt Project? Projected? Ext_Rate Extension? External? Extra? Org Organization? Originator? Origin? Orangutang? (Just seeing if you are paying attention) Req_ID Requisition? Request? Rec_ID Received? Recipient? Receipt? Recovered? Cat Catalog? Category? Grp_Code Group? Grouping? Comp_ID Company? Compensation? Compreshensive? وبالمقابل إذا استخدمت اختصارات حاول أن تقترب من الاختصارات الشائعة والمتكرره وهذه مجموعة من الأمثله عنها : Name Meaning Pkg Package No Number Qty Quantity Hdr Header Attn Attention Addr Address Alt Alternate Dept Department Exp Expiration Seq Sequence Mgr Manager Amt Amount Min Minimum Max Maximum Doc Document ونصيحة أن تتأكد دائما من أن تحافظ على وحدة الاختصار في كل مكان من قاعدة بياناتك , مثلا إذا كان a_doc وثائق الجدول a , فلتكن b_doc هي وثائق الجدول b . إذن القاعدة هي كالتالي نستخدم الإختصارات عند الحاجة فقط, ونختار الاختصارات الشائعة والتي يكون لها معنى واحد واضح فقط , ودائما وثّـق أسماء الجداول بمستندات خاصة أو استخدم حقول الوصف لتسهيل التعرف عليها لاحقا . استخدم الشخطة السفلية Underscore وحاذر من الفراغات بما أن استخدام الفراغات في التسمية هو انتحار مباشر , وبما أن بعض برامج إدارة قواعد البيانات تسمح بالتمييز بين الحروف الكبيرة والصغيرة والبعض الآخر لا , والبعض الآخر يجبرك بحروف كبيره , فعندها بدلا من كتابة . Alt Product ID (فراغات) , وبدلا من . AltProductID (حروف كبيرة وصغيرة) , وبدلا من ALTPRODUCTID (غير واضحه وصعبة القراءة) , فيفضل عندها استخدام أكثر الحلول أمانا وهو : أسماء بالحروف الكبيرة يفصل بينها شخطة سفلية بدل الفراغات أي : ALT_PRODUCT_ID . (الحروف الكبيرة ليست قانونا) الهدف من ذلك أن تكون الأسماء قياسية وتعمل على أي نوع قاعدة بيانات مما يسهل الإنتقال المستقبلي ويبسط عملية تنقيح المنتج في حال الترقية المستقبلية . لاتستخدم أسماء حقول تطابق اسم الجدول لاداعي لوضع اسم الحقل locations عندما يكون اسم الجدول locations لإن ذلك سيخلق لك مشاكل سواء في DBMS ألمستخدم أو في البرمجة لاحقا . حيث أصبح من المعروف أن ذلك سيسبب مشاكل في الـ alias , كما أنه سيربك ويتعقد عند القيام بتعليمات ضم الجداول باستخدام table joins . المزيد في تصميم قواعد البيانات قاعدة المستخدم السعيد ببساطة مستخدموك هم زبائنك , عليك أن تجعلهم سعداء , وبذلك تضمن أن تبقى مرتاح البال وأن يصبح عملك أقل وفاعل أكثر , فإذا استمعت لحاجاتهم وعرفت مالذي يسبب لهم المشاكل والتعب , وتجاوبت مع ذلك ببراعة في برنامجك , فإن اعتمادهم عليك سيقل في الدعم الفني والأسئلة المزعجة وسيصبحون مصدر للدعاية والسمعة الحسنة كما أنهم سيدفعون أكثر ويشترون أكثر , المستخدم السعيد .... لم لا . التوقف والمراجعة من السهل قول ذلك ولكن من الصعب تطبيقه دائما , لذلك عليك كلما انتهيت من تصميم جدول مثلا أن تتوقف بعض الوقت لمراجعة الجدول وتتأكد من تطبيقة للقوانين الأساسية السابقة , ومن خلوة من النواقص والأخطاء .. خاصة أن العمل بالجداول المقبلة سيعتمد على مالدينا الآن في الجداول الموجوده , لذلك مراجعة العمل الآن ستعني أخطاء أقل بالمستقبل وستسمح لك بتصميم نموذج متين بسرعة أكبر. التكامل المرجعي RI كثيرا ما يشار للـتكامل ذو الصله أو Referential integrity بالتقييد أو الإكراه " constraints" . مفاد الإكراه هو حماية المستخدم , وحماية نفسك كمطور , وحماية البيانات في مراحل مختلفة من التطوير أو التشغيل .. الصرامة تعني فرض حدود , وعدم تخطي هذه الحدود , وهذا يعزز الأمن , كما أنه يقلل من أمكانية التسبب بخطأ من قبل المستخدم (لاتسمح للمستخدم بالخطأ) للتكامل نوعين تعريفي وإجرائي (procedural and declarative) الإجرائي هو الذي تقدمه في تطبيقك نفسه التعريفي يقدم عادة من قاعدة البيانات (عادة باستخدام Foreign Keys) أو القوادح triggers في قاعدة البيانات .. عندما تستخدم التكامل المرجعي ستضمن أنه لو تم حذف سجل في جدول أساسي فإنه سيتم حذف كل السجلات المرتبطة به بالجدول الفرعي , أو لن يسمح بالحذف طالما توجد سجلات متعلقة فيه (لايجب أن يوجد سجل في جدول فرعي ليس مرتبط بسجل في جدول أساسي) . وهذا يعني أنك تريح نفسك من مضاعفة لشفرة من أجل كل عملية حذف أو إدخال في قاعدة البيانات . توصيات ونصائح استخدم مفاتيح أساسية حتى لو لم تحتاجها لاتترك جدول من دون مفتاح أساسي , لإن المفاتيح الأساسيه بالإضافة لأهميتها في التصميم والبرمجة لها دور في عملية البحث , والبحث في جدول يحوي مفتاح أساسي أسرع من البحث في جدول لايحوي مفتاح أساسي , كما أن حاجات تطوير قاعدة البيانات في المستقبل تفرض عليك وجود مفتاح أساسي لكي لاتضطر لإعادة العمل بقاعدة البيانات القديمة من أجل تطويرها الإسم أولا ثم التفصيل ثانيا الكثيرون يظنون أنها قاعدة غير صحيحه , ولكن الزمن سيثبتها لك ببساطة , كما أنها تسهل في البرمجة لاحقا . إذا كان لدينا حقل مثل first_name فنحن نكسر القاعدة إذا . والصحيح هو أن نكتب name_first .. وقد يأتي بعده name_middle و name_last . وكما تلاحظ هذا شبيه بسلوك لغات البرمجة حيث في لغات oop نكتب object.property وليس العكس , أي الأساسي أولا ثم التفصيل ثانيا , بحيث يسهل سرد كل التفاصيل حسب الاسم لاحقا. ومن السهل بمجرد كتابة name أن نعرف أن لديه عدة انواع first و middle و last ولكن عند كتابة first سنجد أمور أخرى تبدأ بحرف f لاتفيدك بشيء ولن تستطيع توقع ماذا ستكون الحقول والنتائج . حقول بوليانية جوابها سؤال كثير من الأحيان يلزمنا حقول جوابها نعم أو لا (بوليانية أو منطقيه) , عند تسميه هذا النوع من الحقول عليك توضيح ماذا تخزن حالة true أو حالة false لذلك من المفيد أن تسبق اسماء متحولاتك بمعامل يحوله إلى سؤال مثل: Is, Does, Want, Has, Needs فبدلا من active استخدم is_active , لإنك لو وضعت في active قيمة true فلن تعرف إذا كان مفعلا الآن أم أنه سيصبح مفعلا بعض تغيير القيمه ؟؟ أما is_Active فهي تقطع الشك بمعنى القيمة وتساعد أكثر في تذكر وفهم عمل الحقل. أمثله : Update Need_update Phone has_phone Modified Was_modified or is_modified استخدم المشاهد Views في قاعدة بياناتك Views هي عبارة عن جداول منطقية , تحوي فعليا استعلامات sql تساعدك في تحديد الحقول التي تريدها من جدول محدد أو من أكثر من جدول وتساعد في تحديد سماحيات كل مستخدم .. عندما تستخدم المشاهد للوصول إلى البيانات بدل الجداول فبالإضافة إلى تنظيم العمل وتسهيله , والتحكم بوصول المستخدمين , فأنك ستضمن أنه في حال طرأ تغيير على أحد الجداول أو تمت إضافة حقل ما مثلا فلن تضطر إلى تعديل كل من يستخدم الجدول , لإن التعامل يتم مع View الذي يختار الحقول والتي قد لاتكون تغييرت .. وخاصة عندما تكبر قاعدة البيانات وتتعقد , ويصبح من الصعب على مستخدم عادي أن يكتب تعبير Sql فاعل لاسترجاع معلومات مهمة , ولكن بتقسم العمل إلى Views تحوي ضمنها عبارات Joins بين الجداول ومقسمة بطريقة منطقية وصحيحه حسب المعلومات المرجعه من كل منها , فإن كتابة عبارات sql من قبل مستخدم أقل خبرة أصبح أمرا بسيطا وواضحا .. باختصار استخدام المشاهد يعتبر خطوة حكيمه منك لتسهيل عملك لاحقا . الأمــن : برأيي الشخصي , الخبير الجيد لايسمح للمستخدم أبدا بالدخول إلى جدول ... الدخول مسموح فقط للمشاهد Views أو بالأحرى لعدد محدد من المشاهد تناسب كل مستخدم , عند مراقبتي لنظام قاعدة بيانات كبير وجدت أن المصمم ألغى سماخيات الوصول العامة للجداول , وسمح بوصول مقيد للمشاهد حسب الحاجة , كما أن الجداول كلها تبدأ بالبادئة tbl_ في حين أن المشاهد من دون بادئة , وهذا دليل على اعتبار المشاهد هي الواجهة الأساسية للمستخدم الذي لن يعرف إذا كانت مشاهد أم جداول , ولن يختلف معه شيء بالأستخدام , سوى سهولة أكثر في الحصول على نتائج أكثر. نظام آمن بهذه الطريقة سيسمح لك مستقبلا بتعديل قاعدة البيانات دون أن يشعر المستخدمون لها بأي شيء , وهذا يسمى الفصل بين طبقة المصمم وطبقة المستخدم بطريقه مرنه . أحذر من حقول الزيادة الآليه Auto Generation أعرف أن استخدام هذه الحقول أمر شائع (أنا كذلك أستخدمها) , ولكن المشاكل المتكرره مع هذه الحقول جعلتني أفكر بالتنويه إلى مشاكل هذه الحقول .. .. مشكلة هذه الحقول في الكثير من أنواع قواعد البيانات أنك لاتعرف قيمة الحقل المولد تلقائيا حتى بعد الإدخال , وكثيرا ماتحتاج استخدام مباشر لقيمة هذا الحقل .. (أي أن القاعدة تولد قية في الحقل , ولكن أمكانية قراءة هذه القيمة ستتأخر قليلا بعد الإدخال) فإذا كنت ترى أنك ستسخدم الحقل المولد تلقائيا أثناء الإدخال فأنصحك بأن تقوم بتوليده تقائيا أو الاستفاده من مزايا RDBMS التي تستخدمها sequence (Oracle) or generator (Interbase) .. وهذا موضوع سهل باستعلام يتم تنفيذه قبل الإدخال يحسب أكبر رقم في قاعدة البيانات ويزيد عليه واحد ((مثلا)) .. شكرا لاستمرارك بالقراءة حتى هنا ,, سأعتبر ذلك إطراء عروة عيسى 25/7/2005 www.orwah.net الرابط الأصلي : http://www.orwah.net/modules/news/article.php?storyid=82
  15. .. وهذا تحديث ثاني للمكون أطرحه هنا لتجريبة فترة من الزمن والبحث عن أخطاء فيه قبل وضع نسخة Stable منه .. أصبح المكون مفيد تماما .. جديد ArMan هو جعل ال toolBar من اليمين لليسار , بمجرد وضع ArMan على الفورم وتشغيل التطبيق كذلك TreeVeiw التي يعاني الكثيرون من كونها LTR أيضا بالإضافة إلى الأمور الموجودة منذ زمن ولتي تعرفونها (الرسائل العربية , والرصف لليمين ..) هذا محتوى ملف الـ ReadMe : بسم الله الرحمن الرحيــم . عروة علي عيسى , سوريا : 2005 . [email protected] HTTP://www.orwah.net ArMan v 0.1 هذا المكون Ar_Man , مخصص لزيادة توافقية دلفي مع اللغة العربية , يكفي وضع المكون ArMan على الفورم حتى يأخذ برنامجك الشكل العربي آليا . مزايا المكون : 1 - أصبح بإمكانك إعداد برامج عربية دون أن تشعر بالإحباط لظهور رسائل عليها أزرار باللغة الأجنبية ((Ok , Yes , No Ignore, Yes to all ...... )) .. الخ . أو لظهور كتابة عربية من اليسار لليمين .... أو لظهور ترتيب الأزرار بشكل عكسي من اليسار لليمين أو لظهور الصورة باليسار , وبالتالي تغطي النص العربي المكتوب ؟؟؟؟؟ .... ا 2- دعم عنصر شريط الأدوات والذي لايملك خاصية Righttoleft , ويتم تحويل العنصر إلى اليمين تلقائيا 3- دعم العنصر TreeVeiw والذي لاتفيد معه الخاصية BidiMode ولايدعم Righttoleft ليصبح إلى اليمين تلقائيا ============ ببساطة أضف ArMan إلى الفورم , عند الحاجة . وستتخلص من كل ذلك . كما أن ArMan سيقوم مباشرة بضبط إتجاه البرنامج من اليمين لليسار --------------------------------------------------------- تلميح : نحن Orwah.net لا نفرض أي حقوق لهذة الأداة واستخدامها أو نشرها ولكننا سنكون ممتنين في حال الإشارة إلينا كمصدر أصلي للشفرة . --------------------------------------------------------- =============== الإستخدام و التنصيب : =============== للتنصيب قم بنسخ محتويات المجلد Package إلى مكتبة معرفة في دلفي , مثلا Bpl أو Lib : ثم قم بتشغيل الحزمة armanD7.dpk من هناك . (ملاحظة , في هذه الحالة عليك حذف الملفات القديمة من هذه المكتبة عند الترقية لإصدارة أحدث) ============= ملاحظه مهمــة : ============= لإزالة تأثير اللغة العربية من برنامج ما , يجب حذف الوحدة uArMan بعد حذف المكون ArMan عن الفورم . وهو سلوك شبية بالتعامل مع XPMan . شكرا لإهتمامك بتجريب ArMan , النسخة Ver 0.3 عروة عيسى web: www.orwah.net E_Mail: [email protected] الخبر الجيد والمهم أن إصدارتين جديتين للمكون من أجل Delphi 2005 1- Delphi 2005 Win 32 .. تمت بنجاح 2- Delphi 2005 .NET .. تمت بنجاح ولكن الملفات المرفقة خاصة بالإصدارة السابعة فقط ... أتمنى أن يعجبكم التحديث ----------------------- شكرا للمساهمة في تجريب التحديث الرجاء أرشفة أي أخطاء للمكون في منتدى الدعم الفني هنا : http://www.orwah.net/modules/newbb/viewforum.php?forum=12 المصدر : عروة نت Ar_man_Updated.zip
  16. آخر إصدارة من المشروع الجماعي ستكون مرفقه بهذة المشاركة وسيتم تعديلها من قبل المشرف كل مرة . آخر تحديث للمشروع كان في : 6/3/2005 تم فصل محرك تهيئة النص عن جسم البرنامج بملف DLL تم فصل محرك النطق عن جسم البرنامج بملف DLL يمكن تطوير أي من هذه الأقسام الثلاثة بشكل منفصل وتجربة عدة خوارزميات للعمل لكل منها قيد التنفيذ : تعديلات على خوارزميه النطق لاتنسى تحميل الأصوات ليعمل البرنامج التحميل من المرفق : TTS_V0.5.zip
  17. عندما بدأت كتابة السطور كان يفترض أنني اترجم المقالة من موقع About . الرابط الاصلي : http://delphi.about.com/od/objectpascalide/a/speedsize.htm ولكني بعدها أقحمت أفكاري الخاصة وأمثلتي عليها على كل حال أعتقد انني أحتفظت بمعظم العناوين . عشر نصائح لتحسين حجم وسرعة تطبيقات دلفي رؤية عروة عيسى . 17/3/2005 ما سأذكره في هذه العجالة هو مجموعة أفكار مفيدة لتحسين حجم وسرعة برامج دلفي . بداية , فإن تحسين المشروع لأبعد حد (Optimization) يعتبر من الأمور المهمة والمرغوبة في هندسة البرمجيات بشكل عام , ولكن أحذر ؟ فهي دائما كانت في مواجهة أمور أخرى بالغه الأهمية مثل الإستقرارية (stability) والتوسعية (extensibility) , التي تجبرنا أحيانا على غض الطرف قليلا عن الاداء مقابل بعض المكاسب الأخرى (كما قلت في مقالة البرمجة الغرضية التوجه جاءت الـOOP بأفكار التوسعية ولم تعطي الأولوية رقم 1 للأداء ."لاحظ أن C أسرع من C++ كما هو معروف , رغم أن الأخيرة هي الداعمة للـoop , ولكن من المؤكد ان بناء تطبيقات ضخمة وإمكانية إعادة إستخدام الشفرة من نتائج الoop الأساسية ") . المهم الآن . .. موضوعنا اليوم عن الاداء . مبدأيا السرعة والحجم , رغم وجود امور مهمة اخرى في إدارة الذاكرة مثلا ولكن لن تكون محور الحديث . يتولى مترجم دلفي في معظم الاحيان إجراء التحسينات(optimimization) على المشروع , ولكن ذلك قد لا يكون كافيا في كثير من الاحيان . هذه بعض الأفكار التي يمكنك وضعها بالحسبان عند تطوير تطبيقات دلفي يراعى فيها الحصول على ملفات صغيرة الحجم سريعة التنفيذ : ************************************* 1- حافظ على نظافة شفرتك : ربما يصعب إلى حد ما الجزم فيما إذا كانت الشفرة نظيفة اولا , ولايمكن تحديد ذلك دون التعمق في آلية تنفيذ الامور من الخلف , قد لاتستطيع دائما الجزم أي شفرة انظف من الثانية ولكن أظن أن ذلك سيكون واضحا في كثير من الحالات : راقب الشفرتين التاليتين function calc(a,b:integer):boolean; var c1,c2,c3,c:integer; r:boolean; begin c1:=a*b; c2:=a+b; c3:=a-b; c:=c1+c2+c3; if c>50 then r:=true else r:=false; result:=r; end; وهذا يقوم بنفس الوظيفة : function calc(a,b:integer):boolean; begin result:=((a*b)+(a*2))>50; end; من برأيك الشفرة الأفضل , وأي منهما أسرع بالتنفيذ , هل لاحظت ان عدد المتحولات الإضافي سيحجز أمكنة لاداعي لها بالذاكرة ويستهلك مواردك ويبطيء تنفيذك دون مبرر ؟, . في هذا المثال البسيط لن تجد فرق كبير , لكن لوكنا نتعامل مثلا مع برنامج متحولاته من النوعBitmap بالتأكيد كل واحدة منها ستأخذ حجم كبير جدا في الذاكرة لإدارة الصور المخصصة لها , عندها من الخطورة كتابة هكذا نوع من الشفرات الغير مدروسة . ملاحظة : من المهم الحفاظ على تسميات واضحة للمتغيرات والعناصر ويفضل تجنب إستخدام التسميات الإفتراضية مثل "Button1" التي تغرقك فيما بعد في بحر من اسماء المكونات المشابهة والتي يصعب معرفة ماذا تمثل كل منها - يفضل وضع طريقة واحدة واضحة لتسمية المتغييرات , مثلا بداها بحرف يحدد النوع , أو الصنف الاب .. مثلا: SMessage و SName للمتغيرات النصية (String) iCount و iRate للمتغيرات الصحيحة , Tobject للأصناف . Frm_Main للنماذج , (لاحظ , البدء ب Frm يسهل عليك التعامل معها لاحقا ) ************************************* 2- إستخدم توجيهات المترجم المفيدة : خذ مثلا التوجية {$O+} . والذي يعني Optimization On .. تاكد دائما من ان هذا التوجيه مفعل (on) مع هذا التوجيه سيولد مترجم دلفي شفرة اكثر فاعلية . بالتاكيد ستحصل على بعض الصعوبات الإضافية في التنقيح عند إستخدام مثل هذا توجيه . *************************************] 3- جرب ترجمة برامجك ب Run_Time Packlages : ربما تعاملت مسبقا مع رزم المكونات ( packages) تملك هذة الرزم نوعان Run_Time و Design_Time .. رزم الـ Design_Time هي الرزم الإفتراضية , وهي جيدة ولكنها تحمل حجم إضافي لمعلومات سيتم إستخداما في زمن التصميم فقط , وبالتالي من غير المفيد ان يحمل الملف التنفيذي النهائي هذا الحجم الإضافي وهو لن يستطيع الإستفادة منه في زمن التشغيل . إستخدام Run_Time Packages في حال توفرت مع المكونات حتما سيحسن حجم الملف وأداءة , خذ مثلا المكونات التي تحوي محررات خصائص كالتي يمكنك الوصول إليها من ضابط الكائنات , تخزن معلومات هذه المحررات معها مع عدم الفائدة منها في التطبيق التنفيذي النهائي . . كما أن إستخدام Run_Time مفيد جدا في حال كان لدينا أكثر من تطبيق يستخدمون نفس المكتبات , حيث يكفي توفرها مرة واحدة لكل التطبيقات التي تستخدمها . المشكلة الاساسية أنه عند استخدام Run_Time_Packages يجب نشر هذة المكتبات مع التطبيق النهائي وكأنها مكتبات DLL . مثال : إذا كنت تتبادل كثيرا ملفات مع زملائك اللذين يملكون دلفي على اجهزتهم (أي حتما ستضمن وجود نسخة من مكتبات الأدوات القياسية عندهم ) بإمكانك عندها إرسال تطبيقات صغيرة جدا لهم تعتمد على مكتبات Run_Time . من قائمة Project -> options ->packages إختر الخيار السفلي : Build with run time packages وستلاحظ بعدها أن الملف التنفيذي الناتج غدا صغيرا جدا . (لاحظ الملف المرفق بالمشاركة , ملف نظامي تماما بحجم 16K دون أي خدع بالشفرة) ************************************* 4 – لاتقم بإنشاء كل النماذج منذ بدء التشغيل تقوم دلفي إفتراضيا بإنشاء النماذج كلها عند التشغيل ( Create All forms at startup ) , ولكن ذلك سيجعل كل النماذج مخزنة بالذاكرة على الرغم من أننا قد لانستخدمها , أو على الأقل لن نستخدمها معا في وقت واحد . مثال : قد تقوم بإنشاء نموذج "حول"(About) يحوي صورة جميلة لشعار شركتك , ومعلومات عنك , وبريدك الإلكتروني الخ .. هذا النموذج (About) سيراه المستخدم مرة في العمر , وبالتالي لايوجد داعي لأن يبقى موجودا بالذاكرة كل مرة تشغل فيها البرنامج خاصة انه قديحوي صور بحجم كبير قد تأخذ حيز من الذاكرة من الأفضل ان يبقى لخدمة امور أكثر اهمية , وهذا ماقد يؤثر على سرعة تطبيقك وإستجابتة . لذلك بإمكانك خلق الذاكرة الخاصة به لحظة ضغط المستخدم على الزر وتحريرها بعد إغلاق النموذج . كيف نقوم بذلك : من قائمة دلفي إختر projects -> options ستظهر أمامك النافذة السابقة , القسم العلوي يحوي مربع إختيار النموذج الأساسي للمشروع , وتحتة مباشرة ستجد قائمة النماذج لديك تحت عنوان Auto_Create . بكل بساطة حدد النماذج التي لاتريد ان يتم إنشاءها تبقائيا ثم إضغط على زر (>) الذي ينقلها إلى اللائحة المجاورة . أي أنها ستبقى موجودة ,ولكنها لن تنشأ وتحجز مكان بالذاكرة حتى تقوم بطلب ذلك من شفرتك . سيلزمك الان سطر إضافي كي تستدعي النموذج (Form) , وهو سطر إنشاء الفورم في الذاكرة : procedure TForm1.Button1Click(Sender: TObject); begin with Tform2.create(nil) do show; end; أو procedure TForm1.Button2Click(Sender: TObject); var frm2:Tform2; begin frm2:=TForm2.Create(Application); frm2.Show; end; ولاتنسى تحرير الذاكرة عند الإغلاق : form2.free; ************************************* 5- إستخدم توابع النظام (Windows API) بدلا من كتابة شفراتك الخاصة . لإنها أسرع , وتوفرا كثيرا بالحجم . كما انها حتما مدروسة اكثر من شفراتك مهما تعبت عليها . مثال : لنقل التركيز إلى العنصر التالي (مشابة لفعل الزر TAB) يمكننا كتابة شفرة شبيهه بالتالية : procedure Do_Tabs(Sender: TObject; var Key: Word); var CtlCount: integer; begin  if Key = VK_RETURN then    if (Sender is twincontrol) then begin // ÊÚÏíá åäÇ      if (sender as twincontrol).TabOrder = num_of_winControl_parent(sender) - 1 then      begin      //  for CtlCount := 0 to (sender as twincontrol).Parent.parent.ControlCount - 1 do        //  if ((sender as twincontrol).Parent.parent.Controls[CtlCount] is twincontrol) then if ((sender as twincontrol).Parent.parent.Controls[CtlCount] as TWinControl).TabOrder=           //   ((sender as twincontrol).Parent.TabOrder +1) then             //  (sender as twincontrol).Parent.SetFocus;      end      else      begin        for CtlCount := 0 to (sender as twincontrol).Parent.ControlCount - 1 do          if ((sender as twincontrol).Parent.Controls[CtlCount] is twincontrol) then            if ((sender as twincontrol).Parent.Controls[CtlCount] as twincontrol).TabOrder = (sender as twincontrol).TabOrder + 1 then              if (((sender as twincontrol).Parent.Controls[CtlCount] as twincontrol).Enabled) and (((sender as twincontrol).Parent.Controls[CtlCount] as twincontrol).Visible) then              begin                ((sender as twincontrol).Parent.Controls[CtlCount] as twincontrol).SetFocus;                break;              end;      end; ما رأيك الآن بتجربة هذا , الذي يقوم بأفضل من عمل الشفرة السابقة : Form1.Perform(WM_NEXTDLGCTL, 0, 0); خذ مثلا الحجم الصغير الذي سينتج معك عند بنائك لنوافذ المشروع بإستخدام API من نظام التشغيل بدلا من إستخدام مكتبة VCL . بغض النظر عن صعوبة أو سهولة أو الضريبة المتعلقة على ذلك , تعتبر توابع API من أسلحة المبرمج الذي يجب التسلح بها . ************************************* 6- حسن إلى أبعد حد الموارد التي تستخدمها في برنامجك : مثل الصور والأيقونات وملفات الصوت .. الخ .. إبتعد عن التنسيقات الغير مضغوطة للصور مثل BMP وإستبدلها ب GIF أو JPEG إن أمكن . تاكد على كل حال من خصائص أخرى مثل عمق الألوان – لاداعي لإستخدام صورة ب 64K color عندما تكفي صورة ب 256 color . ينصح بتحويل صور jpeg الأقل من 255 color إلى صور Gif الأصغر حجما . (راجع مكتبة الادوات للحصول على دعم لصور GIF في العنصر image ) - خدعة صغيرة : عندما تتعامل مع المكون image في دلفي , فإنك على الغالب لاحظت الخاصية stretch . هذه الخاصية تقوم بمد الصورة حسب حجم ال image التي تعطيها أياه , بإمكانك بالتالي إستخدام صورة تدرج لوني بطول صغير (وليكن مثلا 150 بيكسل) وعرض (1 بيكسل فقط) ثم ضبط خاصية stretch إلى true ومد الصورة على الفورم لتحصل على شكل جميل بحجم صغير . يفضل في حال كنت تستخدم الصورة نفسها اكثر من مرة في أكثر من مكان أن لا تكرر الصورة نفسها في العنصر image لإن ذلك سيضاعف حجم التخزيم كل مرة , ويعتبرها صورة جديدة , يفضل التعامل مع imageList عوضا عن ذلك , أو تحميل الصورة من الملف (LoadFromFile) ************************************* 7- عندما تستخدم إجرائية او أثنين فقط في وحدة ما , وكانت شفرة الوحدة مفتوحة امامك . قم بنسخ شفرة الإجرائيات اللازمة منها وضعها في برنامج بدلا من إضافة الوحدة إلى قائمة uses . لإنه بمجرد استخدام أحد الأجرائيات المعرفة ضمنها وإضافتها إلى المشروع سيتم حجز الحجم الكامل لها وتضاف كلها إلى الملف التنفيذي وليس فقط الإجرائيات التي إستخدمناها في المشروع . يمكنك القيام بهذه الطريقة في الكثير من الحالات . ************************************* 8- خفف من استخدام المكونات إن استطعت وخاصة المكونات اللامرئية non_visual components حيث يمكنك إضافة أكوادها يدويا إلى برنامجك , دون التكلف بوضع العنصر الذي سيجر وراءه عدة وحدات ويشغل حجم ربما لست مضطر لتخسرة . حتى المكونات العادية يمكنك التخفيف منها لاداعي مثلا لوضع مكون مستعرض الإنترنت على النموذج لمجرد عرض رابط لموقعك بإمكانك بسطر واحد القيام بإستدعاء ال internet explorer من ويندوز وفتح موقعك من خلالة . ************************************* 9- تعلم وأستخدم تقنيات سريعة في شفرتك . مثل استخدام الاسمبلي المضمن مثلا والذي يكفل لك العمل بسرعة رهيبة . أو إضافات inline في النسخ الجديدة من دلفي (Delphi 2005 مثلا ) وأحذر تمام الحذر عند الحلقات الطويله (long loops) أو التوابع الكثيرة الإستدعاء , او داخل المؤقتات وغيرها من الامكنة التي يتضاعف فيها الخطأ الصغير ليسبب بطء في التنفيذ لاداعي له . ************************************* 10 – إختر خوارزمية عمل مناسبة . دائما تذكر "أن يقوم الحاسب بإختيار قيمة من مجموعة قيم , أسرع من أن يقوم بحساب هذه القيمة معظم الأحيان" مارأيك بجداول الجيب (Sin) والتجب (Cos) التي تستخدم في برامج المحاكاة التي تتطلب سرعة عالية . أستبدل البحث الخطي مثلا بالبحث الثنائي فهو أسرع حتما وأخيرا وليس اخرا .. بسّط شفرتك . الشفرة البسيطة أسرع بالتنفيذ , وأصغر بالحجم الملف المرفق test.zip
  18. هدية الإمتحانات الآن . أهديكم هذا المكون البسيط , (مع الشفرة) وهو عنصر بسيط من العناصر غير المرئية في زمن التشغيل , يقوم بتحسين شكل ال DBNavigator المستخدم في قواعد البيانات .. بحيث يمكنك من إختيار صور أو عناوين أزرار , أو تغيير لونة ..... أظن أن إستخدام العنصر غاية في السهولة .. وهو نتيجة عناء وصراع مع الدلفي أستمر حوالي الساعة .. كانت نتيحة التمخض عن هذا الكمبونينت . لا أعرف إذا كانت عناصر مشابة لة موجودة على النت , ولكن ما يسعني أن أقول في هذة العجالة هو أنني أحببتة (مع أنة شغلي ... "ماحدا بيقول عن زيتو عكر") أهم شيء فية هو أنة صغير , وفي حال قمت بتشغيل برنامجك ولا تريد أن تنصب الكمبونينت يمكنك حذفة بسهولة (+حذف السطر NaveSkin1.Skin ) وسيعمل برنامجك دون مشكلة بعد ذلك .. 1. يستطيع العنصر تغيير صور النافيكيتور الذي تربطة معة إلى أي صور تختارها أنت (مبدئيا BMP ) 2. كما يستطيع كتابة عناوين للأزرار . مع الصور أو لوحدها 3. كما يستطيع تغيير لون النافيكيتور ... همههمهم ,, صغير وظريف الرابط : www.angelfire.com/mac/orwa/NavSkin.zip
  19. هذا المشروع . هو برنامج بريد الكتروني (زبون) متكامل الميزات . كنت قد طورتة من مثال MailClient المرفق مع أمثلة أدوات INDY وهو جيد ويستطيع الإتصال فعليا وتلقي الرسائل والمرفقات وإرسالها .. يعتبر المشروع مثال وافي وكافي لعناصر SMTP و POP من INDY , المشروع قديم قليلا (منذ حوالي سنتين ) ولكنه جيد جدا ويستحق المحاولة .. هدفي من وضع المشروع مع شفرته هنا , هو تطوير المشروع والمشاركة فيه من كمية أكبر من الأعضاء ,, وأنا مستعد لبحث أي من جوانب المشروع مع الأخوة الأعضاء مبدأيا لايوجد أي قيد لنسخ المشروع وتعديلة , ولكني سأكون ممنون في حال الإشارة إلى كمصدر أول للشفرة . أولا قم بتنزيل المشروع من الرابط : تنزيل المشروع الحجم حوالي 700 kb .. مع الملف التنفيذي والشفرة ثم بإمكانك مشاركتنا طوير المشروع . الهدف الحصول على نسخة مطورة من المشروع نضع فيها أسماء المشاركين بالمشروع وأسم المنتدى , وإذا أردتم نقوم بتوزيعها مجانا فيما بعد , ومفتوحة المصدر سأقوم بإدراج بعض الشروحات قريبا .
  20. هذا المكون Ar_Man , مخصص لزيادة توافقية دلفي مع اللغة العربية , يكفي وضع المكون ArMan على الفورم حتى تأخذ شفرتك النسخة العربية من الرسائل ومربعات الحوار . والآن أصبح بإمكانك إعداد برامج عربية دون أن تشعر بالإحباط لظهور رسائل عليها أزرار باللغة الأجنبية ((Ok , Yes , No , Ignore, Yes to all ...... )) .. الخ أو لظهور كتابة عربية من اليسار لليمين .... أو لظهور ترتيب الأزرار بشكل عكسي من اليسار لليمين أو لظهور الصورة باليسار , وبالتالي تغطي النص العربي المكتوب ؟؟؟؟؟ .... الخ ... ببساطة أضف ArMan إلى الفورم , عند الحاجة . وستتخلص من كل ذلك . إعداد عروة عيسى . رابط المكون : http://www.orwah.net/Delphi/Tools/Ar_Man/Ar_Man.htm
  21. ماذا تعرف عن CodeGear !! آخر الأخبار : إنتهاء عملية فصل لغات البرمجة بشركة مستقله عن بورلاند , وإنطلاق CodeGear الشركة الجديدة التي ستصدر النسخة القادمه من دلفي وبقية بيئات التطوير وتوقعات بإنتاج بيئات تطوير جديدة . كتبت مقاله صغيرة عن الموضوع هنا : http://www.orwah.net/modules/news/article.php?storyid=109
  22. شكرا لك و هذا كتاب أيضا : http://www.orwah.net/modules/mybooks/singl...id=3&lid=25
  23. لقد تم بدء الدوره الكامله للغة . في هذه المشاركه سنضع روابط الدروس (المحاضرات) حتى يسهل للمتتبع العثور عليها بين مشاركات الأعضاء المختلفه : -------------------------------------------------------------------------------------- المحاضرة الأولى الرابط : http://www.arabteam2000-forum.com/index.ph...ndpost&p=273158 العنوان : تطبيقات النوافذ , التصميم وكتابه الشفرة , البرمجه المبنيه على الأحداث , جزء (1) ملاحظات : معلومات عامه إعداد : ORWA -------------------------------------------------------------------------------------- المحاضرة الثانيه الرابط : http://www.arabteam2000-forum.com/index.ph...ndpost&p=278633 العنوان : دلفي لغة برمجه , تقديم دلفي ملاحظات : معلومات عامه إعداد : ORWA -------------------------------------------------------------------------------------- المحاضرة الثالثة الرابط : http://www.arabteam2000-forum.com/index.ph...ndpost&p=296426 العنوان : بيئة تطوير دلفي . (Delphi programming environment.) ملاحظات : إعداد : ORWA -------------------------------------------------------------------------------------- المحاضرة الرابعة الرابط :http://www.arabteam2000-forum.com/index.php?showtopic=60522&view=findpost&p=298418 العنوان : المحاضرة العملية الأولى (1) . بدء العمل ملاحظات : إعداد : ORWA --------------------------------------------------------------------------------------
  24. الدرس العملي الأول . -1- راجع المشاركة المثبتة للإضطلاع على قائمة الدروس , وأضطلع على الدروس السابقة بدء مشروع جديد في دلفي : عندما تفتح دلفي للمرة الأولى , ستجد انها إفتراضيا فتحت لك مشروع جديد جاهز للعمل , على كل حال لبدء مشروع جديد في أي وقت فالموضوع سهل جدا : من قائمة File إختر new ثم application . (file > new > application ) . وستجد مشروعك الجديد اصبح جاعزا لبدء العمل . حفظ مشروع دلفي : يفضل أن تقوم بحفظ مشروعك من البداية , وأنصحك هنا بحفظ كل مشروع في مجلد جديد بإسم يعبر عنه . لكي لا تختلط ملفات المشاريع المختلفة مع بعضها البعض , لحفظ مشروع دلفي من قائمة File إختر save All , والتي ستحفظ لك كل ملفات المشروع في المجلد الذي سيتم إختيارة . تشغيل المشروع : بعد تصميم مشروعك وكتابة شفرته , يلزمك تشغيل المشروع لتوليد الملف التنفيذي النهائي , وتجربة المشروع . تشغيل المشروع سهل جدا , من قائمة Run أختر أول خيار وهو Run كذلك . ستلاحظ قيام دلفي بسرعة بتشغي المشروع , وسترى أمامك النموذج الفارغ مع أزراره الأساسية (الإغلاق والتكبير والتصغير) , لإغلاق التنفيذ , أغلق النموذج بشكل طبيعي من علامة الX (الإغلاق) في الزاوية اليمنى . الملف التنفيذي : بعد القيام بتشغيل المشروع مرة على الأقل ستجد إضافة ملف جديد إلى مجموعة الملفات في المجلد الذي حفظ فيه المشروع , سيكون إسمه على الغالب (Project1.exe) وأيقونته تشبة أيقونة الدلفي , هذا هو الملف التنفيذي النهائي الذي تريدة , ويكفي نسخة على أجهزة الآخرين ليعمل مشروعك (مبدأيا على الأقل) تلميح : الحفظ والفتح وإنشاء مشروع جديد وتشغيل المشروع, وظائف متكررة كثيرا لذلك بإمكانك التعامل معها من شريط الادوات او من إختصارات لوحة المفاتيح (ألقي نظرة سريعه على شريط أدوات دلفي وستلاحظ أمكنة هذه الأزرار بسهولة) الخطوة الأولى : مشروعك الأول بلغة دلفي عند تعلم أي لغة برمجة ستمر بهذه الخطوة التي تسمى مشروع هيلو وورد (Hello World project) . برنامج هيلو وورد الذي سنقوم به الآن هو فقط عبارة عن نافذة مكتوب عليها "Hello world" في عنوانها , وفيها زر عند ضغطة سيعطيك عبارة Hello world بمربع رسالة . بعد إنشاء مشروع جديد , 1- قم بوضع زر على النموذج (Form) ,و غير تسمية الزر إلى Hello world (بضبط خاصية Caption التي تعني العنوان من ضابط الكائنات) . 2- غير تسمية النموذج إلى Hello world project (يالله قم بذلك لوحدك) . 3- بالضغط على الزر مرتين , ستفتح امامك نافذة محرر الشفرة , وتكتب لك دلفي تلقائيا جزء من الشفرة لمساعدتك في إختصار الوقت . وستبدو بالشكل التالي : 4- procedure TForm1.Button1Click(Sender: TObject); begin end; الشفرة التي ستكتبها بين Begin و End ستنفذ عند ضغط الزر بعد تشغيل المشروع , أكتب الآن السطر التالي : procedure TForm1.Button1Click(Sender: TObject); begin showmessage('Hello World!'); end; قم الآن بحفظ المشروع , لتجربة مشروعك أضغط زر Run (أو من قائمة Run كما أتفقنا ) . سيظهر أمامك النموذج الجديد , لاحظ عنوان النموذج كما ضبطناه آخر مرة , ولاحظ فيه الزر بعنوان hello world , عند ضغط الزر ستظهر لك رسالة HelloWorld مع زر ok لإغلاق الرسالة . مبروك , .. انهيت مثالك الأول ,, أهلا بك في عالم الدلفي , إذا كنت مصر على تجربة ما قمت به من أجل إسم آخر , أعد ذلك وغير النص المكتوب في message من helloworld إلى إسمك الخاص (أكتبة بالعربية هذه المرة) . ماذا حدث : قمنا كما لاحظت بجزأي بناء أي برنامج , التصميم وكتابة الشفرة , التصميم , من ضبط خصائص النموذج , ووضع زر وضبط خصائصة كتابة الشفرة المتعلقه بإظهار صندوق رسالة بزر OK . تعليمة الإظهار هذه متكررة كثيرا , لاأعرف ماذا سأشرح عنها , هذه التعليمة بكل بساطة تظهر مربع الرسالة التي تكتبها لها , مع زر OK الإفتراضي للإعلام بالإنتهاء من قراءة الرسالة . جرب أن تضع عدة رسائل وراء بعضها في الشفرة ولاحظ ان الرسائل لن تظهر معا , بل كلما ضغطنا زر OK لواحدة تظهر الرسالة التي تليها : procedure TForm1.Button1Click(Sender: TObject); begin showmessage('1'); showmessage('2'); showmessage('3'); showmessage('4'); showmessage('5'); end; ملاحظة : لاحظ وجود فاصلة منقوطة بعد كل تعليمة مستقله , لإخبار مترجم دلفي بإنتهاء التعليمة . ثلاث أنواع لسطور الشفرة : التعليمات المستقلة . الخصائص . المناهج . توقع أن تتعامل مع هذه الطرق الثلاث في هذه الدورة . أولا : التعليمات المستقلة , مثالها تعليمة Showmessage التي عرفتها منذ قليل , وهي تعليمات بسيطة نكتبها مباشرة ونمرر لها القيم اللازمة . ثانيا : الخصائص : كما أتفقنا في الدروس السابقة , لكل عنصر في دلفي مجموعة من الخصائص والمناهج , الخصائص هي صفات العنصر , مثل اللون العرض الطول الموقع العنوان الخ ... عادة وحتى الآن تعلمت كيف تغيير الخصائص من ضابط الكائنات , ولكن ضابط الكائنات ليس موجود في زمن التنفيذ مع الملف التنفيذي النهائي , السؤال الآن كيف أغير الخصائص برمجيا , (في زمن التنفيذ) الحل : كل خاصية يمكن ان تراها في ضابط الكائنات , وأكثر من ذلك , دعني أقول كل خاصية يمكلكها العنصر تستطيع الوصول إليها من الشفرة بفصلها بنقطة عن أسم العنصر الذي يملكها , ومن ثم نسب القيمة المرادة إليها بشرط ان تكون من نفس النوع (لاتنسب نص لخاصية اللون , ولا تاريخ لخاصية رقمية) : مثال : لتغيير لون النموذج إلى أزرق بإمكانك تغيير خاصية اللون الخاصه به من ضابط الكائنات . وبإمكانك أيضا الوصول لخاصية اللون من الشفرة وتغييرها برمجيا , والسماح للمستخدم بتغيرها حسب الحاجة. ضع 3 أزرار على النموذج : الزر الأول : للون الأزرق : ضع في شفرته (أنقر مزدوجا عليه ليفتح محرر الشفرة) التالي : procedure TForm1.Button1Click(Sender: TObject); begin form1.Color:=clblue; end; الزر الثاني , للون الأحمر في شفرته : (نفس الزر السابق لكن اللون أحمر) procedure TForm1.Button1Click(Sender: TObject); begin form1.Color:=clred; end; الزر الثالث : للون الأخضر : procedure TForm1.Button1Click(Sender: TObject); begin form1.Color:=clgreen; end; شغل المشروع وجربة , وتمتع بتغيير ألةان الفورم في زمن التشغيل . جميل جدا .. ولكن ... ماذا فعلنا ؟ نحن نريد تغيير خاصية لون النموذج إلى الأزرق بمجرد ضغط الزر . حسنا سأعيد ترتيب الأمر كالتالي , للنموذج خاصية اللون , أريد تغيرها إلى أزرق . إذا أخذت بالحسبان أنه للوصول إلى أي خاصيه أنت بحاجة لفصلها بنقطة عن أسم المكون العائدة له , ستستنتج بذكاء أنه للوصول إلى خاصية اللون يجب أن أكتب : Form1.color .. (ااه يا ذكي) حسنا عليي الآن نسب لون ما لخاصية اللون (وكما أتفقنا مع الأخذ باالحسبان مراعاة التوافق بالأنواع ) طيب يا أخي ؟؟ كيف بدي فهم الكمبيوتر أنو Blue هي لون وليست نص , لذلك يا صديقي تملك دلفي تعريف خاص للألوان هو إسم اللون مسبوقا ب cl من كلمة color أي لون . يعني اللون الأزرق هي color blue وفي دلفي clBlue . أصبح الموضوع سهلا , لقد جمعنا كل أطراف المعادلة . الطرف الأول form1.color , الطرف الثاني clred , والنسب وهو في دلفي (:=) , سأفترض أن السطر : form1.Color:=clgreen; أصبح مفهوما أمامك .. هاقد انهينا أثنين . التعليمات والمستقلة والخصائص , ما رأيك بالإنتقال للثالثة : ثالثا : المناهج (Methods) : صديقي العزيز , بإمكانك إحتساء كأس من الشاي من اجل ترسيب المعلومات السابقة بشكل جيد في الرأس .. لا مشكلة سأنتظرك .. ؟ هم هل أنتهيت .. ؟ على بركة الله . ألم تلاحظ معي أن الخصائص غير مناسبة للعمل في كل شيء ؟ إنها تسمح لي بتغيير صفات العناصر , وهذا شيء رائع , ولكن كيف سأنفذ أفعال على هذه العناصر . الجواب بنفس الطريقة (طريقة الفصل بنقطة ليس إلا) , ويسمى هذه الأفعال بالمناهج . يملك كل عنصر مجموعة من الأحداث ومجموعة من المناهج (الأفعال) هذه المناهج التي يملكها تسمح له بتنفيذ أفعال معينه خاصة به . مثلا : النموذج يملك فعل الإغلاق .. لإغلاق النموذج بذكاء حاد نستنتج وحسب قاعدة النقطة أن الشفرة كالتالي : Form1.close; جرب ذلك , ونفذ المشروع .. مارأيك ,, جميل هاه هذا هو المحور الثالث من الطرق التي ستتبعها عادة لكتابة الشفرات والتحكم في مكونات برنامجك وضبط افعالة : تمرين : على إفتراض أن النموذج يملك خاصتي الإرتفاع والعرض (Width Height ) قم بإنشاء برنامج يضبط حجم النموذج إلى (500*500) : الحل : procedure TForm1.Button1Click(Sender: TObject); begin form1.Height:=500; form1.Width:=500; end; تمرين2 : بفرض أن عنصر مربع النص (Edit) يملك خاصية text لتحديد النص المكتوب فيه . أنشيء برنامج يحوي edit و button . عند نقر الزر يكتب في مربع النص عبارة "بسم الله الرحمن الرحيم" . الحل : نضع العناصر على النموذج : والشفرة هي : edit1.Text:='بسم الله الرحمن الرحيم'; لاحظ , وضع النص بين علامتي تنصيص لإخبار دلفي بإنه نص يكتب كما هو .. تنبية : عند التعامل مع النصوص في شفرة دلفي يجب وضعها ضمن إشارتي تنصيص (' ') . تمرين 3 : أنشيء برنامج يحوي زر ومربع نص , نكتب في النص أسمنا وعند النقر على الزر يظهر الإسم في مربع رسالة : الحل : ShowMessage(edit1.Text); لكل عنصر أكثر من معالج حدث : كما لاحظت حتى الآن لكتابة شفره تنفذ عند ضغط الزر كنا ننقر مرتين على الزر فتظهر لنا دلفي المحرر وقد جهز للكتابة تحت حدث الضغط الإفتراضي . السؤال , ألا يمكنني كتابة شفرات تنفذ في أحداث مختلفة (عند تحريك مؤشر الفأرة مثلا , أو عند ضغط زر , أو عند النقر المزدوج , أو عند السحب والإفلات ) ؟ الجواب نعم , تسمح لك دلفي بإستخدام كل ذلك , ولكنها تسرع عليك العمل بإختيار الحدث الأفتراضي عند النقر المزدوج فوق عنصر . لإختيار كتابة شفرتك في حدث مختلف , تذكر ماتحدثنا عنه في الفقرات السابقة وضابط الكائنات .. ؟ لماذا تتأتأ .. ؟ ألم نقل أن ضابط الكائنات يحوي صفحتين صفحة خصائص وصفحة أحداث ؟ . ضع على النموذج العنصر Label (لافتة تعرض نص ما ولاتستخدم للإدخال , فقط للعرض) من ضابط الكائنات تستطيع ضبط خاصية العنوان caption كم تعلمنا , المهم الآن لاحظ في ضابط الكائنات الصفحتين properities و Events .. إختر الصفحة الثانية (صفحة الأحداث Events) ستجد لائحة بالأحداث المتوفرة لهذا المكون . onClick : تنفذ عند النقر بالماوس . onDblClick : تنفذ عند النقر المزدوج ondragdrop : تنفذ عند السحب والإفلات … .. .. Onmousemove : تنفذ عند تحريك الفأرة فوق هذا العنصر Onmouseleave : تنفذ عند خروج الفأره من فوق العنصر الخ ... لكتابة الشفره تحت حدث من هذه الأحداث . ننقر نقر مزدوج على النص الملاصق لإسم الحدث , وبعدها كما تعرف سيفتح محرر الشفرة , وماستكتبة هنا سينفذ عند تنفيذ الحدث عند التشغيل . مثال : العنصر السابق label يحوي الحدثين الأخيرين .. ماذا سنفعل بهما .. حسنا دعنا نضيف تأثير على هذا العنصر بحيث عندما يأتي مؤشر الفأرة فوقة يصبح لون الخط أحمر , وعند ذهابها يعود أسود : أولا إضبط خاصية Font لهذا المكون من ضابط الكائنات وأختر خط كبير وواضح . ثانيا : في الحدث onmousemove ضع : (نقر مزدوج فوق مربع النص الملاصق) Label1.Font.Color:=clred; وفي حدث onmouseleave ضع : Label1.Font.Color:=clblack; لتصبح الشفرة كالتالي : procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,  Y: Integer); begin Label1.Font.Color:=clred; end; procedure TForm1.Label1MouseLeave(Sender: TObject); begin Label1.Font.Color:=clblack; end; (لاحظ الخاصية الفرعية color لخاصية الخط font , ولاحظ ترتيب الخصائص .. سهل أليس كذلك ؟ ) . نفذ المشروع ولاحظ التألق غند تحريك المؤشر فوق اللافتة . لقائنا في الدرس القادم .. (إذا لم تقرأ الدرس جيدا وتعيد تنفيذ كل ماورد فيه بيدك ستتعب معي في فهم الدروس القادمة , وأنا جاهز لأي سؤال في المنتدى) عروة عيسى www.orwah.net شكرا للإشارة للمصدر , وتملك حرية نقل والتغيير الكاملة
  25. قمت اليوم بمعالجة بعض الأخطاء البرمجية .. أرجو إبداء الرأي .. الأخ الشمري جرب مرة اخرى , وجدت BUG حيث لم تكن تقلع اللعبة إذا كان الجهاز لايدعم تردد معين للشاشة (على ما أظن التردد 70 إذا غير مدعوم لم تكن تقلع ..) الرابط الرسمي بدأ من الآن سيكون هو : http://www.orwah.net/secret_mission