تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الدرس العاشر - تصميم شاشة عرض البضائع - العرض والتحديد
#1
كاتب الموضوع : أحمد جمال

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



تصميم شاشة عرض البضائع .

ملحوظة هامة للغاية : هذا الدرس هو الدرس الأكبر والأهم في هذه السلسلة وباقي الدروس سوف تعتمد بنسبة كبيرة على ما فهمناه سوية هنا ، لذا لا تستصعب الأمر وخذ وقتك في فهم الدرس .



في هذا الدرس سوف نبدأ بعمل شاشة عرض البضائع ، وكما هي العادة عند التصميم فإن كل منا يصمم كما يحلو له ... لكن لا تنس أننا لا بد أن نشترك في المحتويات الرئيسية وهي :


قائمة في الأعلى لاختيار البضائع .
جدول لعرض جميع البضائع الموجودة .
مربعات نص لعرض البضاعة المختارة حالياً .


أزرار أوامر للتعديل والحذف ، وزرين لعملية بيع أو شراء تتصل بالشاشة الخاصة بها والتي سنقوم بعملها عندما يأتي دورها .
وأخيراً تتعين كأحد أبناء Children للفورم MDIForm وذلك عن طريق ضبط خاصية MDIChild = True .

لاضافة الجدول اضغط Ctrl+T واختر Microsoft Flex Grid 6.0 واخترنا هذا الجدول لامكانية التحكم المطلق به ، حيث نقوم بعمل كل شيء فيه ، وحتى لو أردنا عمل DBGrid متطور باستخدامه فسيمكننا ذلك .

لاظهار الشاشة من خلال القائمة نكتب الأمر التالي :



كود :
[align=right]Case 0
If T1.RecordCount = 0 Then
MsgBox " لا توجد أي بضائع لعرضها ، لاضافة بضاعة جديدة اختر اضافة - اضافة بضاعة ", vbExclamation + arabic, "عرض البضائع"
Exit Sub
End If
Frm_Show.Show[/align]

لو ظل الفورم على تصميمه القديم من حيث
BorderStyle=2 فستلاحظ تغير حجم الشاشة - ولكن لو ضبطت الخاصية إلى 1 فلن تحدث هذه المشكلة .

لن ننسى اضافة السطرين التاليين ، حيث يقومان بتوسيط الفورم كما فعلنا مع Frm_Info ، لذلك سنضيفهما في حدث Load للفورم :



كود :
[align=right]Frm_Show.Left = ((MDIForm1.Width - Frm_Show.Width) / 2)
Frm_Show.Top = ((MDIForm1.Height - Frm_Show.Height) / 2) - 800[/align]
لنبدأ الآن سوية في تصميم اجراء Refresh_Me والذي ينطلق عند تشغيل الفورم Form_Load ، وعند كل عملية حذف أو تعديل .

بما أن لدينا كائن T1 يحتوي على معلومات البضائع ، فلم لا نقوم بالدوران على هذا الكائن من البداية إلى النهاية ووضع الاسماء فيه إلى القائمة :



كود :
[align=right]Sub Refresh_Me()
Combo1.Clear
If T1.RecordCount <> 0 Then
T1.MoveFirst
For i = 0 To T1.RecordCount - 1
Combo1.AddItem T1!Name
T1.MoveNext
Next i
End If[/align]

هذا ولكي تعرض البضائع في هذه القائمة مرتبة أبجدياً فإننا نضبط خاصية Sorted للقائمة لتساوي True .

والآن فإننا وبنفس طريقة عرض البيانات في القائمة نريد لكامل البيانات أن تعرض في الجدول ، ولذا سوف نضعهم جميعاً داخل حلقة تكرار واحدة تقليلاً للجهد على الذاكرة . ولكنني أريد أن أشرح كيفية اضافة بيانات في MSFlexGrid .



واجمالاً: توجد خاصيتين على قدر كبير من الأهمية هما Col و Row واللتان تحددان في نقطة التقاءهما خلية Cell لها خصائص أشهرها Text لعرض النص فيها .

هناك أيضاً خاصيتي Rows و Cols واللتان تحددان عدد الصفوف والأعمدة في الجدول ، ووظيفة Clear والتي تقوم بمسح كافة محتويات الجدول .

سوف نقوم بعمل اجراء نسمية Create_Flex وذلك لتهيئة الجدول لنتعامل معه ، يحتوي هذا الأجراء على وضع عدد الأعمدة = 7 ، الصفوف = عدد السجلات + 1 ، ونضيف التعبيرات المناسبة على رأس كل جدول .
لعمل المهمتين الأولتين :



كود :
[align=right]MSFlexGrid1.Clear
MSFlexGrid1.Cols = 7
MSFlexGrid1.Rows = T1.RecordCount + 1[/align]
أما للمهمة الثانية فسوف نتنقل بين الأعمدة ، ونضع على رأس كل عمود القيمة المناسبة له :



