السلام عليكم
استاذي الفاضل محتاجين اننا ننتهي من البرنامج قبل البدء في المسابقة . لان البرنامج ده هايفيدنا كتير
السلام عليكم
استاذي الفاضل محتاجين اننا ننتهي من البرنامج قبل البدء في المسابقة . لان البرنامج ده هايفيدنا كتير
السلام عليكم
أخي الكريم أبو سلطان و الله العظيم الذي لا إله إلا هو أنني اشتقت إلى كتاباتك و تدخلاتك و لأن أري VFPman على المنتدى أرجو أن تكون عودة حميدة بإذن الله قريبا جدا فلا تبخل علينا بوجودك بيننا و بارك الله فيك و السلام عليكم و رحمة الله و بركاته
GOOD LUCK MASTERS
السلام عليكم ورحمة الله وبركاته
إخوانى الكرام : سنبدأ إن شاء الله تعالى فى هذا الباب التدرج بما يجعلنا قادرين على التعامل مع سطور الأوامر مهما كثرت
وسيكون الباب بادئ بالفورم ومن خلالها سيتم المطلوب إن شاء الله .
فلنبدأ على بركة الله تعالى .
أولا الفورم هى كما تسمى user interface أى واجهة المستخدم ، أى الواجهة التى سيراها مستخدم برنامجك .
وهى رسمة أكثر منها أوامر ( وإن كانت أوامر داخليا)
طبعا نعرف كيف نرسمها كما فى الشكل التالى :
وصندوق الأدوات هو الذى نرسم به الأزرار والجرد وما نريده حسب الهدف المنشود .
وأيضا نافذة properties الخاصة بالفورم هى التى نستعملها فى تحديد مكان الأوامر ، أى أين سنضع الأمر الفلانى هل على الزر أم على الفورم نفسها وحتى الفورم لها عدة مواضع تستقبل فيها الأوامر وأيضا الزر فيه عدة مواضع يستقبل فيها الأوامر وكل موضع يفيد فى غرض محدد
وأنت الذى ستحدد الأمر ما هو وأين يوضع . ونافذة الـ properties بها هذه الأماكن التى تختار منها المواضع :
ومن هذه النافذة نحدد الخط بكل مواصفاته ، ويوجد بها المواصفات لكل الـ objects ولن نطيل بل سيكون التمثيل خير برهان إن شاء الله تعالى .
إذن باختصار النقر مرتين على أرضية الفورم أو الـ object أو اختيار اسم الموضع من نافذة الخصائص properties يفتح لنا مكان كتابة الأوامر التى سيتم تنفيذها بالشكل المطلوب . وتلك النوافذ كالتالى :
وبعد أن عرفنا الشكل فلننتقل إلى المضمون إذن .
سنبدأ من الغد إن شاء الله بدء مثال يتطور معنا فيه تطبيق تدريجى على كل شئ .
اللهم علمنا ما جهلنا وانفعنا بما علمتنا ياكريم .
والسلام عليكم ورحمة الله وبركاته
تم تعديل هذه المشاركة بواسطة HGB في 18 يونيو 2008 في 16:02
السلام عليكم
على بركة الله أخي الفاضل عبد المنعم
اللهم علمنا ما ينفعنا و انفعنا بما علمتنا و زدنا علما
السلام عليكم
اخواني الاعزاء استجابة لطلب اخونا عبد المنعم تم اضافة هذه الموضوع للمناقشة والردود على باب النماذج
لذا يرجى عدم كتابة اي رد داخل موضوع ....... باب النماذج Forms من الصفر .... وهنا يتم مناقشة الموضوع
السلام عليكم ورحمة الله وبركاته
سلمت يداك أخونا الكريم مصطفى .
سنبدأ إن شاء الله بعمل فورم بها عدد 2 زر ومربع نص ، ويكون مرافق لها جدول صغير لإضافة بيانات له .
وذلك عن طريق كتابة البيان فى مربع النص ثم الضغط على مفتاح ( زر ) إضافة فيتم إضافة البيان إلى الجدول .
ولكن لا بد من معرفة بعض الأمر فى البداية .
سننسى المسميات كلية ونركز على المطلوب وكيفية تنفيذه .
بمعنى :
هناك أوامر معدة مسبقا فى صورة ما فى الفورم وما عليها من objects كـ release مثلا ووظيفتها من اسمها نعرفه وهى إطلاق أو تحرير : فلو كتبناها كالتالى :
thisform.release()
فمعنى هذا أن الأمر هو تحرير هذه الفورم (أى غلقها) .
وأيضا لاحظ أننا وضعنا قبلها جزئيةthisform أى أن الذى سأستدعيه أو سأتعامل معه موجود على هذه الفورم التى أنا بها .
أيضا click ( أى نقر) معدة مسبقا وهى كوعاء أضع فيه عدة أوامر يتم تنفيذها عند النقر على الـ object الذى سأربطه بالنقر . بمعنى آخر إن نقرت مرتين
على زر فسيفتح نافذة كالتالى :
أختر منها click وأكتب أوامرى .
إذن click هو وعاء أوامر نكتب به الأوامر التى نريد أن يتم تنفيذها عند النقر . ولكن علام ننقر وكيف نربط ؟
إن click يمكن استخدامها على أى شئ فى الفورم ، ويمكن أن تنفذها على الفورم نفسها . فقط افتح نافذة click الخاصة بأى object واكتب الأوامر التى
تريد أن يتم تنفيذها عند النقر علي هذا الـ object .
أما مربع النص text فهو أيضا وعاء نستقبل فيه من المستخدم ما يشاء أن يضعه فى جدول البيانات ونستلمه منه ثم نقوم نحن (المبرمج) بالباقى .
والباقى هنا هو كيفية التعامل معه . أولا هو موجود على فورم أنا بها ، إذن سنستخدم thisform وأيضا هذا المربع هو object على الفورم التى بها الكثير
من الـ objects إذن لابد من أن يكون لكل واحد منهم اسم ينفرد به .
وهذا المربع ينطبق عليه هذه القاعدة وله اسم ، وهو بالفعل يأخذ اسم أولى تلقائى ، وأقول أولى لأنك يمكنك أن تعيد تسميته بما تشاء . ولكن البرنامج يعطيه اسم
ليستطيع التعامل معه حتى تغيره أنت أو تتركه وتتعامل معه كما هو.
والاسم التلقائى يكون text مع رقم حسب وروده على الفورم فإن ورد أولا يكون text1 وثانيا يكون text2 وهكذا .
فسيكون تركيبته الحالية حتى الآن
thisform.text1
ثم إننا سنتعامل مع قيمته value فتكون صيغة التعامل معه الشبه نهائية كالتالى :
thisform.text1.value
وأقول شبه النهائية لأنه يمكن استقباله بشكل وتحويله إلى شكل آخر ولكن هذا بعدين .
أما الآن فبكل بساطة سنرسم مربع نص على الفورم ونرسم عدد 2 زر ونعمل جدول . ويكتب المستخدم فى مربع النص اسم وعند النقر على الزر المكتوب عليه
(إضافة) هنا تتحرك click وتقول إن عندى أوامر مخزنة ودورى أن أنفذها عند النقر على هذا الذى أنا مربوطة به . وتبدأ فى التنفيذ .
وهذه الأوامر هى إضافة سجل فاضى لنهاية الملف append blank ثم تبديل خانة الاسم بما كتبه المستخدم فى مربع النص .
وسنترك الأمر على هذا الحال ، بمعنى أننا سنترك الإضافة تتم حتى ولو لم يكتب المستخدم شئ لإضافته .
هناك جزئية أخرى نتناولها لتكتمل الدائرة الصغيرة المطلوب رسمها فى الذهن اليوم : ألا وهى load . وهذه أيضا وعاء ( تحميل) وعند تعبئته بأوامر فإنه سيتم
تنفيذها فور تحميل هذه الجزئية المربوطة بها .
وهى فى نافذة الأوامر مثل click ولكن اعرف من على اليسار مع من هى مربوطة كالتالى :
ولكن ليس كل الـ objects لها جزئية load . وهذه الجزئية إن ربطتها بالفورم ووضعت بها أوامر فسيتم تنفيذ هذه الأوامر بمجرد أن تستدعى هذه الفورم للتنفيذ .
وفى مثالنا وضعنا أمر فتح الملف فيها . وهكذا سيتم فتح الملف عند بدء الفورم .
سؤال : كم طريقة لفتح نافذة كتابة الأوامر فى العبوات هذه ؟
اثنان :
1- إما بالنقر مرتين على الـ object المراد الربط به .
2- نقره واحدة عليه لاختياره ثم من نافذة properties السابق الكلام عنها نختر اسم العبوة بنقر مرتين فتنفتح النافذة . والطريقة الأولى أفضل .
ومن نافذة الـ properties أيضا نكتب عنان الزر بالوقوف عليه ثم اختيا caption منها وكتابة (إضافة) مثلا أو (خروج) أو ما تشاء .
وإليكم الملف المثال : وضعت جزئية واحدة وهى الاسم للتدرب وتركت باقى حقول الملف إما تبدأوها أنتم أو نبدأها سويا إن شاء الله . وأرى أن تتدربوا على إكمال
الفورم بما يتفق مع باقى خانات الجدول .
اللهم علمنا ما جهلنا وانفعنا بما علمتنا يا كريم . والسلام عليكم ورحمة الله وبركاته
تم تعديل هذه المشاركة بواسطة عبد المنعم محمد عبد الخالق في 9 يونيو 2008 في 18:56
السلام عليكم ورحمة الله وبركاته
الأخوة الكرام ، كيف حالكم ؟
اليوم سيكون معنا جزئيتان بسيطتان :
1- الشرط : كيف هو ؟ فى اللغة الشرط يتكون من أداة شرط (إذاif) وفعل شرط وجواب شرط . إذا تحقق فعل الشرط بناء عليه يتحقق جواب الشرط .
والكلام نفسه عن الشرط فى البرمجة . فنقول if كذا (فعل الشرط ) إذن افعل كذا ( الجواب )
وهنا زيادة بسيطة على ذلك وهو جواب آخر نفذه إن لم يتحقق فعل الشرط ( else)
ويكون الشكل العام كالتالى :
if ..... أوامر تتحقق إن كان الكلام الذى بعد الشرط صحيح else أوامرتتحقق إن كان الكلام بعد الشرط غير صحيح endif
2- الدالة ما هى ؟ هى عبارة عن مجموعة أوامر مختصرة فى كلمة لها قوسين نضع بين هذين القوسين شئ نريد التعامل معه .
وفى مثالنا سنستعمل الدالة empty ومن معناها تعرف وظيفتها ( فارغة) أى أننا نقيس بها متغير هل فارغ أم لا ؟
وسنستخدم الدالة مع الشرط لتعديل المثال السابق بحيث إننا لن نسمح للمستخدم بإدخال سجل فارغ إلى جدول البيانات .
أى أننا سنجعل الدالة تقيس محتوى مربع النص إن كان كان المربع غير فارغ ) فسوف تضيف وتعطى أيضا رسالة تفيد ذلك
وإلا ( أى أنه إن كان فارغا ) لن تضيف سجل وستعطى رسالة للمستخدم تفيد ذلك .
وتكون السطور كالتالى :
if not empty(thisform.text1.value) append blank replace names with thisform.text1.value else wait window 'not added' endif
والنفى يكون بشكلين : أى أن نقول ليس كذا : كما الحال هنا نريد أن نقول غير فارغ
NOT EMPTY أو !EMPTY
وإلى حضراتكم البرنامج المثال السابق بعد التعديل :
اللهم علمنا ما جهلنا وانفعنا بما علمتنا
والسلام عليكم ورحمة الله وبركاته
تم تعديل هذه المشاركة بواسطة عبد المنعم محمد عبد الخالق في 11 يونيو 2008 في 03:59
السلام عليكم ورحمة الله وبركانه
الف شكرا على الشرح والتيسير وجزاك الله خير على المجهود العظيم واحنا اتعبناك معنا .
سؤال لي هل يتم اضافة البيانات من الفورم الي الجدول بهذه الطريقة
if not empty(thisform.text1.value)
append blank
replace names with thisform.text1.value
else
wait window 'not added'
endif
أو بامر INSERT INTO حيث ان الحقول متعددة ومتنوعة الخواص منها رقمي ونصي وتاريخ وعملة وهل التعامل مع التاريخ بالطريقة ctod قبل THISFORM.TEXT1.VALUE
طيب لو الخانة احب اضيف فيها عملة طبعا علشان الكسور العشرية مثل 5.232 هل يكون الحقل رقمي ولا عملة حيث الحقل الرقمي لم يظهر فيه الكسور العشرية
وفقكم الله وفقنا معكم جزاكم لله خير
تم تعديل هذه المشاركة بواسطة ahmed amer في 12 يونيو 2008 في 09:00
السلام عليكم ورحمة الله وبركاته
الأخ العزيز / عبد المنعم
تحيه وشكر على المجهود العظيم والدعم الذي لا ينضب انا خايف أن أكون بزعجك بس انا عندى امل ان اتعلم وكل ما اجرب شيء افكر في الثاني انا حملت المثال الخاص بكم واضفت له بعض الحقول وفي الفورم كمان بس في مشكله طبعا هى مشكله لي ومش لحضرتك وهي التجميع يعني الراتب + البدلات = الإجمالي
كيفية التجميع في الفورم حيث انني عندما اقوم بعمل فورم بالويزرد يكون الكود كالتالي
repl total with salary+جميع البدلات
النقطة الثانية وهي حساب بدل السكن حيث ان الموظف له عدد شهرين من الراتب الأساسي يوجد حقل لعدد اشهر السكن وحقل لقيمة السكن الشهر وكنت اقوم بحسابها كالتالي
repl قيمة بدل السكن في الشهر with ( الراتب الأساسي *عدد اشهر بدل السكن )/12
REPL M_HOUSE WITH (SALARY*HOUSE)/12
السلام عليكم ورحمة الله وبركاته
الأخ الكريم أحمد بارك الله فيك وأنا تحت أمرك ولكن ياليت كانت استفسارات حضرتك فى الباب الذى فتحه الأخ المشرف مصطفى ونترك هذا الباب للشرح فقط كى لا
يزدحم على من يريد المراجعة مثلا أو النقد أو أو أو ...
وأيضا أرجو أن تمشى معى فسوف تجد كل أسئلتك فيما سيرد إن شاء الله تعالى . وحاول تطبيق الحالى ولا تتعجل بجديد . وأيضا بدأنا هذا الباب للمساعدة فى عدم
استخدام الفورم السابقة الإعداد أو المفاتيح سابقة الإعداد فوجدت حضرتك مازلت تستخدمها . فلماذا يا أخى الكريم ؟
اليوم إن شاء الله تعالى سوف نزيد قليلا وفيه ستجد بعض أسئلتك إن شاء الله ولكن ليس المقصود الإجابة عليها فهذا الباب أريد منه التدرج البسيط والوصول فى
نهايته إلى الاتقان التام إن شاء الله تعالى .
تعاملنا فى المرة السابقة مع دالة empty واليوم سنتعامل مع دالة أخرى وهى val وهى بمعنى قيمة أى أنها سوف تأخذ ما بداخل مربع النص وتحول ما فيه
إلى قيمة عددية .
وقد تناولنا من قبل كيفية الإشارة إلى مربع النص بالتدريج ووصلنا إلى :
thisform.textn.value
ولو أضفنا الدالة val فسيصبح الإشارة كما يلى :
val(thisform.textn.value)
شئ آخر :
عند الضغط على مفتاح enter تنتقل المؤشرة إلى حقل آخر . ونحن يمكننا تنظيم هذا الانتقال بحيث أننا إذا ضغطنا على enter ينتقل إلى المربع الذى أريده أنا
ليس الذى ذهب إليه بطريقة عشوائية .
هنا خاصية فى نافذة properties وهى tabindex ويمكن الوقوف على كل مربع وكتابة رقم تسلسل الذهاب إليه والضغط على enter فتتم كتابة رقمه
فى خانته ويأخذ رقم تسلسل .
أما إن كان عدد المربعات كبير فهناك طريقة مختصرة وسهلة . وهى من القوائم كما فى الصورة التالية :
فنجد بعد هذا الاختيار أن كل مربع قد رسم فوقه رقم . كيف تحدد الأرقام ؟ انقر فوق الذى تريده أن يكون أولا ثم فوق الذى تريده أن يكون تاليا وهكذا ......
كما فى الصورة التالية :
أما إن أردت طرح عدد معين بعدم وضع تسلسل له :
انقر فوق المربعات أو الأزرار أو الاثنين مما تريد ترتيب لهم وفقط ثم اخرج وظلل كل الذى لا تريد الترتيب له واذهب إلى نافذة PROPERTIES واختر
TABINDEX ثم اكتب صفر ثم اضغط ENTER ستجد أنهم كلهم قد أخذوا القيمة صفر أى خرجوا من التسلسل . أى أنه عند الضغط على مفتاح ENTER
أثناء الإدخال فلن تذهب إليهم المؤشرة .
أيضا سنكثر قليلا من الخواص اليوم فوسع صدرك :
خاصية أخرى نريدها فى الفورم ( لاحظ أن الخواص نحصل عليها بسهولة من نافذة properties ) :
الخاصية يتم تطبيقها على الذى أنت نقرت عليه . فمثلا إن أردت تنفيذ خاصية على الفورم انقر على أرضيتها أولا ثم اذهب إلى نافذة الخواصproperties
واختر الخاصية واكتب فيها القيم التى تريدها فستجدها قد تم تنفيذها على الفورم . وهكذا مع باقى الأشياء التى على أرضية الفورم .
من الخواص المفيدة : جعلى الفورم فى منتصف الشاشة عند التطبيق : autocenter واختر ture
وأيضا خاصية جعل الفورم ثابتة بحيث لا يتمكن المستخدم من تكبيرها أو تصغيرها :
انقر فوق أرضية الفورم ثم اذهب إلى نافذة properties واختر border style ومنه رقم 2 أى fixed أى ثابت .
أيضا خاصية مهمة جدا لمربع النص :
وهى حصر المطلوب كتابته فى داخل المربع بأرقام مثلا وبعدد معين بحيث إن المستخدم لا يمكنه كتابة حروف فى داخل هذا المربع :
الخاصية : input mask أى جعل المدخلات بشكل كذا : وهنا استخدمنا 99 أى المدخلات ستكون رقمية فقط وعدد خانات الأرقام اثنان .
ولاحظ أيضا أنه إن حصرنا الإدخال ليكون أرقام فلن نحتاج إلى الدالة VAL ولكن تركناها للتعلم .
وبانسبة لأمر التبديل فى الجدول (سؤال الأخ أحمد عامر) فـ insert تبع لغة الاستعلام sql وهو صحيح ويوفر جهد كبير لكنه مقعد بعض الشئ سيأتى عليه
الدور إن شاء الله
أما replace فهو بالفوكس فقط . والاثنان يؤديان الغرض لكن الثانى يحتاج إلى append blank لكن insert يقوم بالدورين .
والملف المثال تم تطويره بعض الشئ ليقوم باستقبال خانات رقمية فى خانة السن والراتب ويقوم بحساب زيادة فى المرتب بمقدار 15 فى المائة لكل موظف
ويتم هذا بالمعادلة :
REPLACE rise WITH salary * 1.15
ولأن سطر الأمر REPLACE طال عن حجم السطر فقد تم تجزئته بأى شكل شريطة أن ينتهى كل جزء بالفاصلة المنقوطة ;
وإلى حضراتكم المثال :
اللهم علمنا ما جهلنا وانفعنا بما علمتنا . والسلام عليكم ورحمة الله وبركاته
تم تعديل هذه المشاركة بواسطة عبد المنعم محمد عبد الخالق في 12 يونيو 2008 في 15:29
السلام عليكم ورحمة الله وبركانه
عفوا ان كنت خالفت وكتبت في باب النماذج وانا معك في كل لحظه طيب لو حبيت اظهر النتيجة في الفورم مع الراتب حيث انها لك تظهر وتضاف للجدول مباشرة
السلام عليكم
اخي عبد المنعم
جزاك الله خيرا ونحن نتابع جهودك ودروسك الجميله والمرتبه
السلام عليكم
بارك الله فيك أخي الفاضل عبد المنعم أنا أتابعك بشغف أتمنى أن تحافظ على هذه الروح المعطاءة و الله أسأل أن يجعلها في ميزان حسناتك و لدي طلب صغير بعد إذنك طبعا و هو ألا تطيل غيابك عنا .......
و الحمد لله الذي هدانا لهذا و ما كنا لنهتدي لو لا أن هدانا الله
و السلام عليكم
السلام عليكم ورحمة الله وبركاته
اليوم مع إضافة بسيطة إن شاء الله تعالى .
عندما ندخل بيانات فإنه من الممكن أن نكون قد سبق وأدخلناها . إذن هناك حاجة لفحص قاعدة بياناتى لمعرفة ذلك قبل الإدخال . حتى لا تتكرر البيانات وتنتج أخطاء فى القرارات والإحصائيات .
اليوم سوف نتعامل مع البحث فقط . والمرة القادمة سنتناول الاثنين إن شاء الله تعالى . ويمكن لحضراتكم التدرب على ربطهما .
عندما نتكلم عن البحث فإنه لابد من التركيز على بعض الأمور البسيطة :
1- أين يقف المؤشر الآن ؟ أى أن الباحث تحرك وأين هو الآن ؟ وهل وصل إلى نهاية الملف ؟ ( فى المرة القادمة نهاية الملف هذه )
2- هل وجد أم لا ؟
3- أهم من ذلك كله : بيئة البحث ... أى كيف يتم البحث ؟
ومعنى هذا بسيط جدا : عندما أبحث عن جلال مثلا فتكون نتيجة البحث أنه وجد جلال وجلال على وجلال السوهاجى وجلال محمود وكل من يبدأ اسمه بـ جلال .
ويمكن تغيير هذه البيئة ليبحث بدقة وانضباط عما أقوله أنا فقط .
الجزئية : set exact off تجعله يبحث كالحالة الأولى . أى أنه يبحث عن الأصغر فى الأكبر فإن وجد الجزء الأول أعطى نعم لنتيجة البحث .
والجزئية set exact on أى شغل الدقة وابحث عن الذى قلته أنا ولو كان مجرد جزء . فإن طلبت البحث عن عبد المنعم وكان بالملف عبدالمنعم محمد وعبد المنعم على فقط وليس هناك عبد المنعم فقط فإن البحث لن يجد اسم عبد المنعم .
هل وضحت الفكرة ؟
أما أمر البحث نفسه فهناك locate و seek و find وموضوعنا اليوم locate :
صيغة الأمر مثل باقى الأوامر :
locate all for names = 'ali'
وهناك أيضا خاصيتان جديدتان من نافذة properties استخدمناهما اليوم :
enabled أى جعل الزر أو مربع النص أو أى object على أرضية الفورم جاهز للاستخدام أم لا . أى تجعله باهت ، فإن كان زر فلا يمكنك الضغط عليه مثلا .وقيمتها t أو f
والخاصية الثانية : read only أى قراءة فقط وهى تجعل مربع النص غير قابل للكتابة فيه . وقيمتها أيضا t أو f
أيضا جزئية هامة وهى أمر يكمل دور locate وهو continue أى استمر فى البحث عن التالى : فإن كان البحث الأول نجح فى العثور على المطلوب فنقول له أكمل البحث عن آخر بنفس الاسم .
أيضا دالة مفيدة فى البحث وهى found وهى تعطى نعم إن تم العثور على المبحوث عنه أو تعطى f إن لم يتم العثور على المبحوث عنه .
وصيغتها :
if found() ...... ....... endif
أى أن الأوامر التى فى الجملة الشرطية سوف يتم تنفيذها إن أعطت الدالة found نعم أى أنه عثر على المبحوث عنه فحينئذ يتم تنفيذ الأوامر التى بين if و endif
ولاحظ حضرتك أن المفتاح الخاص بتكملة البحث سيتحول إلى باهت فى حالة عدم العثور على المبحوث عنه . ويبدأ هكذا فى البداية .
thisform.btn4.enabled = .f.
وthisform أى الذى سأتعامل معه هذه الفورم ، و btn4 هو اسم المفتاح و enabled هى الخاصية التى تجعله باهت أو العكس .
كيف نجعل أى شئ فى الفورم يبدأ بشكل نريده عليه ؟
هناك جزئية فى نافذة properties اسمها init وهذه يتم تنفيذها فى استهلال وصول الـ object المربوط بها . أى أنها عندما تحضر يتم تنفيذ ما بها من أوامر .
وقد عرفنا من قبل كيفية ربط هذه الأوامر فى تلك الجزئيات . ( event)
وأيضا مع الأزرار نضع أوامر يتم تنفيذها فى جزئية (event) اسمها click أى نقر ، ويتم تنفيذ الأوامر المربوطة بهذا الـ object بالنقر عليه لأن الأوامر موجودة بداخله فى event اسمها click
وإلى حضراتكم الملف المثال :
ولاحظ أن مربعات النص السفلية جعلناها تظهر بيانات الاسم الذى عثر عليه الباحث . وشكل الأمر يكون كالتالى :
thisform.text1.value = field
أى اجعل قيمة مربع النص هذا الذى على الفورم هذه مساويا للحقل كذا .
وفى المرة القادمة إن شاء الله تعالى سوف نتناول البحث عند الإدخال .
اللهم علمنا ما جهلنا وانفعنا بما علمتنا يا كريم .
والسلام عليكم ورحمة الله وبركاته
تم تعديل هذه المشاركة بواسطة عبد المنعم محمد عبد الخالق في 15 يونيو 2008 في 04:43
السلام عليكم ورحمة الله وبركاته
اعجز عن الشكر والتقدير إلي الأخ العزيز واستاذنا الفاضل / عبد المنعم عن المجهود العظيم الذي نتلهف له في الشرح ما شاء الله عليك في الشرح والتيسير . لو يسمح لي استاذي في طلب بسيط ارجوا ان تتقبله منى انا عارف انني اسبق الأحداث اتمنى ان تتقبله بصدر رحب مني وهذا نابع من انني ارغب في التعلم .
1- " لو حبيت استغنى عن زر set exact on / off " بي check box حتى تتيح لي اختياره بدل الزر .
2- لو حبيت اعمل فورم خاصه للبحث واعرض البيانات في الفروم الرئيسية ومنها في التقرير " بالنسبة للتقرير اكيد ها يجي وقته "
اسف ان كنت استعجلت في الطلب .
ربنا يوفقك ويجزيك عنا خير ويبارك فيك
أخوك
أحمد عامر
تم تعديل هذه المشاركة بواسطة ahmed amer في 15 يونيو 2008 في 12:21
السلام عليكم ورحمة الله وبركاته
حاضر أخ إبراهيم طلبك على عينى نسأل الله التيسير لنا جميعا .
ويا أخ أحمدعامر قلنا لا تستعجل كله فى الطريق إن شاء الله وياريت تكون أسئلتك فيما لم يتضح مما ورد . أما ما لم يرد فهو كثير والسؤال فيه ليس محله هذا التدرج أخى الكريم .
والسلام عليكم ورحمة الله وبركاته
السلام عليكم ورحمة الله وبركاته
فاتنى جزئيتين بسيطتين :
1- الأولى الدالة : alltrim وهذه نستخدمها عندما نريد التخلص من المسافات التى على اليمين والتى على الشمال فى المتغير الذى نتعامل معه أى نريد خلاصته بدون مسافات فنستخدمها وبين قوسيها المتغير هذا .
2- ورد فى event التى اسمها init الخاصة بالزر continue السطر :
this.enabled = .f.
فلماذا لم نقل :
thisform.btn4.enabled = .f.
وسيكون صحيح أيضا . والإجابة أنه لا داعى للزيادة هذه لأنى فى داخل الزر نفسه ولست فى حاجة لذكر الفورم التى عليها الزر الفلانى .
ويمكن تطبيق ذلك على كل الـ objects بحيث لا نذكر الفورم وإنما الاسم ثم الخاصية ثم القيمة إن كنا فى داخله .
وما معنى فى داخله ؟
أى أننا نقرنا مرتين على الـ object فانفتحت نافذة الـ events والـ methods وكتبنا الأوامر فى التى نريد . إذن فالكتابة تمت فى داخل هذا الـ object .
والسلام عليكم ورحمة الله وبركاته
السلام عليكم ورحمة الله وبركاته
اليوم إن شاء الله وحسب طلب الأخ الكريم أحمدعامر سوف نتعامل معoption group ( مجموعة الاختيارات) وهذه تكون بتظليل أحد الاختيارات وكأنك أعطيت الأمر أن يكون الاختيار هكذا فى مرات التنفيذ التالية . بمعنى أنك تختارها مرة ولا تحتاج أن تعيد اختيارها إلا إذا كنت ستغير منها اختيار آخر .
هذه المجموعة تكون أنت مخير فى عددها اثنين أو أكثر تحددها أنت . وتعطى المجموعة كلها اسم واحد تشير إليها به . ولكن نختار اسم المجموعة ونختبر قيمتها إن كان واحد (1) فمعنى ذلك أنك نقرت على (1) من المجموعة . وهكذا ....
وفى مثالنا المجموعة اسمها accurate وبها اختياران أى ستكون القيمة إما (1) أو (2) : كالتالى :
thisform.accurate.Value = 1 أى أن الاختيار الأول هو الذى ظللته thisform.accurate.Value = 2 أى أنك ظللت الاختيار الثانى
. وهكذا مهما زاد عدد الاختيارات بحسب موضوعك .
كيف نحدد عدد الاختيارات ؟
تذكر نافذة الـ properties : . منها الاختيار button count أى عدد الأزرار فى هذه المجموعة . اكتب رقم ثم اضغط مفتاح الإدخال فتجد العدد قد صار كما طلبت .
كيف تعطى المجموعة اسما للتعامل معها ؟
كما ذكرنا من قبل فإن البرنامج يعطى اسما أوليا أنت مخير فيما بعد فى تغييره . ويكون الاسم الأول (optiongroup1) إن كان الأول وهكذا ... وأيضا من نافذة properties الاختيار name اكتب اسم تريد التعامل مع هذه المجموعة به ثم enter .
كيف تجعل المجموعة بالعربى ومن اليمين إلى اليسار ؟
اضغط مفتاح ctrl من اللوحة وأنت ضاغط عليه انقر على المجموعة بالماوس فتجد أنه صار حولها إطار باللون الأخضر .
انقر الاختيار الأول واضغط مفتاح shift وانقر الثانى وهكذا . ( اخترهم جميعا)
ومن نافذة properties اختر alignment ومنا اختر رقم 1 ( middle right ) أى من اليمين والوسط .
فإن أردت تغيير الكلمة نفسها بدلا من التى أعطاك البرنامج إياها : انقر واحدة تريدها ثم اختر من نافذة الproperties الاختيار caption واكتب الكلمة التى تريد أن يظهر عليها الاختيار هذا . وهكذا مع باقى الاختيارات .
أرجو أن تكون الصورة التالية بها التوضيح المناسب :
وإلى حضراتكم الملف المثال بعد التعديل :
اللهم علمنا ما جهلنا وانفعنا بما علمتنا . والسلام عليكم ورحمة الله وبركاته
تم تعديل هذه المشاركة بواسطة عبد المنعم محمد عبد الخالق في 16 يونيو 2008 في 15:42
السلام عليكم ورحمة الله وبركاته
بارك الله فيك أخي الفاضل/ عبد المنعم أنا أتابعك في كل كلمة وإن شاء الله انا بجمع الشرح حتى أعمله على pdf للإستفاده منه
وانا منتظر الشرح كل يوم ومتلهف له .
ربنا يوفقك ويجزيك عنا خير ويبارك فيك
أخوك
أحمد عامر
السلام عليكم ورحمة الله وبركاته
الأخ العزيز / عبد المنعم
تحيه طيبة وبعد
اتمنى من الله العلي القدير ان تكون بخير والله انت قطعت بنا الفترة دي كل يوم افتح المنتدي بس للأسف لم اجدك حتى كمان الأخوة الأفاضل يظهر انهم كمان مشغلون عنا طمنا عليك .
أخوك
أحمد عامر
السلام عليكم ورحمة الله وبركاته
أخي الكريم / عبد المنعم
طال الغياب عنا اتمنى من المولى العلي القدير أن تكون بخير ونحن في انتظارك من يوم ما تركتنا لا أحد كتب رد ولا زاد اي شيء طبعا لاننا منتظرين استاذنا انا حبيت اكتب هنا بس وسامحني على الكتابه هنا بس قلت اعمل اي شيء علشان يكون في تواصل فقمت بجمع الشرح في pdf حتى يكسر طول الفترة لحين العودة بالسلامة
اتمنى ان تكون بخير
أخوك
أحمد عامر
السلام عليكم
فعلا طال غياب الأخ الكريم عبد المنعم أتمنى أن يكون السبب خيرا و أن يعود في أقرب وقت إن شاء الله
و الله المستعان