الدرس الرابع :
تحكمات متقدمة :
1- إضافة سطر جديد بواسطة تعليمة AddItemكود
MsFlexGrid.AddItem Item, Idnex
حيث
Item : النص المراد إدراجه في السطر الجديد
Index الترتيب المراد إدراج السطر به .. وفي حال لم تمرر هذه القيمة يتم إدراج السطر في آخر الجدول ولا يجوز إدراج سطر جديد في ترتيب سطر ثابت
مثال :
كود
MsFlexGrid1.AddItem "Sum :"
ويلاحظ أن الإدراج يتم في أول عمود فقط .. ولكي ندرج مجموعة قيم في أعمدة أخرى نستخدم محرف الـ Tab وهو إما VBTab أو Chr(9) كما يلي :
كود
MsFlexGrid1.AddItem "Sum :" & VBTab & "12000" & chr(9) & "2455"
2- السماح بتغيير حدود الأعمدة والأسطر :إن صلاحية تغيير حدود الأعمدة والأسطر يكون له إحدى هذه القيم :
الصلاحية .................... القيمة .. أو استخدم الثابت
------------------------------------------------------------------
حدود ثابتة....................... 0 ..... flexResizeNone
تغيير حدود الأعمدة فقط ....... 1..... flexResizeColumns
تغيير حدود الأسطر فقط ....... 2 ..... flexResizeRows
تغيير حدود الأسطر والأعمدة .. 3 ..... flexResizeBoth
كود
MsFlexGrid.AllowUserResizing = الصلاحية
3- تغيير أسلوب التحديد عند النقر على خلية ثابتة :كود
MsFlexGrid.AllowBigSelection = False أو True
True : عند الضغط على الخلية الثابتة يتم تحديد كامل السطر او العمود الذي يبدأ بهذه الخلية
4- الإستعلام عن حالة خفاء / ظهور الأعمدة والأسطر : كود
MsFlexGrid.ColIsVisible(رقم العمود)
MsFlexGrid.RowIsVisible(رقم السطر)
مثال : إذا كان عدد الأسطر 15 ويظهر ضمن عرض أداة MsFlexGrid 7 أعمدة فقط فإن حالة ظهور الأعمدة من 7-15 تكون False
كود
MsgBox MsFlexGrid1.ColIsVisible(MsFlexGrid1.cols)
5- تحديد مجموعة خلايا :لتحديد مجموعة خلايا نضع نحدد الخلية التي سنبدأ منها التحديد ثم نستعمل خاصيتي RowSel و ColSel كما يلي
كود
MsFlexGrid.ColSel = N <---------- يتم التحديد حتى هذا العمود
MsFlexGrid.RowSel = N <---------- يتم التحديد حتى هذا السطر
مثال :
لتحديد ثالث ورابع وخامس خلية في العمود الثاني نكتب :
كود
MsFlexGrid1.Col = 1
MsFlexGrid1.Row = 2
MsFlexGrid1.RowSel = 4
في هذا المثال لا يتم تظليل الخلية الأولى لأنها هي الخلية التي عليها المؤشر (التحكم)
و يمكن استعمال خاصيتي RowSel و ColSel لقراءة قيمتهما.مثال :
لتغيير اللون الخلفي للخلايا المحددة إلى اللون الأصفر نكتب هذا الكود في الحدث الذي نريده وليكن عند الضغط على زر:
كود
Dim X as Integer , Y as Integer
Dim BC as Integer , EC as Integer
Dim BR as Integer , ER as Integer
BC = MsFlexGrid1.Col
EC = MsFlexGrid1.ColSel
BR = MsFlexGrid1.Row
ER = MsFlexGrid1.RowSel
For X = BC To EC Step IIf(BC > EC, -1, 1)
For Y = BR To ER Step IIf(BR > ER, -1, 1)
MsFlexGrid1.Col = X
MsFlexGrid1.Row = Y
MsFlexGrid1.CellBackColor = VbYellow
Next Y
Next X
6- تغيير ترتيب الأسطر : كود
MsFlexGrid.RowPosition(رقم السطر) = الترتيب الذي نريده
7- تغيير ترتيب الأعمدة : كود
MsFlexGrid.ColPosition(رقم العمود) = الترتيب الذي نريده
مثال : لترتيب الأعمدة بشكل معكوس :
كود
Dim R as Integer
For R = 2 To MsFlexGrid1.Cols - 1
MsFlexGrid1.ColPosition(R) = 1
Next
8- معرفة موقع الخلية بالنسبة للأداة MsFlexGid :نستعمل خاصيتي :
ColPos : لمعرفة بعد الحد الأيسر للعمود عن طرف الأداة من اليسار
RowPos : لمعرفة بعد الحد العلوي للسطر عن طرف الأداة من الأعلى
مثال تطبيقي :
للإظهار مربع نص - وليكن اسمه Text1وهو مخفي حالياً - مكان الخلية عند النقر المزدوج عليها :
كود
With MsFlexGrid1
Set Text1.Font = .Font
Text1.RightToLeft = .RightToLeft
Text1.Alignment = .CellAlignment
Text1.Left = .Left + .ColPos(.Col) + .BorderStyle * 30
Text1.Top = .Top + .RowPos(.Row) + .BorderStyle * 30
Text1.Width = .ColWidth(.Col)
Text1.Height = .RowHeight(.Row)
Text1.Appearance = vbFlat
Text1.Text = .Text
Text1.Visible = True
Text1.SetFocus
End With