كود :
[align=right]MSFlexGrid1.Row = 0
MSFlexGrid1.Col = 0
MSFlexGrid1.Text = "ت"
MSFlexGrid1.Col = 1
MSFlexGrid1.Text = "رقم"
MSFlexGrid1.Col = 2
MSFlexGrid1.Text = " اسم البضاعة"
MSFlexGrid1.Col = 3
MSFlexGrid1.Text = "النوع"
MSFlexGrid1.Col = 4
MSFlexGrid1.Text = "المصنع"
MSFlexGrid1.Col = 5
MSFlexGrid1.Text = "السعر"
MSFlexGrid1.Col = 6
MSFlexGrid1.Text = "العدد"
MSFlexGrid1.Col = 7
MSFlexGrid1.Text = "وحدة/صندوق"[/align]

ولكن ماذا عن توسيط الأعمدة ... نستطيع ذلك من خلال كود كالتالي :



كود :
[align=right]MSFlexGrid1.ColAlignment(0) = 5
MSFlexGrid1.ColAlignment(1) = 3
MSFlexGrid1.ColAlignment(2) = 5
MSFlexGrid1.ColAlignment(3) = 5
MSFlexGrid1.ColAlignment(4) = 5
MSFlexGrid1.ColAlignment(5) = 5
MSFlexGrid1.ColAlignment(6) = 5[/align]
حيث أن 5 ترمز للمنتصف ، أما 3 فترمز إلى المحاذاة إلى اليمين .
نفس الأمر بالنسبة لعرض كل عمود ... ولن نغير سوى في عرض الأعمدة التي لا يناسبنا حجمها الافتراضي وهي الأول ( تسلسل ) والثاني ( اسم البضاعة ) والثالث والرابع ( النوع - المصنع ) :



كود :
[align=right]MSFlexGrid1.ColWidth(0) = 500
MSFlexGrid1.ColWidth(1) = 1500
MSFlexGrid1.ColWidth(2) = 1500
MSFlexGrid1.ColWidth(3) = 1500[/align]
وسوف نستدعي هذا الإجراء في بداية Refresh_Me .
ولكن ماذا عن تعبئة الجدول داخل حلقة التكرار ، في الواقع بنفس الطريقة التي كتبنا بها رؤوس الأعمدة سوف نكتب القيم الأخرى ، إلا أن رقم الصف سوف يصبح قيمة المتغير i+1 .
ومن ذلك نستطيع أن نحصل على كود اجمالي لدالة Refresh_Me - مؤقتاً - .



كود :
[align=right]Sub Refresh_Me()
Combo1.Clear
Create_Flex
If T1.RecordCount <> 0 Then
T1.MoveFirst
For i = 0 To T1.RecordCount - 1
MSFlexGrid1.Row = i + 1
MSFlexGrid1.Col = 0
MSFlexGrid1.Text = T1!Number
MSFlexGrid1.Col = 1
MSFlexGrid1.Text = T1!Name
MSFlexGrid1.Col = 2
MSFlexGrid1.Text = T1!Category
MSFlexGrid1.Col = 3
MSFlexGrid1.Text = T1!Factory
MSFlexGrid1.Col = 4
MSFlexGrid1.Text = T1!price
MSFlexGrid1.Col = 5
MSFlexGrid1.Text = T1.Fields("Count")
MSFlexGrid1.Col = 6
MSFlexGrid1.Text = T1!Box_Count

Combo1.AddItem T1!Name
T1.MoveNext
Next i
End If
End Sub[/align]

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



يتبع ...
}}}
تم الشكر بواسطة:


الردود في هذا الموضوع
الدرس العاشر - تصميم شاشة عرض البضائع - العرض والتحديد - بواسطة Raggi Tech - 15-10-12, 07:52 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  الدرس الرابع والثلاثون والأخير - نبذة عن العملية العكسية + تجهيز البرنامج على Cd RaggiTech 0 13,819 15-10-12, 09:10 AM
آخر رد: RaggiTech
  الدرس الثالث والثلاثون - كيفية عمل اعداد Setup للبرنامج RaggiTech 0 4,307 15-10-12, 09:08 AM
آخر رد: RaggiTech
  الدرس الثاني والثلاثون - التحويل إلى exe RaggiTech 0 4,341 15-10-12, 09:07 AM
آخر رد: RaggiTech
  الدرس الحادي والثلاثون - تعددية المستخدمين - البحث وطباعة الفواتير - التعليمات ... RaggiTech 2 5,308 15-10-12, 09:05 AM
آخر رد: RaggiTech
  الدرس الثلاثون - التعامل مع شريط الأدوات ToolBar RaggiTech 0 4,192 15-10-12, 08:59 AM
آخر رد: RaggiTech
  الدرس التاسع والعشرون - التعامل مع أشرطة الحالة Statues Bar RaggiTech 0 3,883 15-10-12, 08:57 AM
آخر رد: RaggiTech
  الدرس الثامن والعشرون -الطباعة في البرنامج . RaggiTech 4 5,769 15-10-12, 08:56 AM
آخر رد: RaggiTech
  الدرس السابع والعشرون - مقدمة إلى التعامل مع التقارير من خلال DataReport RaggiTech 2 6,607 15-10-12, 08:45 AM
آخر رد: RaggiTech
  الدرس السادس والعشرون - التقارير اليومية ، والتقارير بين تاريخين RaggiTech 1 4,735 15-10-12, 08:39 AM
آخر رد: RaggiTech
  الدرس الخامس والعشرون - الإحصائيات والرسوم البيانية RaggiTech 0 4,040 15-10-12, 08:37 AM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم