الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

- باب النماذج Forms وفيه الكلاسس Classes

رائج
بدأه عبد المنعم محمد عبد الخالق في 11 أبريل 2008 · 80 رد · 10,293 مشاهدة · في قواعد بيانات Visual FoxPro
مشاركة: واتساب X فيسبوك تيليجرام
#26

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

الأخ الكريم أحمد عامر :

أحسنت . ولكن هناك خطآن بسيطان فى سطورك :

1- الأول أن الحقل age رقمى بالفعل فى الجدول ولم يكن يحتاج إلى دالة التحويل val

2- الثانى وهو المهم أن الجزئية order by معناها أن يكون المعروض فى الـ grid مرتبا بالحقل رقم كذا ، وفى سطورك الحقل age رقم 2 وأنت كتبت order by 1

وبالتالى تكون السطور الصحيحة كما يلى :

thisform.grd.RecordSource = "''
SELECT emp_name,age,children,salary FROM grade_1;
WHERE age = VAL(thisform.txt.Value);
order BY 2;
INTO CURSOR grd_tmp
thisform.grd.RecordSource='grd_tmp'

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

أى اكتب 2 ثم 8 مثلا وانتظر النتيجة وليس 2 فقط وتنتظر النتيجة . إلا إذا كان هناك أرقام فردية بالرقم 2 وحده .

أما وأن تمارس بذهنك وتجرب بيدك فقد جنيت الثمار . وفقنا الله وإياكم .

اللهم علمنا ما جهلنا وانفعنا بما علمتنا

تم تعديل هذه المشاركة بواسطة عبد المنعم محمد عبد الخالق في 24 أبريل 2008 في 04:03

#27

السلام عليكم

أخي الفاضل عبد المنعم لدي سؤال و هو :

لدي جدول به تاريخ و بدل أن أحدد بأنه تاريخ DATE جعلته CHARACTERE (10) و بعد حجز عدد لا بأس به من السجلات أيقنت أنه لا بد من تحويلها إلى تاريخ و المشكلة كيف حاولت بتغييرها مباشرة من الجدول MODIFY STRUC تختفي السجلات المحجوزة بالتاريخ .

ما العمل و مشكور مسبقا

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

#28

السلام عليكم

اخي الكريم

ما هي صيغة التاريخ المسجل في الحقل هل ؟

01/01/2008

او

01012008

او

01-01-2008

الحمد لله الذي هدانا لهذا وما كنا لنهتدي لولا ان هدانا الله

450x250_1.gif

طريقك لاحتراف برمجة قواعد البيانات باستخدام Visual FoxPro

#29
عبد المنعم محمد عبد الخالق كتب:

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

الأخ الكريم أحمد عامر :

أحسنت . ولكن هناك خطآن بسيطان فى سطورك :

1- الأول أن الحقل age رقمى بالفعل فى الجدول ولم يكن يحتاج إلى دالة التحويل val

2- الثانى وهو المهم أن الجزئية order by معناها أن يكون المعروض فى الـ grid مرتبا بالحقل رقم كذا ، وفى سطورك الحقل age رقم 2 وأنت كتبت order by 1

وبالتالى تكون السطور الصحيحة كما يلى :

thisform.grd.RecordSource = "''
  SELECT emp_name,age,children,salary FROM grade_1;
  WHERE age = VAL(thisform.txt.Value);
  order BY 2;
  INTO CURSOR grd_tmp
  thisform.grd.RecordSource='grd_tmp'

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

أى اكتب 2 ثم 8 مثلا وانتظر النتيجة وليس 2 فقط وتنتظر النتيجة . إلا إذا كان هناك أرقام فردية بالرقم 2 وحده .

أما وأن تمارس بذهنك وتجرب بيدك فقد جنيت الثمار . وفقنا الله وإياكم .

اللهم علمنا ما جهلنا وانفعنا بما علمتنا

السلام عليكم

أخي الفاضل عبد المنعم

