Professional Documents
Culture Documents
شرح تفصيلي لأداة ال ListView وكيفية استخدامها
شرح تفصيلي لأداة ال ListView وكيفية استخدامها
بعد مشاهدتي للعديد من األسئلة واالستفسارات حول أداة ال ListViewقررت كتابة مقال بشكل
تفصيلي عن أداة ال ListViewوسيتم خالل هذا المثال طرح أمثلة لتقريب األفكار إلى ذهن
القارئ ,وأنوه في بداية الشرح أنني سأستخدم الكود فقط في التعامل مع أداة ال ListViewولن
استخدم الخصائص مطلق ًا .. لنبدأ على بركة هللا -:
في البدء سنتعلم كيف تتم إضافة األداة ,من قائمة Projectاختر Componentsثم اختر
Microsoft Windows Common Controls 6.0
من استخدامات أداة ال ListViewهو استخدامها كأداة لعرض البيانات مثل أداة DataGridوأداة
MSFlexGridالمعروفة.
الستخدام أداة ال ListViewكأداة لعرض البيانات يجب ضبط خاصية Viewعلى الخيار
, lvwReportطبع ًا خاصية Viewتستخدم لتحديد أسلوب العرض في أداة ال ListViewوهناك
خيارات أخرى ألسلوب العرض وهذه الخيارات هي كما يلي
■ : lvwReport وهي لعرض البيانات كتقرير داخل أداة ال ListViewوهي تشبه كثير ًا األدوات
المعروفة لعرض البيانات من قاعدة البيانات مثل أداة DataGridوأداة ... MSFlexGridالخ .وهي
أكثر الخيارات المستخدمة من قبل المبرمجين
● سأبدأ اآلن بمثال بسيط ال يعتمد على قاعدة البيانات تابع معي
)1أضف أداة ListViewإلى الForm
)2اذهب إلى حدث Loadلل Formواكتب الكود التالي ,وهذا الكود كما شرحنا سابق ًا لتحديد
أسلوب العرض في أداة ال . ListView
End Sub
)3لنفترض أن نريد إضافة ثالثة أعمدة داخل أداة ال ListViewفي هذه الحالة يجب إضافة عنوان
رأسي لكل عمود وهذا يتم باستخدام خاصية ColumnHeadersألداة ال ListView
حيث
:Text النص الذي سيظهر عليه وهو الباراميتير الوحيد الذي سأستخدمه في إضافة
العناوين الرأسية
:Width لتحديد عرض العنوان الرأسي
: Alignment لتحديد اتجاه محاذاة النص على العنوان الرأسي ولهذه الخاصية ثالثة قيم
lvwColumnLeft = 0
lvwColumnRight = 1
lvwColumnCenter = 2
مع مالحظة أن العمود األول في أداة ال ListViewتكون قيمة ال Alignment = 0أي النص
محاذاة النص دائم ًا له تكون على اليسار
ListView1.ColumnHeaderIcons = ImageList1
: Clear وتستخدم هذه الوظيفة لمسح جميع العناوين الرأسية الموجودة داخل أداة ال
ListViewكما في الكود التالي
ListView1.ColumnHeaders.Clear
: Count وتستخدم هذه الوظيفة لجلب عدد العناوين الرأسية الموجودة داخل أداة ال
ListViewكما في الكود التالي مثالً
MsgBox ListView1.ColumnHeaders.Count
: Remove وتستخدم هذه الوظيفة لحذف عنوان رأسي معين بناء على قيمة ال Index
لهذا العنوان كما في الكود التالي
ListView1.ColumnHeaders.Remove Index
حيث قيمة ال Indexألول عنوان رأسي في هذه الحالة = 1وباقي العناوين بنفس الطريقة مع زيادة
ال Indexبمقدار 1للعنوان الرأسي الذي يليه
)4بعد أن شرحنا وظائف الخاصية ColumnHeadersكما قلنا سابق ًا نقوم بتحديد أسلوب العرض
في أداة ال ListViewمن خالل الخاصية Viewكما يلي
End Sub
End Sub
)6نأتي اآلن إلضافة بيانات داخل أداة ال , ListViewإلضافة عناصر داخل أداة ال ListView
نستخدم خاصية ListItemsولهذه الخاصية خمس وظائف أيض ًا وهي كالتالي
حيث
: Bold وهي لجعل الخط غامق وهي خاصية منطقية ترجع قيمة إما Trueأو False
: Selected لتحديد صف معيّن وهي خاصية منطقية ترجع قيمة إما Trueأو False
● طبع ًا في وظيفة Addكلما أضفنا عنصر بالصيغة الموجودة في األعلى يتم إضافته في نفس
العمود ..إذن كيف سنضيف بيانات في األعمدة األخرى Ž؟ تابع معي ..
نقوم بتعريف متغير من نوع ListItemونقوم بإسناده إلى الوظيفة Addثم نستخدم هذا المتغير في
إضافة بيانات لألعمدة األخرى كما يلي
"
"ListView1.ColumnHeaders.Add , , "Name
"ListView1.ColumnHeaders.Add , , "Number
"ListView1.ColumnHeaders.Add , , "Address
Dim i As Integer
For i = 0 To 4
)"Set Lst = ListView1.ListItems.Add(, , "Sniper.ps
Lst.ListSubItems.Add , , i
"Lst.ListSubItems.Add , , "Palestine
Next i
End Sub
أنقر للتوسيع...
تالحظ في الصورة عند تحديد صف يتم تحديد العنصر األول فقط في هذا الصف ولتحديد جميع
العناصر داخل أداة ال ListViewنقوم بجعل خاصية . FullRowSelect = True
هناك أيض ًا خصائص أخرى ألداة ال ListViewيمكنك استخدامها أيض ًا كما يلي
● : Appearance وهي لتحديد مظهر أداة ال ListViewولها قيمتين وهما ccFlatلجعل أداة ال
ListViewمسطحة و cc3Dوهي لجعل أداة ال ListViewثالثية األبعاد.
● : BackColor لتغيير لون خلفية أداة ال . ListView
● : FlatScrollBar لتحديد مظهر أشرطة التمرير ألداة ال ListViewوهي خاصية ذات قيمة
منطقية .
● : ForeColor لتحديد لون الخط .
● : GridLines وهي خاصية لجعل أداة ال ListViewكالشبكة وهي خاصية ذات قيمة منطقية.
● : HideColumnHeaders وهي إلخفاء العناوين الرأسية وهي خاصية ذات قيمة منطقية.
● : HotTracking وهي خاصية لتتبع شريط التحديد وهي خاصية ذات قيمة منطقية.
● : HoverSelection وهذه الخاصية عند تفعيلها يتم وضع شريط التحديد على الصف الذي يمر
عليه مؤشر الفأرة.
● : MultiSelect وهذه الخاصية تستخدم لتحديد أكثر من صف في نفس الوقت وهي خاصية
منطقية.
● : Picture وهي لوضع خلفية ألداة ال . ListView
● : PictureAlignment وهي لتحديد محاذاة خلفية ال . ListView
● : Sorted يتم ضبط هذه الخاصية لتساوي Trueلترتيب العناصر.
● : SortKey تستخدم هذه الخاصية لتحديد رقم العمود الذي نريد ترتيب البيانات بواسطته حيث رقم
أو عمود هو 0
● : SortOrder تستخدم هذه الخاصية لتحديد نمط ترتيب العناصر داخل ال ListViewولها
قيمتين وهما lvwAscendingلترتيب العناصر بشكل أبجدي تصاعدي ًا و lvwDescending
لترتيب العناصر بشكل أبجدي تنازلي ًا .
في البدء ننشئ قاعدة بيانات وننشئ داخلها جدول اسمه Table1يحتوي أربع حقول وهي ID ,
Name , Number , Addressثم ضعها في مجلد المشروع .
سنستخدم مكتبة Adoفي ربط قاعدة البيانات اذهب إلى قائمة Projectاختر Referenceثم اختر
مكتبة Microsoft ActiveX Object
Dim DB As ADODB.Connection
Dim RS As ADODB.Recordset
حيث سنستخدم المتغير DBفي االتصال بقاعدة البيانات والمتغير RSفي التعامل مع الجداول
والحقول .في حدث ال Form_Loadاستخدم الكود التالي في قاعدة البيانات
ثم سنقوم بتحديد Žأسلوب العرض للبيانات وجعل شريط Žالتحديد يحدد جميع العناصر في الصف كما في الكود التالي
ListView1.View = lvwReport
ListView1.FullRowSelect = True
"ListView1.ColumnHeaders.Add , , "Name
"ListView1.ColumnHeaders.Add , , "Number
"ListView1.ColumnHeaders.Add , , "Address
نعرف متغيّر من نوع ListItem كما يلي
Dim Lst As ListItem
نستخدم هنا حلقة Do While .. Loopلملئ أداة ال ListViewحتى نصل للسجل األخير في
قاعدة البيانات
نسند المتغير Lstللوظيفة Addالتي تضيف حقل Nameفي السجل ألداة ال , ListViewثم
نستخدم المتغير Lstفي إضافة العمود الثاني ( )Numberوالعمود الثالث ()Address
ننتقل إلى السجل التالي ,ثم نستخدم Loopإلغالق الحلقة.
ويمكن االستغناء عن الوظيفة Addللمتغير Lstواستخدام الوظيفة SubItemsليصبح الكود كما
يلي
Do While Not RS.EOF
)Set Lst = ListView1.ListItems.Add(, , RS!Name
Lst.SubItems(1) = RS!Number
Lst.SubItems(2) = RS!Address
RS.MoveNext
Loop
ListView1.ListItems.Remove ListView1.SelectedItem.Index
Dim i As Integer
For i = ListView1.ListItems.Count To 1 Step -1
If ListView1.ListItems(i).Selected = True Then ListView1.ListItems.Remove i
Next i
لكن كما تالحظ فإننا نستخدم هنا الحلقة بالعكس وذلكFor .. Next حيث في هذا الكود نستخدم حلقة
ألننا لو قمنا بحذف عنصر من بدايةListViewحتى يتم حذف العناصر الصحيحة في أداة ال
. العناصر فإن جميع مواقع العناصر األخر ستتغير
Text1 فيتم عرض العنصر األول في أداةListView1_Click حيث استخدمنا هذا الكود في حدث
وباقي العناصر في الصف نستخدم الخاصيةText طبع ًا ألول عنصر في الصف نستخدم خاصية
. SubItems
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long,
ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const LVM_FIRST = &H1000
Private Const LVM_SETCOLUMNWIDTH = (LVM_FIRST + 30)
Private Const LVSCW_AUTOSIZE = -1
Private Const LVSCW_AUTOSIZE_USEHEADER = -2
وفي حالة أردنا استخدام هذه الدالة نقوم فقط باستدعائها ألداة ال ListViewالتي نريد أن نعمل لها
. AutoSize
كما يلي
AutoSizeListView ListView1
طبع ًا عندما يكون أسلوب العرض lvwIconفلن يختلف عن أسلوب العرض lvwReportمن حيث
إضافة العناصر لكن هنا ال يوجد أعمدة وال ( ColumnHeadersعنوانين رأسية) وهناك خصائص
أخرى ال نستخدمها في هذه الحالة وسيكون شكل ال ListViewكما في الشكل التالي
لكن في هذه الحالة سنستخدم الباراميتر Keyللوظيفة Addلنتمكن من التعامل بسهولة مع كل
عنصر .سنضيف 5عناصر ,سنبدأ اآلن في برمجة المثال سنحتاج في هذا المثال أداة ImageList
تحتوي على بعض الصور
ListView1.View = lvwIcon
ListView1.Icons = ImageList1
Dim i As Integer
For i = 1 To 5
ListView1.ListItems.Add , "M" & i, "Sniper" & i, i
Next i
ListView1.View = lvwIcon
ListView1.Icons = ImageList1
Dim i As Integer
For i = 1 To 5
ListView1.ListItems.Add , "M" & i, "Sniper" & i, i
Next i
اآلن انتهينا من تصميم المثال ..طيب السؤال اآلن كيف سنقوم بربط كل أيقونة بكود معيّن عن النقر
DblClickمثالً ؟ ..الجواب طبع ًا باستخدام ال Keyلكل عنصر ..تابع معي ..
"Case "M2
Form3.Show
"Case "M3
"MsgBox "Programmed By Sniper.ps
"Case "M4
"MsgBox "www.vb4arab.com
"Case "M5
End
End Select
End Sub
أنقر للتوسيع...
حيث في هذا الكود نستخدم جملة بناء على قيمة ال Keyللعنصر المحدد لذلك استخدمنا الخاصية
SelectedItem
ثم قلنا أنه في حالة كان ال Keyللعنصر قيمته هي M1فسيتم إظهار ال Form2وبنفس الطريقة
لجميع العناصر.
في هاتين الحالتين لن تختلفا عن الحالة lvwIconإال في نمط عرض األيقونات حيث في حالة
lvwSmallIconستظهر اإليقونات
the following is a function I just hammered out (rather quickly so you may need to debug) I
took bits from another function I wrote a while back that I know runs fine so this should work
no problem:
Code:
Public Function getListView(ByVal lView as ListView) as ADODB.Recordset
For i = 1 To lView.ListItems.Count
rsResult.AddNew
For j = 0 To lView.ColumnHeaders.Count - 1
If j = 0 Then 'grab the ListItem text
rsResult.Fields(j).Value = lView.ListItems(i).Text
Else 'grab ListSubItem text
rsResult.Fields(j).Value = lView.ListItems(i).ListSubItems(j).Text
End If
Next j
rsResult.Update
Next i
if not rsREsult.BOF and not rsResult.EOF then
rsResult.MoveFirst
end if
End Function
I checked some of our apps that use Crystal Reports....the reports use a mthod
SetDataSource....
Code:
Report.Database.SetDataSource rsQuery 'valid recordset
Code:
Report.Database.SetDataSource getListView(yourListView)
xmin = Printer.CurrentX
ymin = Printer.CurrentY
' ******************
' Get column widths.
ReDim col_wid(1 To lstMeritve.SelCount + 1)
' *************************
' Print the column headers.
CommonDialog1.ShowPrinter
Printer.CurrentY = ymin + MARGIN
Printer.CurrentX = xmin + MARGIN
X = xmin + MARGIN
For i = 1 To lstMeritve.SelCount + 1
Printer.CurrentX = X
Printer.Print FittedText( _
lvw.ColumnHeaders(i).Text, col_wid(i));
X = X + col_wid(i)
Next i
xmax = X + MARGIN
Printer.Print
line_hgt = Printer.TextHeight("X")
Y = Printer.CurrentY + line_hgt / 2
Printer.Line (xmin, Y)-(xmax, Y)
Y = Y + line_hgt / 2
Y = Y + line_hgt * 1.5
Next list_item
ymax = Y
X = xmin + MARGIN / 2
For i = 1 To lstMeritve.SelCount
X = X + col_wid(i)
Printer.Line (X, ymin)-(X, ymax)
Next i
End Sub
Private Sub btnNatisni_Click()
Printer.CurrentX = 120
Printer.CurrentY = 220
PrintListView lvwList
Printer.EndDoc
End Sub
وكيفية استخدامها ListViewشرح تفصيلي ألداة ال
قررت كتابة مقال ListViewبعد مشاهدتي للعديد من األسئلة واالستفسارات حول أداة ال
وسيتم خالل هذا المثال طرح أمثلة لتقريب األفكار ListViewبشكل تفصيلي عن أداة ال
إلى ذهن القارئ ,وأنوه في بداية الشرح أنني سأستخدم الكود فقط في التعامل مع أداة ال
:-ولن استخدم الخصائص مطلقاً .. iلنبدأ على بركة هللا ListView
ثم Componentsاختر Projectفي البدء سنتعلم كيف تتم إضافة األداة ,من قائمة
:كما في الصور التالية Microsoft Windows Common Controls 6.0اختر
هو استخدامها كأداة لعرض البيانات مثل أداة ListViewمن استخدامات أداة ال
.المعروفة MSFlexGridوأداة DataGrid
على الخيار Viewكأداة لعرض البيانات يجب ضبط خاصية ListViewالستخدام أداة ال
ListViewتستخدم لتحديد أسلوب العرض في أداة ال Viewطبعا ً خاصيةlvwReport ,
وهناك خيارات أخرى ألسلوب العرض وهذه الخيارات هي كما يلي
تصميم مثال
سأبدأ اآلن بمثال بسيط ال يعتمد على قاعدة البيانات تابع معي ●
واكتب الكود التالي ,وهذا الكود كما شرحنا سابقا ً Formلل Loadاذهب إلى حدث)2
ListView .لتحديد أسلوب العرض في أداة ال
End Sub
في هذه الحالة iيجب إضافة ListViewلنفترض أن نريد إضافة ثالثة أعمدة داخل أداة ال)3
ألداة ال ColumnHeadersعنوان رأسي لكل عمود وهذا يتم باستخدام خاصية
ListView
ولهذه ListViewوهي الوظيفة تستخدم إلضافة عنوان رأسي داخل أداة ال ♦ Add :
الخاصية ست باراميترات وهي كما يلي
ListView1.ColumnHeaders.Add Index, Key, Text, Width,
Alignment, Icon
حيث
النص الذي سيظهر عليه وهو الباراميتير الوحيد الذي سأستخدمه في إضافة ▪ Text:
العناوين الرأسية
لتحديد اتجاه محاذاة النص على العنوان الرأسي ولهذه الخاصية ثالثة قيم ▪ Alignment :
Quote
lvwColumnLeft = 0
lvwColumnRight = 1
lvwColumnCenter = 2
أي Alignment = 0تكون قيمة ال ListViewمع مالحظة أن العمود األول في أداة ال
النص محاذاة النص دائما ً له تكون على اليسار
وهي خاصية إلضافة أيقونات للعناوين الرأسية.مع مراعاة ضبط خاصية ▪ Icon:
التي يتم إدراج الصور منها كما في ImageListباسم أداة ال ColumnHeaderIcons
الكود التالي
Quote
ListView1.ColumnHeaderIcons = ImageList1
وتستخدم هذه الوظيفة لمسح جميع العناوين الرأسية الموجودة داخل أداة ال ♦ Clear :
كما في الكود التالي ListView
Quote
ListView1.ColumnHeaders.Clear
وتستخدم هذه الوظيفة لجلب عدد العناوين الرأسية الموجودة داخل أداة ال ♦ Count :
كما في الكود التالي مثالً ListView
Quote
MsgBox ListView1.ColumnHeaders.Count
Indexوتستخدم هذه الوظيفة لحذف عنوان رأسي معين بناء على قيمة ال ♦ Remove :
لهذا العنوان كما في الكود التالي
Quote
ListView1.ColumnHeaders.Remove Index
ألول عنوان رأسي في هذه الحالة 1 = iوباقي العناوين بنفس الطريقة Indexحيث قيمة ال
بمقدار 1للعنوان الرأسي الذي يليه Indexمع زيادة ال
فقط هناك وظيفتين Addوظائف هذه األداة هي نفسها باراميترات الوظيفة ♦ Item :
جديدتين وهما
كما قلنا سابقا ً نقوم بتحديد ColumnHeadersبعد أن شرحنا وظائف الخاصية )4
كما يلي Viewمن خالل الخاصية ListViewأسلوب العرض في أداة ال
ListView1.View = lvwReport
End Sub
)(Private Sub Form_Load
نقوم بإضافة ثالث عنوانين رأسية ليصبح الكود كما يلي )4
ListView1.View = lvwReport
"ListView1.ColumnHeaders.Add , , "Name
"ListView1.ColumnHeaders.Add , , "Number
"ListView1.ColumnHeaders.Add , , "Address
End Sub
)(Private Sub Form_Load
ليصبح كما في الصورة التالية ListViewقم بتشغيل المثال ستالحظ تغير شكل ال )5
إلضافة عناصر داخل أداة ال ListView ,نأتي اآلن إلضافة بيانات داخل أداة ال)6
ولهذه الخاصية خمس وظائف أيضا ً وهي كالتالي ListItemsنستخدم خاصية ListView
ولهذه الخاصية ListViewوهي الوظيفة تستخدم إلضافة بيانات داخل أداة ال ♦ Add :
خمس باراميترات وهي كما يلي
Quote
ListView1.ListItems.Add Index, Key, Text, Icon, SmallIcon
حيث
باسم Iconsوهي خاصية إلضافة أيقونات للعناصر ,مع مراعاة ضبط خاصية ▪ Icon :
التي يتم إدراج الصور منها كما في الكود التالي وهذه الخاصية تستخدم ImageListأداة ال
= lvwIcon .عندما يكون أسلوب العرض
Quote
ListView1. Icons= ImageList1
Iconsوهي خاصية إلضافة أيقونات للعناصر ,مع مراعاة ضبط خاصية ▪ SmallIcon :
التي يتم إدراج الصور منها كما في الكود التالي وهذه هي ImageListباسم أداة ال
.الخاصية التي سنستخدمها في هذه الحالة
Falseأو Trueوهي لجعل الخط غامق وهي خاصية منطقية ترجع قيمة إما ▪ Bold :
Falseأو Trueلتحديد صف معيّن وهي خاصية منطقية ترجع قيمة إما ▪ Selected :
كلما أضفنا عنصر بالصيغة الموجودة في األعلى يتم إضافته في Addطبعا ً في وظيفة ●
..نفس العمود ..إذن كيف سنضيف بيانات في األعمدة األخرى ؟ تابع معي
ثم نستخدم هذا Addونقوم بإسناده إلى الوظيفة ListItemنقوم بتعريف متغير من نوع
المتغير في إضافة بيانات لألعمدة األخرى كما يلي
كما في الكود التالي ListViewنأتي اآلن لنضيف بيانات داخل أداة ال)7
ListView1.View = lvwReport
ListView1.ColumnHeaders.Add , , "Name"
ListView1.ColumnHeaders.Add , , "Number"
ListView1.ColumnHeaders.Add , , "Address"
Dim i As Integer
For i = 0 To 4
Set Lst = ListView1.ListItems.Add(, , "Sniper.ps")
Lst.ListSubItems.Add , , i
Lst.ListSubItems.Add , , "Palestine"
Next i
End Sub
Private Sub Form_Load()
تالحظ في الصورة عند تحديد صف يتم تحديد العنصر األول فقط في هذا الصف ولتحديد
جميع العناصر داخل أداة الListView نقوم بجعل خاصيةFullRowSelect = True
.
حمل المثال التوضيحي من هنا
هناك أيضا ً خصائص أخرى ألداة الListView يمكنك استخدامها أيضا ً كما يلي
كالشبكة وهي خاصية ذات قيمة ListViewوهي خاصية لجعل أداة ال ● GridLines :
.منطقية
.وهي خاصية لتتبع شريط التحديد وهي خاصية ذات قيمة منطقية ● HotTracking :
وهذه الخاصية عند تفعيلها يتم وضع شريط التحديد على الصف ● HoverSelection :
.الذي يمر عليه مؤشر الفأرةi
تستخدم هذه الخاصية لتحديد رقم العمود الذي نريد ترتيب البيانات بواسطته ● SortKey :
حيث رقم أو عمود هو 0
يحتوي أربع حقول وهي Table1في البدء ننشئ قاعدة بيانات وننشئ داخلها iجدول اسمه
.ثم ضعها في مجلد المشروع ID , Name , Number , Address
اختر Projectفي ربط قاعدة البيانات اذهب إلى قائمة Adoسنستخدم مكتبة
كما في الصورة التالية Microsoft ActiveX Objectثم اختر مكتبة Reference
سنعرف في الGeneral المتغيرين التاليين
Dim RS As ADODB.Recordset
Dim DB As ADODB.Connection
حيث سنستخدم المتغيرDB في االتصال بقاعدة البيانات والمتغيرRS في التعامل مع
في حدث ال. الجداول والحقولForm_Load استخدم الكود التالي في قاعدة البيانات
ثم سنقوم بتحديد أسلوب العرض للبيانات وجعل شريط التحديد يحدد جميع العناصر في
الصف كما في الكود التالي
ListView1.FullRowSelect = True
ListView1.View = lvwReport
ListView1.ColumnHeaders.Add , , "Number"
ListView1.ColumnHeaders.Add , , "Address"
ListView1.ColumnHeaders.Add , , "Name"
نستخدم هنا حلقةDo While .. Loop لملئ أداة الListView حتى نصل للسجل األخير
في قاعدة البيانات
لكن كما تالحظ فإننا نستخدم هنا الحلقة For .. Nextحيث في هذا الكود نستخدم حلقة
ألننا لو قمنا بحذف ListViewبالعكس وذلك حتى يتم حذف العناصر الصحيحة في أداة ال
.عنصر من بداية العناصر فإن جميع مواقع العناصر األخر ستتغير
فيتم عرض العنصر األول في أداة ListView1_Clickحيث استخدمنا هذا الكود في حدث
وباقي العناصر في الصف Textطبعا ً ألول عنصر في الصف نستخدم خاصية Text1
SubItems .نستخدم الخاصية
وفي حالة أردنا استخدام هذه الدالة نقوم فقط باستدعائها ألداة الListView التي نريد أن
نعمل لهاAutoSize .
كما يلي
AutoSizeListView ListView1
استخدام أداة ال: ً ثانياListView عندما تكون خاصيةView = lvwIcon
For i = 1 To 5
ListView1.ListItems.Add , "M" & i, "Sniper" & i, i
Next i
Dim i As Integer
وهي من 1إلى For .. Next 5ثم قمنا بتحديد عدد دورات الحلقة
للعنصر Keyثم سيتم إضافة عنصر في دورة كما هو مالحظ من الكود حيث سيكون ال
ال يجب أن Keyوهكذا .مع مالحظ أن ال M2 ...العنصر الثاني هو M1األول هو
Indexيتكرر عند إضافة العناصر ,وبالنسبة لباراميتر األيقونة يتم تحديده بكتابة رقم ال
للصورة المراد إضافتها للعنصر المضاف مع مالحظ أن الباراميترالذي يتم إضافة رقم ال
SmallIcon .وليس الباراميتر Iconهو الباراميتر Index
ListView1.Icons = ImageList1
Dim i As Integer
For i = 1 To 5
ListView1.ListItems.Add , "M" & i, "Sniper" & i, i
Next i
End Sub
Private Sub Form_Load()
طيب السؤال اآلن كيف سنقوم بربط كل أيقونة بكود معيّن.. اآلن انتهينا من تصميم المثال
عن النقرDblClick الجواب طبعا ً باستخدام ال.. مثالً ؟Key تابع معي.. لكل عنصر..
Case "M2"
Form3.Show
Case "M3"
MsgBox "Programmed By Sniper.ps"
Case "M4"
MsgBox "www.vb4arab.com"
Case "M5"
End
End Select
End Sub
)(Private Sub ListView1_DblClick
للعنصر المحدد لذلك استخدمنا Keyحيث في هذا الكود نستخدم جملة بناء على قيمة ال
SelectedItemالخاصية
وبنفس Form2فسيتم إظهار ال M1للعنصر قيمته هي Keyثم قلنا أنه في حالة iكان ال
.الطريقة لجميع العناصر
حمل المثال التوضيحي من هنا
إال في نمط عرض األيقونات حيث في lvwIconفي هاتين الحالتين لن تختلفا عن الحالة
ستظهر اإليقونات كما في الصورة التالية lvwSmallIconحالةi
PrintListView ListView1
Printer.EndDoc
End Sub
xmin = Printer.CurrentX
ymin = Printer.CurrentY
' ******************
' Get column widths.
num_cols = lvw.ColumnHeaders.Count
ReDim col_wid(1 To num_cols)
' *************************
' Print the column headers.
Printer.CurrentY = ymin + MARGIN
Printer.CurrentX = xmin + MARGIN
X = xmin + MARGIN
For i = 1 To num_cols
Printer.CurrentX = X
Printer.Print FittedText( _
lvw.ColumnHeaders(i).Text, col_wid(i));
X = X + col_wid(i)
Next i
xmax = X + MARGIN
Printer.Print
line_hgt = Printer.TextHeight("X")
Y = Printer.CurrentY + line_hgt / 2
Printer.Line (xmin, Y)-(xmax, Y)
Y = Y + line_hgt / 2
Y = Y + line_hgt * 1.5
Next list_item
ymax = Y
X = xmin + MARGIN / 2
For i = 1 To num_cols - 1
X = X + col_wid(i)
Printer.Line (X, ymin)-(X, ymax)
Next i
End Sub
Kill strFolder & "\*.txt" ' delete all previous saved items
For j = 1 To lv.ListItems.Count
Set lvItem = lv.ListItems.Item(j)
n = FreeFile
Open strFolder & "\" & j & ".txt" For Output As #n
'If you want to save the row in one line, replace vbNewLine with your desired
delimiter
r = lvItem.Text & vbNewLine
For k = 1 To lvItem.ListSubItems.Count - 1
r = r & lvItem.SubItems(k) & vbNewLine
Next
Print #n, Mid$(r, 1, Len(r) - 2) ' remove the last delimiter
'if you used comma as delimiter, replace Print #n, Mid$(r, 1, Len(r) - 2) with
' Print #n, Mid$(r, 1, Len(r) - 1)
Close #n
Next
End Sub