• الإعلانات

    • فيصل الحربي

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

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

عبد المنعم محمد

اعضاء
  • عدد المشاركات

    182
  • تاريخ الانضمام

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

السمعه بالموقع

5 عادي

عن عبد المنعم محمد

  • الرتبة
    عضو

أحدث الزائرين لملفلك الشخصي

3,733 زياره للملف الشخصي
  1. السلام عليكم ورحمة الله وبركاته ما شاء الله ، بارك الله لكم فى مجهودكم وزادكم علما
  2. بســم الله الـرحمــن الرحيــم السلام عليكــم ورحمـة الله وبركاتــه يمكنك ان تجعل القائمة تختفى بعمل الاتى: 1- ان ترسم MovieClipحول القائمة وان تجعل الشفافية له تساوى صفر 2- ان كنت تستخدم الActionScript3 ستكتب MovieClipName.addEventListener(MouseEvent.CLICK,functionName); function functionName(evt){ MovieClipName.visible = false } [b]
  3. السلام عليكم ورحمة الله وبركاته أدعو لكم ولجميع المسلمين بأن يبارك الله لكم فى رمضان وان تزيد فيه عباداتكم وأن يتقبل الله فيه منكم صالح أعمالكم وأن يمحو الله فيه سيئاتكم وأن تخرجوا منه كيوم ولدتكم أمهاتكم وتكون الجنة هى داركم . أخوكم ومحبكم : عبد المنعم
  4. السلام عليكم ورحمة الله وبركاته بارك الله فى خطواتك أخ محمود وزادك علما . هذا فعلا ما يحتاج إليه المنتدى . وأتمنى على الأخ الأستاذ المشرف مصطفى أن يفتح باب مناقشة واستفسار مستقل وترك بابك لشرحك فقط ليكون زُبَد خالص . والسلام عليكم ورحمة الله وبركاته
  5. السلام عليكم ورحمة الله وبركاته كيف حالكم أخ ابراهيم ؟ والله وحشتنى جدا . أين كنت حضرتك ؟ أنا موجود أخى الكريم وقد أضفت لباب النماذج الكثير هذا الأسبوع . ولكن يبدو أن الباب لا يطرقه أحد ربما لأنه مثبت وبعيد عن المشاركات المتجددة فلم يعد أحد يطرقه . وقبل هذا كان حضراتكم غائبون ربما للتصييف . فحمدا لله على سلامتكم . وعندما أدخل المنتدى مثل الآن أجد تحركات جميلة جدا بمشاركات الكثير من الفضلاء . فالحمد لله على هذا النشاط وخاصة الخبير الأخ محمود سمير الذى أثرى المنتدى بمشاركاته الغنية . وأيضا الأخ المشرف العزيز مصطفى ومتابعته لاحتياجات الأخوة ، واهتمامه بطلباتهم . ولكن كما قال المايسترو المشرف فلكل ظروفه التى تتحكم فيه رغما عنه . فليعذر بعضنا بعضا . وما شاء الله لا أجد أحدا يتأخر على أحد ولا يبخل عن أحد ، فاللهم انفع الجميع وزدهم علما يا كريم . وأرجو ألا تغيب عنا أخ إبراهيم فكما أستشعر منك أنك لست متزوجا بعد ، أى ما زلت فى دائرة السعادة . والسلام عليكم ورحمة الله وبركاته
  6. السلام عليكم ورحمة الله وبركاته تكملة إلى حضراتكم ما فاتنى فى المشاركة السابقة وما يمن الله به علينا إن شاء الله تعالى . (للأخ عمر : كما ترى حضرتك ، المشاركتان السابقتان عدد التحميل للمثال فى الأولى 5 مرات والمثال فى المشاركة التالية صفر . وتقول هناك متابعة !!! وقرأت فى مشاركة أحد الفضلاء اللوم والتعنيف على عدم وجود شرح ولا أمثلة ومطلوب تبويب وكذا وكذا . ولا أدرى هل يطالعون المنتدى ؟ أم فقط ينتقدون ؟ ) استخدمنا أيضا خاصية cancel وربطناه بمفتاح (خروج) وهنا جعلنا قيمته t أى true ومعنى هذا أن مفتاح الخروج هذا سيكون مساويا للضغط على مفتاح escape فى اللوحة . أى أنه بالضغط على أحدهما ستخرج من الفورم وتغلقها . استخدمنا أيضا خاصية enabled مع مربعات النص وجعلنا قيمتها f وذلك لجعلها غير ممكن التعديل أو الكتابة فيها تكلمنا عن الـ event التى اسمها keypress وضبطناها أن تستجيب عند الضغط على مفتاحى السهم . ومن الممكن أيضا استخدامها مع مفاتيح أخرى . والأغلب فى الاحتياج فى رأيى هو مفتاح enter ورقمه 13 . ولكن متى نحتاج إليه ؟ عند عملية الإدخال وخاصة إن كنا ندخل سجلات كثيرة فليس من اليسير ترك اللوحة والإمساك بالماوس عند كل مرة انتهاء من الإدخال والضغط على زر عمليته أنت على الفورم للحفظ والانتقال إلى السجل التالى . بل من الأفضل أنه بعد إدخال بيانات مربع النص الأخير فى الفورم وعند الضغط على مفتاح الإدخال enter يتم الانتقال مباشرة إلى السجل التالى . وسيتضمن المثال إن شاء الله تعالى تطبيقا على ذلك . كيف يتسنى لنا ذلك ؟ عند النقر مرتين على مربع النص تنفتح نافذة الـ methods والـ events التى يمكن رب مربع النص بها . فنختار keypress ونكتب بها الأوامر المطلوبة . والمتغير nKeyCode هو المسئول عن ترجمة المفتاح المضغوط ولذلك نقيس عنده . هنا استعملنا بعض الدوال : الدالة Empty ومن معناها (فاضى) نعرف وظيفتها أى أنها تقيس إن كان هذا المتغير فاضى ( ليس به مدخلات أو قيمة ) الدالة val ومعناها (قيمة) أى قيمة المدخل النصى تصبح رقمى بهذه الدالة . أى تحولها من نص إلى رقم . استخدمنا علامة التعجب ! وهى تساوى not أى ليس . و!empty معناها ليس فارغ . وقد أجرينا اختبار على مربع النص الأول فإن كان غير فاضى يبدأ التعامل مع الجدول بإضافة سجل فاضى وتبديل بياناته بمربعات النص فى الفورم . لاحظ أننا استخدمنا متغيرات ( هنا مربعات النص) لتستقبل القيم المدخلة ثم بعد ذلك أضفنا سجل فاضى وبدلنا محتوياته بمحتويات هذه المربعات . وهذه مفيدة فى أى عملية قياس للبيانات قبل إدخالها إلى الجدول . هناك أيضا ملحوظة أخرى وهى طريقة الدقة فى الإشارة فى الفوكس : table1.salary أى الجدول الذى اسمه table1 ومنه الحقل الذى اسمه salary وهذه الطريقة للدقة فى الإشارة للمطلوب وعدم تداخله أو تشوشه مع غيره . thisform.text1.Value = '' هنا لجعل مربع النص فاضى بعد الاستفادة من محتواه ووضعه فى الجدول . هنا يتم إفراغه فى انتظار القيمة الجديدة المدخلة . وإلى حضراتكم الملف المثال : ente_key.zip اللهم علمنا ما جهلنا وانفعنا بما علمتنا يا كريم والسلام عليكم ورحمة الله وبركاته
  7. السلام عليكم ورحمة الله وبركاته اليوم إن شاء الله تعالى سأسوق إلى حضراتكم مثال على أزرار التحرك على الفورم للتحرك فى ملف جدول البيانات . وبما أننا وضعنا الأزرار على فورم فسنتعامل مع بعض الأمور نذكر منها ما يلى : الآن المفروض أن يكون قد تكون لدينا ولو مفهوم بسيط عن الـ method والـ event : الأول : إن الـ method عبارة عن مجموعة أوامر داخل اسم واحد وتستدعيها باسمها كالتالى : Thisform.release Thisform.refresh ولم تحتاج إلى كتابة أوامر لأنها مبنية جاهزة . ومع ذلك يمكنك وضع أوامر فى داخلهم ويتم تنفيذها عند استدعائها أيضا بنفس الطريقة . أما الـ event فلا تستدعيها بل هى من اسمها نعرف وظيفتها . فاسمها حادثة ، أى نضع مجموعة أوامر فى داخل هذه الـ event يتم تنفيذها عندما يحدث كذا ، كما هو الحال فى مثالنا هذا : استخدمنا keypress ووضعنا فيها عدة أوامر يتم تنفيذها عندما يحدث الـ keypress هذا . والمعنى ضغطة مفتاح . أى سوف يحدث كذا ( هذه الأوامر) عند الضغط على المفتاح الذى حددناه ( وفى مثالنا حددنا مفتاح السهم لأعلى ورقمه 5 ومفتاح السهم لأسفل ورقمه 24 . والـ event التى اسمها keypress تقف وتتابع ضغط المفاتيح وعندما يقع نظرها على المفاتيح المذكورة تنفذ الأوامر التى بداخلها ( وفى مثالنا : الحركة بين السجلات لأعلى ولأسفل بمقدار سجل واحد فى أى اتجاه ) أيضا يمكننا التفريق بين الـ method والـ event من نافذة properties بأن الأولى لها أيقونة خضراء والثانية لها أيقونة صفراء . أما النوع الثالث فى هذه النافذة وله أيقونة يد تشير بإصبع فهى للخواص properties . وقد استخدمنا فى مثالنا بعضها , مثل alignment التى تحدد التنسيق ، خصصنا بها مربع النص الخاص بالاسم وجعلناها تظهر محتواها من right اليمين . ومنها أيضا tabstop وجعلناها f أى false للأزرار بحيث إن التنقل بين الموجود على أرضية الفورم لا تشملهم أى لا تنتقل إليهم المؤشرة عند التنقل بين الـ objects التى على أرضية الفورم . وأيضا خاصية enabled أى ممكنة أم لا وقيمتها أيضا f لمربعات النص أى لا يمكن التعديل فيها . وخاصية disabledbackcolor أى لون الذى جعلت خاصية الـ enabled له f وتريد تحديد لون خلفيته . وعكسها disabledforecolor لتحديد لون الواجهة للذى enabled تساوى f . وأيضا لاحظ استخدام الـ method التى اسمها refresh بعد أى أمر انتقال فى الأزرار وهذا لإعادة عرض الفورم حسب السجل الجديد . ولم نضع فيها أوامر بل اكتفينا بالمبنى داخلها . واستخدمنا method أخيرة اسمها release فى زر الخروج . وأيضا لم نضع فيها أوامر. والآن إلى حضراتكم المثال : motion.zip اللهم علمنا ما جهلنا وانفعنا بما علمتنا يا كريم والسلام عليكم ورحمة الله وبركاته
  8. السلام عليكم ورحمة الله وبركاته فى بعض الاتصالات من بعض الأخوة الكرام وجدت بعض الاستثقال للمصفوفة . وقد ذكرت من قبل لحضراتكم أن مقدرة مبرمج قواعد البيانات تكمن فى عدة أمور أهمها : 1- مهارة متابعة مكان المؤشر الآن . 2- قدرة استخدام المتغيرات والمهارة فى السيطرة عليها . 3- منطق البرمجة فى ذهنك . وغير ذلك من إتقان الأوامر وتتاليها ومن الممكن أن تكتب أوامر لتؤدى مهمة ما ويكتب غيرك سلسلة أخرى ولكنها تؤدى نفس المهمة ، والمهم أنه فى نهاية الأمر يتم إنجاز المهمة . والمتغيرات ( حقول الذاكرة ) هى عبارة عن وسيلة هامة للمبرمج يؤدى بها ما شاء . وهى عبارة عن وعاء مؤقت يستقبل فيه المبرمج البيانات من المستخدم قبل أن يدخلها مباشرة فى الجدول . وهذا أفضل من استقبالها مباشرة فى الجدول حيث أنه ربما تكون هناك حاجة لإجراء بعض القياسات على البيانات المدخلة قبل إدراجها فى الجدول مثلما الحال مثلا فى برنامج درجات طلبة فى مدرسة فالدرجة التى يدخلها المستخدم ربما تكون أكبر من متوسط الدرجة لهذه المادة مثلا فيكون الأفضل قياسها أولا قبل إدخالها إلى الجدول . وهناك أمور كثيرة تبرهن على أنه من الأفضل استخدام هذا الوعاء ( حقول الذاكرة ) لاستقبال ما يدخله المستخدم . وهذه الحقول لها أنواع وأطوال مثل حقول الجدول فمنها الرقمى والحرفى والتاريخ والمنطقى . والمصفوفة هى عبارة عن وعاء من نفس الفصيلة ولكنه وعاء يسع عدة أوعية تحت مسمى واحد . أى مثل كرتونه بها عدة علب كل علبة بها محتوى مختلف والكل فى كرتونة واحدة . والاحتياجات إلى المصفوفة كثيرة جدا وفى مواطن كثيرة جدا . وإتقانها مطلوب للمبرمج . وهى ليست صعبة بالمرة . وبساطتها إجمالا فيما يأتى وهو يعد اختصار لما سبق : إعلانها Dimension arrayname[5] أى يا فوكس انشئ مصفوفة ( حقل ذاكرة متعدد ) اسمه arrayname واجعل تعدده خمس خانات . إذن سيكون عندى مخزن اسمه arrayname[1] و arrayname[2] و هكذا . وتخزين قيمة فى داخل أى مخزن منهم يكون بكل بساطة : Arrayname[1]='asasdfasdf ' أى أن العلبة رقم واحد سيكون محتواها كذا . وهكذا التعامل مع كل عناصر المصفوفة إشارة وتعبئة واستخراج . نرجع لموضوعنا اليوم وهو موقع المؤشر فى الجدول . ما أهمية هذا الموضوع ؟ إن بعض الأوامر فى الفوكس تؤدى بالمؤشرة إلى الحركة عن موضعها ، وهذا إن لم تعرفه وتتابعه بخيالك كانت النتائج مختلفة عن المتوقع . فكم من مرة فى بدايتى عندما كنت أعطى الأمر set filter مثلا وتكون النتيجة مختلفة فى المرة التالية عن المرة السابقة وهكذا أمر البحث locate مثلا الذى يذهب بالمؤشرة إلى نهاية الملف . وهكذا فإنه من المطلوب لكل مبرمج قواعد بيانات معرفة أين يقع المؤشر الآن . حيث إن إصدار أمر فى الوقت الفلانى سيقع على السجل الذى يقف عليه المؤشر الآن والأمر الفلانى سيحرك المؤشرة إلى مكان آخر وهكذا . وهنا تظهر الحاجة إلى معرفة أوامر الحركة : مثل goto و skip وأيضا معرفة أثر كل أمر ماذا يفعل بالمؤشرة . ويفضل لكل متعلم أن يعمل جدول به خمسة سجلات مثلا فالذى يتم على خمسة يتم على خمسين ألف ويعطى أوامر ويتابع فى الـ status bar (مسطرة الحالة) موقع المؤشرة . وأيضا دراسة موقع المؤشر يستلزم معرفة بعض الدوال الخاصة بالسجلات : وهى قليلة : مثل()eof أى نهاية الملف و bof() أى بداية الملف و recno() أى السجل الحالى و reccount() أى عدد سجلات الجدول المفتوح وهناك المتغير _tally الذى يخزن تلقائيا أن الجدول غير فارغ بعد أى أمر حركة . وفى عجالة سنربط كل ما فات كالتالى : للذهاب إلى السجل رقم خمسة : Goto 5 ويمكن أن يتم تخزين رقم السجل الحالى فى متغير ذاكرة : Var = recno() أى أن رقم السجل الحالى سوف يتم تخزينه فى متغير اسمه var وممكن حينئذ الذهاب إليه مرة أخرى عن طريق المتغير : Goto var الدالة eof() معناها أن المؤشرة تقف الآن بعد آخر سجل ، وليس هناك بيانات . ونحتاجها فى وقف الحركة التى بدأناها إن وصلنا إلى نهاية الملف : عن طريق الشرط : if eof() الأمر skip معناه اقفز بمقدار سجل واحد . فإن كتبت رقم بعده : skip 5 أى اقفز إلى خمس سجلات تالية . skip - 1 أى ارجع سجل واحد ويمكن الجمع بين skip والدالة eof() للتحكم فى ألا يقفز المؤشر بعد النهاية فيعطى رسالة خطأ ويوقف البرنامج ، فهنا يلزم التحكم بالحركة كالتالى : If not eof() وأيضا فى الحركة للخلف If not bof() متى نحتاج إلى skip ؟ فى الحلقات التكرارية التى نطلقها للتعامل مع الجدول سجلا سجلا واحدا تلو الآخر . عندما نعطى الأمر locate أى ابحث ، إن وجد المبحوث عنه وقف عنده وإلا وقف فى eof() وذهب بعدها ولا يصح أى أمر بعد ذلك إلا بإعادة تحريك المؤشر . وعندما يقف المؤشر على الذى وجده إن نجح البحث ربما يكون هناك سجل آخر ينطبق عليه البحث ، وللذهاب إليه نعطى الأمر continue فيذهب إلى السجل الذى ينطبق عليه البحث ، وإن لم يكن هناك سجل ينطبق عليه البحث ذهب أيضا إلى eof() . الأمر goto top يذهب بالمؤشرة إلى أول سجل بالملف وعكسه goto bottom الذى يذهب إلى نهاية الجدول . يبقى أمر واحد يحضرنى وهو أنه يمكن وضع أى أمر تحريك للمؤشرة فى زر على أرضية form . ونصعب الأمر قليلا : فى الفورم نحتاج إلى سهولة التحرك بين السجلات السابق والتالى . وهنا سندخل فى event التى اسمها keypress وهذا بالنقر على أرضية الفورم نقرتين . وندخل كود نجعل مفتاح السهم الأعلى يذهب إلى السجل السابق ومفتاح السهم لأسفل يحرك المؤشرة للسجل التالى وهكذا . وهنا نتعرف على كود المفتاحين ، حيث إن لكل مفتاح رقم كودى ، والضغط عليه يتم ترجمة المدخل إلى الرقم المناسب لهذا المفتاح ، ووجود هذا الكود فى جزئية keypress أى (ضغطة مفتاح( فضغطة مفتاح السهم تحرك المؤشرة كما ذكرنا . وهذا كالتالى : arrows.zip وهذه السطور إن وضعتها فى الـ event التى اسمها keypress فى أى فورم ستمكنك من التحرك بمفاتيح السهم لأعلى والسهم لأسفل بمقدار سجل واحد لأعلى ولأسفل حسب المفتاح . ورقم كود مفتاح السهم لأعلى هو 5 والمفتاح لأسفل رقمه 24 والمتغير nkeycode هو الذى يستقبل ضغطة المفتاح ويمرره إلى keypress event تم الجمع بين الأوامر السابقة من تحريك المؤشرة skip والدوال eof() و bof() و goto اللهم علمنا ما جهلنا وانفعنا بما علمتنا يا كريم والسلام عليكم ورحمة الله وبركاته
  9. السلام عليكم ورحمة الله وبركاته الله يسلمك أخ أحمد وشكرا جزيلا . وعلى فكرة عندما كنت فاضى كان الجميع غير موجودين وعندما انشغلت حضروا . آسف على التأخر وإن شاء الله سيكون الموضوع القادم هو أزرار التنقل والحذف . وحاول الاستغناء عن الويزرد . وأنا تحت أمرك ولن أتأخر قدر استطاعتى . والسلام عليكم ورحمة الله وبركاته
  10. السلام عليكم ورحمة الله وبركاته موضوعنا اليوم إن شاء الله تعالى هو cobmo box و الـ array : تناولنا فى المرة السابقة فى طريقة التعامل مع الـ combo box طريقة عمل new method : واليوم إن شاء الله سوف ننشئ new property . ما الفارق بين method و property ؟ الـ method وظيفة مستقلة وتستدعيها كما تستدعى refresh و release وغيرهم . والـ property خاصية وتستدعيها على object آخر وغير مستقلة . كما تستدعى visible و enabled و width وغيرهم ممن نستدعيهم مع object آخر يستندوا عليه ويعملوا عليه . فاليوم سننشئ property جديد أى خاصية جديدة وستكون فى شكل مصفوفة . وهذا يستدعينا أن نجمل بسرعة ماهية المصفوفة . قدرتك البرمجية تتوقف على عدة أمور : 1- سعة خيالك ودقة متابعتك لهذه السعة . 2- مقدرتك على متابعة المتغيرات التى أنشأتها وخط سيرها . 3- وكذلك أسماء الحقول فى الجدول وعلى أى منها يقف المؤشر حاليا وأين سيذهب بعد تنفيذ الأمر هذا . 4- دقة منطقك فى تخيل خطوات التنفيذ وتسلسلها لأداء ما تخطط له وعلى ذكر المتغيرات : بغض النظر عن نوعها وطولها فأنتم تعرفون هذا جيدا ، ولكن مع نوع المصفوفة array نتوقف قليلا : المصفوفة هى عبارة عن مخزن متغير واحد لعدة محتويات . وهذا المخزن الواحد باسم واحد وترقيم مختلف. كأن تقول box1 و box2 وهكذا المتغير box منه واحد واثنين ، فى رقم واحد نخزن شئ مختلف عن boxرقم اثنين . تسمية المصفوفة تكون arrayname[] وبين هذين الضلعين نضع عدد المخازن لهذا الاسم ، بمعنى إن قلنا arrayname[3] فمعنى هذا أنها ستحوى ثلاث مخازن arrayname[1] وarrayname[2] و arrayname[3] وهكذا تكون التسمية . ما هى طريقة إنشاء المصفوفة ؟ Dimension arrayname[5] أى أعلنا عن مصفوفة اسمها arrayname وعدد مخازنها خمسة . ماهى طريقة ملء مخزن فى المصفوفة ؟ Arrayname[1]=' sadfasfdasdf ' ما هى طريقة استخراج محتوى مخزن رقم 2 بالمصفوفة ؟ ? arrayname[2] أو تخصيص المحتوى لمربع نص : Thisform.text1.value = arrayname[2] ما هى طريقة شرط المخزن بالمصفوفة ؟ If arrayname[1] = 'sdsdfsdf ' وهناك دوال كثيرة للتعامل مع المصفوفة منها لنسخ مصفوفة فى أخرى ومنها لمسح بند فى مصفوفة ومنا لنسخ مصفوفة إلى أخرى ومنها لفهرسة مصفوفة ومنها لإضافة بند إلى مصفوفة وغيرهم إن ظهرت حاجة لهم أوردناهم إن شاء الله تعالى . متى تحتاج إلى المصفوفة ؟ فى مثل حالتنا هذه أنشأنا مصفوفة لتكون هى مصدر الكمبو بوكس ، وأيضا عند إنشاء متغير نحتاجه فى عدة أماكن فى برنامجنا ويكون متعدد المحتويات . فمثلا برنامج كنترول مدرسى يمكن عمل مصفوفة بها أسماء المواد حيث أننا سنحتاجها كثيرا فى أماكن عدة بالبرنامج . وهكذا . ويمكن أن يكون المصفوفة عندئذ من نوع public أى يراها البرنامج فى كل الأماكن . Public array arrayname[5] اليوم سنعمل مصفوفة array وتكون هى مصدر الـ combo box . وذلك عن طريق إنشاء property جديدة تكون بمثابة المصفوفة ، وتكون هذه الـ property هى اختيارات الـ combo box . الخطوات : 1- انشئى property جديدة واسمها مثلا combo_array[1] كيف تنشئها ؟ من قائمة form وهى أول اختيار . سينفتح لك صندوق اكتب الاسم ثم add ثم close . 2- فى الـ form نفسها اختر load وهى event كما عرفنا . وفيها يتم كتابة الأوامر التى تريد الـ form أن تحملها عند تحميل الـ form نفسها . وفيها عرف الـ array واملأها : كالتالى : Dimension this.combo_array[5] && عرف مصفوفة بعدد خمسة مثلا with this .combo_array[1] = 'company name 1' .combo_array[2]= 'company name 2' ** وهكذا مع العدد الذى تريد فى مصفوفتك من عناوين الشركات مثلا endwith لاحظ : 1- أننا استعملنا this ولم نقل thisform والاثنين صحيحان ولكن لأننا فى الفورم نفسها لم نحتج لذكر form ويمكن الاكتفاء بكلمة this . 2- التعامل مع بنود المصفوفة صار مثل التعامل مع أى property فتجد قبله نقطة ويتواجد بين with و endwith كخواص أى object فى الفورم . 3- فى نافذة properties وأنت تشير إلى الـ combo الذى صنعته غير الخصائص التالية : rowsource = thisform.combo_array rowsourcetype = array وهكذا ربطنا بين الـ array والـ combo بحيث أنها تصبح مصدر له . 4- الخطوة التالية تبقى طلب أو الإشارة لأى عنصر فى المصفوفة وسيكون بالطريقة السابق ذكرها مع زيادة أن يكون التعامل معها على أنها أيضا property إضافة إلى أنها مصفوفة . كيفية الإشارة لعنصر فى المصفوفة : يكون ذلك بالإشارة إلى الفورم نفسها أولا thisform ثم اسم المصفوفة ثانيا ومعه رقم العنصر كالتالى : فرضا عندك حقل text على ظهر الـ form اسمه company_name وستجعل محتوى الـ combo يحل به : company_name = thisform.combo_array[1] أى اجعل محتوى مربع النص هذا يساوى محتوى الـمصفوفة رقم 1 وهكذا الإشارة إلى باقى أو إلى جميع عناصر الـ combo والمطلوب من حضراتكم عمل مثال وإرفاقه لمناقشته سويا . اللهم علمنا ما جهلنا وانفعنا بما علمتنا يا كريم والسلام عليكم ورحمة الله وبركاته
  11. السلام عليكم ورحمة الله وبركاته أخ عمر انته لسه موجود لوحدك وسؤالك من يومين ؟ واحسرتاه ! بالنسبة لمنع أى فورم من أن تتمكن من استدعائها مرة أخرى وهى مفتوحة ولا حتى الفورم المفتوحة نفسها ولا يتم تنفيذ أى اختيار من قائمة عملتها وتكون كل اختيارات القائمة باهتة أى غير متاحة عليك بالآتى : وأنت على أرضية الفورم ( انقر عليها نقرة واحدة ) واذهب إلى نافذة properties وعند windowType اختر رقم 1 أى modal وسيتم لحضرتك المطلوب . اللهم علمنا ما جهلنا وانفعنا بما علمتنا يا كريم . والسلام عليكم ورحمة الله وبركاته
  12. ***** أين أنتم يا أحباب

    السلام عليكم ورحمة الله وبركاته شكرا لك أخى عمر . ولكن يبدو أنك وحدك . أما باقى الأخوة فيبدو أنهم فى المصيف . والسلام عليكم ورحمة الله وبركاته
  13. ***** أين أنتم يا أحباب

    السلام عليكم ورحمة الله وبركاته منذ ثلاثة أيام أدرجت مشاركة وذكرت حضراتكم بواجب من مشاركة سابقة ثم سكن المنتدى ومن قبل تركت للأخ OMMN واجب فى مشاركة التاريخ فتركنى بعدها . ما الأمر يا أحباب إن حضرتم غبت أنا وإن غبت حضرتم وسألتم ؟ أم أن الواجب بيطفش ؟ أرجو أن يكون السبب خير .... أخوكم : عبد المنعم والسلام عليكم ورحمة الله وبركاته
  14. السلام عليكم ورحمة الله وبركاته رغم اشتياق حضراتكم للجديد إلا أننى أعتب على حضراتكم فى أنى تركت مشكلة بسيطة لجزئية كنا قد تناولناها من قبل . وتركتها على سبيل الواجب ولكن لم يبال أحد للأسف بمناقشتها ولم يحاول أحد حلها , وذلك من المشاركة السابقة . فأرجو المراجعة والاهتمام كى أشعر بأن المتابع مستفيد أيضا ، وليس متابع وفقط . سنتناول اليوم جزئية مريحة جدا برمجيا . مع الإبقاء على المشكلة ذاتها . راجيا من حضراتكم المحاولة ، وأنا معكم إن شاء الله تعالى . فى مثالنا السابق وجدنا زر إضافة ينفذ مجموعة أوامر لإضافة بعد البحث فإن كان نتيجة البحث أن البيان هذا موجود من قبل ، هنا يظهر مفتاح إضافة آخر يستشيرك فى هل تضيف على أية حال أم لا . كلا من مفتاحى الإضافة فى الحالتين يقوم بتنفيذ نفس الأوامر . أى أنه من الممكن أن نحتاج لتنفيذ نفس مجموعة الأوامر فى عدة أماكن مختلفة من الفورم نفسها . أو فى عدة أماكن مختلفة من البرنامج كله باشتماله على العديد من forms . فليس من المنطقى تكرار نفس السطور لتنفيذ نفس المهمة فى كل مرة نحتاج إليها وإلا طالت سطور برنامجنا وتكررت دون داعى وكان البطء فى التنفيذ سمة البرنامج وأيضا زيادة الحجم للبرنامج . كل هذه عيوب وغيرها كثير . هنا سنحتاج إلى ذكر هذه الجزئية الجديدة التى نطبقها اليوم على سطور قليلة . ولكن هناك حالات يكون فيها التنفيذ لسطور عديدة . فأنا مثلا عملت برنامج كنترول مدرسى لرصد وتجميع الدرجات . تخيل مثلا أننا سنعمل جزئية لتجميع كل مادة على حدة . أليس هذا ممل ؟ إذن الأفضل بدلا من عمل جزئية تجميع لكل مادة مضروبا ذلك فى عدد المواد كم سطر سينتج ؟ وإن كان مثل الذى عملته بأن كان البرنامج لمدرسة الصنايع التى فيها اثنا عشر قسم كل قسم له مواده الخاصة فضلا عن مواد مشتركة بين الجميع .إذن عدد المواد مضروب فى 12 . لو تخيلت كم سطر ستكرر لكل جزئية ولو حتى بالنسخ واللصق لدب الملل فى ذهنك من متابعة سطور أنتجتها أنت شخصيا . أطلت فى التقديم والشرح فلا تملوا ولكنى أحاول التقريب وتبيين الفائدة التى نحصل عليها من هذه الجزئية التى لا غنى عنها . موضوعنا هو من القوائم أننا سننشئ method جديدة من قائمة form نختر new method هنا تكون قد أضفت method جديدة تجدها فى قائمة methods و properties الخاص بالفورم هذه وتجد أن اسمها فى الأسفل . كيف أستخدم هذه الـ method ؟ بعد إنشائها اغلق صندوق الحوار الذى كتبت اسمها به . وانقر على أرضية الفورم نقرتين . تنفتح نافذة الـ methods والـ properties الخاصة بهذه الفورم . مثل init و refresh والتى أضفناها من صنعنا وغيرهم . ستجد هذه التى أنشأتها فى الآخر وفارغة وباهتة وبعد كتابة سطور بها أنها صارت غامقة وفى الأعلى . وأيضا ستجدها فى نافذة properties فى النهاية أيضا . والدخول من هنا أو من هناك سواء . ماذا أكتب فيها ؟ مجموعة الأوامر التى يتكرر طلب تنفيذها فى عدة أماكن أو فى عدة حالات أو من عدة أزرار . ما صيغة تنفيذها ؟ بفرض أننا أنشأنا واحدة باسم toadd فتكون الصيغة كالتالى : thisform.toadd() وبهذا الشكل لم نمرر معاملات ولن نصعب الأمر حاليا . بل سنكتفى باستدعائها مثلها مثل init أو release أو refreshوغيرهم . والفارق الوحيد أنها من إنشائنا . ماذا يتم تنفيذه بعد استدعائها ؟ أى إلى أين يذهب البرنامج ؟ اسمها عبارة عن سطر فى برنامج سيتم ترجمته إلى عدة أسطر يذهب ينفذهم ثم يعود لتنفيذ السطر التالى . وهذا مهم لك جدا كمبرمج أن تعرف إلى أين يتجه برنامجك الآن ؟ وبعده إلى أين ؟ وأين مؤشر جدولك الآن ؟ وإلى أين سيذهب بعد تنفيذ هذا الأمر ؟ وهكذا من تشغيل خيالك البرمجى . وإلى حضراتكم الملف المثال وتضمنت الفورم adding الشرح هذا . New_Method.zip اللهم علمنا ما جهلنا وانفعنا بما علمتنا يا كريم . والسلام عليكم ورحمة الله وبركاته
  15. السلام عليكم ورحمة الله وبركاته مرحبا بكم الأخ الحبيب عمر مجدى . وأسعدنى سؤالك وكنت أعتقد أن الأخوة يصيفون وفى فترة خمول صيفى ولكن أحرجنى سوء تفكيرى بعد اتصالات بعض الكرام التليفونية وهذه المشاركات الطيبة التى تأسرنى . وإن شاء الله سوف تصبحون على جديد إن شاء الله تعالى . وعلى فكرة يا أحباب إن بلدى هى مدينة اسمها بيلا فى محافظة كفر الشيخ وهذا للذى تسول له نفسه الطيبة أن يزورنى أو أن يتورط ويدعونى فتكون تكاليف الانتقال عالية عليه . وشكرا للكرام المتصلين والمشاركين بالمنتدى . ويبدو أن المنتدى ينتعش أكثر فأكثر بالكرام هؤلاء . ومرة أخرى مرحبا بالكرام . وبالأخ علاء الدين الذى اتصل بى قبل أن يسجل وبالأخ الكريم الأخ عمر مجدى الذى سجل اليوم وبالأخ أحمد عامر الذى أسرنى باتصاله من الأماكن المقدسة . وإن شاء الله تعالى سوف تسعدون معنا . وندعو الله أن يديم علينا السعادة . كما ندعو الله أن يطمئنا على الأخوة الذين لا يتثاقلون علينا بودهم أمثال الأخ بيشاى والأخ جلال السوهاجى . أين أنتم ؟ اللهم علمنا ما جهلنا وانفعنا بما علمتنا يا كريم . والسلام عليكم ورحمة الله وبركاته