اولاً احب ان اشكرك على الإهتمام والخدمات الجليلة التى تقدمها لنا الحمد لله تمت التجربة بنجاح . وبعدها قمت ببعض التعديل وهو قمت بوضع عدد من الـ command وقمت بوضع كل كود حسب الحقل الذي يبحث فيه مثل رقم الصنف واسم الصنف والحمد لله اعطت نتيجه وبفضل الله عز وجل وفضلكم

اما النقطة الثانية وهي بدل من اظهار النتيجة في Gridارغب في وضعها في تقرير حتى يتثنى لي طباعته ومرفق لكم هذا الفورم قد قمت بعمله وهو بحث برقم الصنف بين تاريخين واظهار البيانات في تقرير للطباعة

find_form.rar

تم تعديل هذه المشاركة بواسطة ahmed amer في 24 أبريل 2008 في 15:19

#30

السلام عليكم

أخي الفاضل مصطفى التاريخ كالآتي : 2008/01/01

و شكرا

#31

السلام عليكم

اخي الكريم

يمكنك تحويل هذا الحقل النصي الي تاريخ عن طريق اما

فتح الجدول

USE tablename EXCLUSIVE
MODIFY STRUCTURE

ثم تقوم بتغيير نوع الحقل من Character الي Date ثم Ok ثم Yes

او عن طريق جملة SQL

ALTER table tablename alter FieldName date

تم تعديل هذه المشاركة بواسطة mostafa_fa في 24 أبريل 2008 في 15:56

الحمد لله الذي هدانا لهذا وما كنا لنهتدي لولا ان هدانا الله

450x250_1.gif

طريقك لاحتراف برمجة قواعد البيانات باستخدام Visual FoxPro

#32

السلام عليكم

شكرا جزيلا أخي الفاضل مصطفى

#33

السلام عليكم

هل من طارق لهذا الباب ...................... أرجو التواصل

اللهم علمنا ما ينفعنا و زدنا علما

#34

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

أخونا النشيط Rebouh أعانكم الله وزادكم نفعا وعلما . إن شاء الله سوف نطرق هذا الباب حتى نكسره وعليك الحساب .

صحصح معى اليوم بهناك عدة أمور فى أمر واحد أدعو الله أن أوفق فى نقلهم جميعا .

أولا : تعلمون الفرق بين المتغير الرقمى والحرفى طبعا . فإن وضعنا علامات تنصيص حول رقم سيكون حرفا "5" ولو أعطينا الأمر

? '5' + '6'

سيكون الناتج 56 وليس 11 وهنا يتضح أن علامة الجمع تعاملها فى جمع الحروف هو رصها جنبا إلى جنب دون التدخل فى عمل عمليات حسابية عليها .

ثانيا : & هذه العلامة التى تكون من اللوحة مفتاحى shift و 7 مفيدة جدا فى التعامل مع المتغير الغامض كما أسميه أنا .

أى إن وضعتها أمام متغير فهى تعوض عنه بما هو مخزن فى هذا المتغير :

مثلا

FOR_var = 9	   && يحجز متغير بهذا الاسم ويضع فيه 9
for_var_1 = 'for_var'	&& ينشئ متغير آخر ويضع فيه اسم المتغير الأول بين علامات تنصيص
?for_var_1		  && سوف يطبع على الشاشة 9 لأنه أصبح يساوى قيمة المتغير الأول
?&for_var_1	&& أما هنا فسوف يطبع اسم المتغير الموجود فيه أى اسم المتغير الأول

وهكذا إن أردنا تغيير محتوى حقل ونجعل الأمر مرنا بحيث أن يكون هناك أمر واحد وتطبقه على عدة حقول لعدم التكرار فإننا نستخدم هذه العلامة &

هذا الأمر الثانى .

طبعا كل ما ذكر لا يمت بصلة كما يُظن للفورم . بل يمت فإن البرمجة كل متكامل وسوف نجمع بين ما ذكرنا وما سيأتى .

الأمر الثالث :

فى الفورم يكون هناك عدة objects تنفذ نفس الأمر أى تضع فى الحقل الفلانى القيمة المدخلة .

ويكون هذا ممل ويزيد من حجم البرنامج ويساعد على بطئه . ولن أكون مبرمجا كما ينبغى إلا إن تجنبت الإسهاب المعطل .

هنا نعمل new method كما عرفنا ما معناها وهو function أو procedure نستدعيه كلما احتجناه ويكون التعامل معه مثل باقى الـ methods الخاصة بالفورم والتى تكون معدة مسبقا من قبل Fox

كيفية إنشاء new method : انظر الصورة :

من هذه القائمة :

post-154340-1209319788_thumb.jpg

وتجدها مع أخواتها الأخريات هنا :

post-154340-1209319833_thumb.jpg

افتحها واكتب فيها أوامرك واستعيها كما تستدعى refresh و release مع إمكانية تمرير معاملات لها تستقبلها وتجرى عليها عمليات كما تشاء .

وكما أمر الأخ Rebouh فسوف يطون هناك مثال مع كل جزئية نوردها إن شاء الله تعالى

for_replacing.zip

فى الـ method التى اسمها replacing : السطور

LPARAMETERS field_num,value_received  && معاملات تنتظرها 
month_to_replace = 'month_'+field_num   
متغير جديد تضع فيه جزئية من عندها وتضيف إليها الجزئية التى تتلقاها لينتج اسم حقل من الجدول . مرة سيكونmonth 1 ومرة سيكون 2 month
REPLACE &month_to_replace WITH value_received && سيتم التبديل فى الحقل الذى سيتم التعويض عنه كما فى السطر السابق

اللهم علمنا ما جهلنا وانفعنا بما علمتنا

تم تعديل هذه المشاركة بواسطة عبد المنعم محمد عبد الخالق في 27 أبريل 2008 في 21:26

#35

السلام عليكم

أخي الفاضل عبد المنعم يقول المثل كل جهد يستحق أجر و لا نملك الا أن ندعو لك بالتوفيق و أن يعينك و يرزقك من حيث لا تحتسب و بارك الله فيك

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

و أتمنى أن نكون عند حسن ضنك و نفهم ما تدارسه لنا

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

#36

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

الأخ الكريم Rebouh

كان فى نهاية المشاركة هذه الجملة

"""""" أنا أكتب الآن فلا تقرأ هذه المشاركة إلا بعد أن ترى أن هذه الجملة قد زالت """""""

وكنت أقصد بها أنى أكتب الآن وأعدل وأضيف الصور وأرفع المثال

والآن اكتمل الموضوع . ادخل مرة أخرى لو سمحت

تم تعديل هذه المشاركة بواسطة عبد المنعم محمد عبد الخالق في 28 أبريل 2008 في 15:01

#37

السلام عليكم

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

معذرة و أتمنى أن يكون هناك إضافات حتى أفهم و مشكور مسبقا

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

#38

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

أخونا الكريم Rebouh ولا تشغل بالك واعتبر أنى لم أقل شيئا وحاول معى مرة أخرى كما يلى :

عندما يكون هناك عدة أوامر نحتاجها أكثر من مرة . ونستدعيها بأكثر من Button . كيف يكون الأمر ؟

سوف نكتب لكل button نفس الأوامر . أليس كذلك ؟

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

ثم إن هناك حالات يكون فيها الأوامر كثيرة جدا ، وهنا نسبة الخطأ سوف تكون عالية .

فإن عملت method كما فى الصور السابقة ووضعت فيها تلك الأوامر . وتضع أمر استدعاء لها فى الـ Button المراد ،

هنا كتبت الأوامر مرة واحدة وستقل نسبة الخطأ وستوفر مجهود ذهنى كبير ومساحة من برنامجك لا بأس بها .

وها هو الـ method مع الشرح

post-154340-1209455142_thumb.jpg

وإليك مثال صغير فيه كيفية استدعاء نفس الـ method لعدة objects أو buttons :

form.zip

أتمنى أن تجد الأمر بسيطا .وأنا تحت أمرك فى أى وقت . فقط مر .

اللهم علمنا ما جهلنا وانفعنا بما علمتنا

#39

السلام عليكم

اللهم لا سهل إلا ما جعلته سهلا

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

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

#40

السلام عليكم

اخي الكريم جزاك الله خيرا

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

d:\fox training\monem_classes.vcx

الحمد لله الذي هدانا لهذا وما كنا لنهتدي لولا ان هدانا الله

450x250_1.gif

طريقك لاحتراف برمجة قواعد البيانات باستخدام Visual FoxPro

#41
عبد المنعم محمد عبد الخالق كتب:
السلام عليكم ورحمة الله وبركاته

نفس الخطأ . يقول الله عز وجل : ولو كان من عند غير الله لوجدوا فيه اختلافا كثيرا .

سوف أضع لك ملف vcx الذى تنسحب عليه كل الـ Objects التى أصنعها وأنسى وأضع منه لحضراتكم .

هذا الملف ضعه فى المسار الذى يظهر لك فى الرسالة وسوف تسير الأمور على ما يرام .

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

class.zip

وهاهو المثال مرة أخرة وسامحونى :

grid_Search.zip

أرجو أن تعرفونى أولا بأول فالحمد لله صار هناك نشاط بالمنتدى ، ولكن يفسده علينا غياب أخونا أبو سلطان فمن يعرف تليفون له أو عنوان أو بريد إلكترونى فليضعه مشكورا .

السلام عليكم

أخي الفاضل مصطفى الـ CLASS موجودة في هذه المداخلة ليوم 23أفريل 2008 بعنوان CLASS.ZIP

بالتوفيق للجميع

#42

السلام عليكم

شكرا اخي الكريم rebouh

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

يجب ان يكون المسار relative حتى لا يحدث خطأ عند التشغيل

فاذا كان ملف الكلاس مع ملف الفورم فما عليك الا كتابة اسم الكلاس فقط في خانة Classloc

والمشكله هنا في هذه الفورم هو ان Class مربوط بمسار كامل

d:\fox training\monem_classes.vcx

والصحيح ان يكون

monem_classes.vcx

وذلك في حالة ان ملف الكلاس مع ملف الفورم

واعتقد ان اخي عبد المنعم قد قصد ذلك متعمدا حتى يرى اننا متفاعلين

وجزاك الله عنا خيرا اخي الكريم عبد المنعم

الحمد لله الذي هدانا لهذا وما كنا لنهتدي لولا ان هدانا الله

450x250_1.gif

طريقك لاحتراف برمجة قواعد البيانات باستخدام Visual FoxPro

#43

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

أرجو المعذرة إخوانى أريدكم أن تعودوا إلى المفاهيم الأولى رجاء ومعرفة الكلاس ومفهومه . بالنسبة للملف vcx هو عبارة عن مكتبة كلاسيس classlibrary والفورم نفسها كلاس فلا نقول إن هناك كلاس فى الفورم بل هناك object فى كلاس الفورم . وقلت إن شاء الله سأتحين فرصة وفرة فى الوقت وأدرج كيفية صنع مكتبة خاصة بك .

وهنا أورد ملحوظة بسيطة لفهم كنية الفورم ومعرفة أصلها بدقة بصفتك مبرمج :

الفورم هى عبارة عن سطور برمجة يمكنك قراءتها كما فى المثال التالى ، فقط اتبع الخطوات رجاء ، وقد أوردت هذا فى باب القوائم ولا مانع من ورودها فى هذا الباب لعل شخصا لا يطرق الباب الآخر يطرقه هنا :

من قائمة الفوكس tools اختر class browser سيفتح لك نافذة قارئ الكلاسس به يمكنك أن تقرأ أى كلاس لأى object صنعته .

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

post-154340-1209642871_thumb.jpg

والدنيا مذاهب .

[center]اللهم علمنا ما جهلنا وانفعنا بماعلمتنا

تم تعديل هذه المشاركة بواسطة عبد المنعم محمد عبد الخالق في 1 مايو 2008 في 14:57

#44

السلام عليكم

اخي العزيز عبد المنعم

جزاك الله خيرا تصدق اني لم استخدم Class browser من قبل

بس فعلا جميله جدا

بالنسبة لمسألة مكان ملف الكلاس يمكن انت لم تحس بها لان الملف موجود عندك في نفس المسار

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

d:\fox training\monem_classes.vcx

اليك الصور لتوضيح المشكله وطريقة حلها

post-64407-1209648007_thumb.png

post-64407-1209648080_thumb.png

post-64407-1209648133_thumb.png

الحمد لله الذي هدانا لهذا وما كنا لنهتدي لولا ان هدانا الله

450x250_1.gif

طريقك لاحتراف برمجة قواعد البيانات باستخدام Visual FoxPro

#45

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

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

بالنسبة للـ CLASSLIBRARY الخاص بى أرفقته كما نوه لك الأخ Rebouh وقلت ضعه فى المسار الذى يظهر لك فى الرسالة حتى تتفادى مستقبلا ظهور هذه الرسالة :

فالرسالة مفادها أنه فى الجزء D مجلد اسمه fox_training وهذا سهل جدا كما أعتقد .

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

وبالنسبة للاستفادة مما قلته اليوم بهذا الخصوص فعلى الأخ الذى يجد مشكلة فى فتح ملف أضعه ويطلب منه هذا الكلاسlibrary عليه الدخول إلى class browser وتعديل اسم الكلاس من cgrid مثلا إلى grid واسم ctextbox إلى textbox وهكذا .


Top = 46,;
Left = 413,;
width = 69,
caption = 'title'
name = 'BtnTry'
ADD OBJECT repeated AS ccommandbutton WITH

كما ترون فهنا أنشأنا button من نوع ccommandbutton وهذا خاص بى أما الخاص بالفوكس فاسمه commandButton أنا أضفت حرف c للخاص بى . ويمكنك التعديل هكذا بحذف هذاالحرف لتعود إلى الكلاس الأصلى الذى يعرفه فوكس .

فليعرّف أحد مشكورا المشرفين على تصميم المنتدى بلخبطة الكود على الطريقة الجديدة

اللهم علمنا ما جهلنا وانفعنا بما علمتنا

تم تعديل هذه المشاركة بواسطة عبد المنعم محمد عبد الخالق في 1 مايو 2008 في 18:10

#46

السلام عليكم

أخي الفاضل عبد المنعم أين أنت فأنا أنتظر في الجديد و في كل الابواب التي فتحتها و ربي يقدرك و يعينك و أن يجزيك عنا خير الجزاء

قـــولوا آمين يا رفاق

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

#47

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

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

تأسروننى بسؤالكم عنى . ولست من النوع الذى يتدلل أو يتثاقل على من يحبه . كلا والله . فلى مبدأ فى حياتى أطبقه وهو بيت شعر :

يا من لكم فى الدنيا أناس يحبونكم ... تشبثوا بهم واحمدوا ربكم .

فأنا أحبكم فى الله وأدعو الله أن يتقبل دعواتكم لى وأن يجعل لكم مثلها وأضعاف أضعافها يا كريم .

وأراكم على خير . بل أكتب لكم وأقرأ منكم على خير إن شاء الله تعالى .

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

#48

السلام عليكم

أخي الفاضل الله في عون العبد ما دام العبد في عون أخيه أعانك الله و جعل كل صعب سهل و أرجعك إلينا سالما غانما إن شاء الله

و نحن بانتظارك و لن نمل بإذن الله

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

#49

السلام عليكم

اخي الكريم عبد المنعم

انت شاعر ولا مبرمج ولا الاثنين ( بسم الله ما شاء الله )

نحن في انتظارك وننتظر دروسك الجميلة والشيقة

ربنا يوفقك ويسدد خطاك

الحمد لله الذي هدانا لهذا وما كنا لنهتدي لولا ان هدانا الله

450x250_1.gif

طريقك لاحتراف برمجة قواعد البيانات باستخدام Visual FoxPro

#50

السلام عليكم

و الله يا أخي الكريم عبد المنعم و كأنك غبت حولا كاملا لا أسبوع أتمنى أن تعجل رجوعك إن شاء الله

اللهم علمنا ما ينفعنا و انفعنا بما علمتنا و زدنا علما

مواضيع مشابهة