• الإعلانات

    • فيصل الحربي

      تسجيل عضوية جديدة في المنتدى   01/31/2016

      السلام عليكم ورحمة الله وبركاته  عزيزي العضو الجديد :  حاليا رسالة الإيميل لتأكيد صحة إيميلكم تذهب للبريد العشوائي ( جاري حل المشكلة )  فإذا لم تجد رسالة التحقق من إيميلكم في صندوق الوارد لديكم إتجه للبريد العشوائي ( JUNK)  وقم بتفعيل إشتراككم من هناك   

Sniper.ps

اعضاء جدد
  • عدد المشاركات

    19
  • تاريخ الانضمام

  • تاريخ اخر زياره

السمعه بالموقع

17 عادي

عن Sniper.ps

  • الرتبة
    عضو جديد
  1. السلام عليكم ورحمة الله وبركاته أخي الكريم راجع الرابط التالي http://www.arabteam2000-forum.com/index.php?showtopic=253333 وفقك الله
  2. السلام عليكم ورحمة الله وبركاته اخواني الكرام في المرفقات مثال لحفظ الصور في قاعدة البيانات باستخدام مكتبة Ado أتمنى أن يفيدكم وفقكم الله حفظ الصور في قاعدة البيانات.rar
  3. checkListBox

    السلام عليكم ورحمة الله وبركاته أختي الكريمة المثال في المرفقات باستخدام أداة الـ ListView صحيح أخي فأنا لم أتطرق له بشكل تفصليلي .. وإن شاء الله المثال في المشاركة يوضح ما كنت أقصده وفقنا وإياكم الله WindowsApplication1.rar
  4. checkListBox

    السلام عليكم ورحمة الله وبركاته أختي الكريمة بالإمكان استخدام أداة ListView بدلاً من checkListBox لأنها ستعطيك الخصائص التي تريدينها بسهولة مقالة] شرح تفصيلي لأداة ال ListView وكيفية استخدامها وفقك الله
  5. وعليكم السلام ورحمة الله وبركاته حياك الله أخي الحبيب Najy Ibraheem .. إن شاء الله أكون عند حسن ظنك وفقنا وإياكم الله
  6. السلام عليكم ورحمة الله وبركاته تم تعديل المثال أخي الكريم .. أعتذر عن الخطأ في الكود وفقك الله ColorDuplicateExample3.rar
  7. السلام عليكم ورحمة الله وبركاته أخي الكريم تفضل المثال بعد التعديل وفقك الله ColorDuplicateExample2.rar
  8. السلام عليكم ورحمة الله وبركاته أخي الكريم تفضل المثال بعد التعديل وفقك الله Example2.rar
  9. السلام عليكم ورحمة الله وبركاته أخي الكريم المثال بعد التعديل في المرفقات وفقك الله ColorDuplicateExample.rar
  10. وعليكم السلام ورحمة الله وبركاته تفضل أخي الكريم المثال بعد التعديل في المرفقات وفقك الله Example.rar
  11. السلام عليكم ورحمة الله وبركاته اخواني الكرام في المرفقات مثال لكيفية جلب حالة أي زر في لوحة المفاتيح وقد قمت بتصميم المثال لتظهر حالة الزر Enter على سبيل المثال لا الحصر ملاحظة : الدالة ترجع قيمة منطقية إما True أو False أتمنى أن تستفيدوا منه وفقكم الله GetKeyState.rar
  12. السلام عليكم ورحمة الله وبركاته أخي الكريم جواد في المرفقات مثال كنت قد صممته منذ زمن وستجد فيه ما تريد بإذن الله وأي استفسار إن شاء الله حاضر للإجابة وفقك الله ListView.rar
  13. بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته في هذا الدرس إن شاء الله سأقوم بشرح أداة أعجبتني وأردت أن تستفيدوا منها في برامجكم لأنها حقاً أداة رائعة وهي أداة Office Ribbon 2007 . وللمعلومة فإن الأداة مفتوحة المصدر ومنقولة من احد المواقع أما الشرح فمن إعدادي والحمد لله للتعرف على ال Ribbon انظر إلى الصورة التالية أهم خصائص هذه الأداة 1)خاصية Theme ومن خلال هذه الخاصية يمكنك تغيير لون أداة ال Ribbon ولهذه الخاصية ثلاثة قيم وهي 2) خاصية ImageList وهذه الخاصية لاستخدام الإيقونات في ال Ribbon طبعا باستخدام أداة ImageList 3) خاصية AddTab وهي لإضافة Tab وصيغتها العامة كما يلي ACPRibbon1.AddTab (TabID, Caption) حيث TabID هو رقم المعرّف للTab Caption : وهي النص الذي تريد أن يظهر على ال Tab 4) خاصية AddCat وهي لإضافة مجموعة (Group) وصيغتها العام كما يلي ACPRibbon1.AddCat (ID, TabID, Caption, DialogButton) 5)AddButton ويستخدم لإضافة زر أمر (Button) داخل ال Group وصيغتها العامة ACPRibbon1.AddButton (ID, GroupID, Caption, Picture, Arrow, ToolTip) حيث ID: رقم المعرف للButton GroupID : رقم ال Group التي سيتم إضافة الButton فيها Caption : النص الذي سيظهر على ال Button Picture : رقم الصورة التي نريد ان نظهرها على ال Button مع العلم أن أرقام الصور مأخوذة من أداة ال ImageList Arrow : وهي قيمة منطقية لإظهار أو إخفاء سهم صغير على ال Button ToolTip : وهي النص الذي سيظهر في النافذة الصغير الصفراء التي تظهر عند وضع الماوس فوق ال Button 6) Refresh : وهذا الحدث يستخدم في آخر سطر في الكود ليتم إظهار ال Tabs وال Groups وال Buttons على أداة ال Ribbon ملاحظة : يتم إضافة ال Tabs وال Groups وال Buttons بالترتيب يعني في البداية نضيف ال Tabs ثم نضيف ال Groups ثم نضيف ال Button ملاحظة : تجنب تكرار قيمة ال ID للمكونات لكي تتمكن من التعامل مع الأداة بسكل سليم. أحداث الأداة 1) حدث ACPRibbon1_TabClick حيث من خلال هذا الحدث يتم تنفيذ كود بالاعتماد على قيمة ال ID أو ال Caption لكن من الأفضل استخدام قيمة الID للTabs 2)حدث ACPRibbon1_CatClick تقريباً نفس حدث ACPRibbon1_TabClick لكن في هذه الحالة لا يتم تنفيذ الكود إلا من خلال النقر على DialogButton الذي يتم إضافته إلى ال Groups 3)حدث ACPRibbon1_ButtonClick وفي هذا الحدث يتم تنفيذ الكود من خلال قيمة ال ID أو قيم ال Caption ولكن كما سبق وذكرت يفضل استخدام ال ID . طبعاً يتم ذلك عن طريق جمل IF أو جملة Select Case إنشاء مثال تطبيقي نضع أداة ال Ribbon على الفورم ونضع أداة ImageList وأداة Image نعرف المتغير التالي في ال General Dim Theme As Integer في حدث ال Form_Load نضع الأكواد كما في الشرح التالي ACPRibbon1.Theme = ThemeTheme = 0 حيث أعطينا المتغير Theme قيمة 0 ثم أعطينا هذه القيمة لخاصية Theme لأداة ال Ribbon وقيمة صفر لخاصية Theme تعبر عن اللون الأسود لل Ribbon ثم الكود التالي Image1.Left = 0 Image1.Top = ACPRibbon1.Height لضبط إحداثيات أداة ال Image ثم Image1.Picture = ACPRibbon1.LoadBackground لضبط خاصية Picture لأداة ال Image وهي لإظهار لمعان في الخلفية ثم Form1.BackColor = ACPRibbon1.BackColor لضبط لون خلفية الفورم ثم الكود ACPRibbon1.ImageList = ImageList1 ثم ACPRibbon1.AddTab "2", "Tab 2" ACPRibbon1.AddTab "3", "Tab 3"ACPRibbon1.AddTab "1", "Tab 1" لاضافة 3 Tabs لاحظ أن قيمة ال ID مختلفة لكل منها ثم ACPRibbon1.AddCat "2", "1", "Group 2", True ACPRibbon1.AddCat "3", "1", "Group 3", True ACPRibbon1.AddCat "4", "2", "Group 1", True ACPRibbon1.AddCat "5", "2", "Group 2", False ACPRibbon1.AddCat "6", "3", "Group 1", FalseACPRibbon1.AddCat "1", "1", "Group 1", False لإضافة ال Groups فمثلاً في السطر الأول يتم إضافة Group برقم ID = 1 تابع للTab الذي قيمة ال ID له 1 ولا ستم إضافة DialogButton نظراً لأن القيمة = False تذكر أن الصيغة العامة لإضافة مجموعة هي كالتالي ACPRibbon1.AddCat (ID, TabID, Caption, DialogButton) ثم الكود التالي لإضافة Button ACPRibbon1.AddButton "1", "1", "تغيير" & vbNewLine & "الستايل", 4 ACPRibbon1.AddButton "2", "1", "جدول", 1, False, "إضافة جدول جديد" ACPRibbon1.AddButton "3", "1", "إضافة صورة", 2 ACPRibbon1.AddButton "4", "1", "إضاقة" & vbNewLine & "صورة", 2 ACPRibbon1.AddButton "5", "2", "Graph", 3 ACPRibbon1.AddButton "6", "2", "Graph", 3, True ACPRibbon1.AddButton "7", "3", "إلبوم", 4 ACPRibbon1.AddButton "8", "4", "رسم", 5 حيث في السطر الأول مثلاً رقم ال ID = 1 لل Button يتم إضافته داخل ال Group الذي يحمل ال ID = 1 والCaption = تغيير الستايل حيث كل كلمة في سطر لهذا استخدمت vbNewLine وستم إضافة الصورة أو الإيقونة رقم 4 الموجودة داخل أداة ال ImageList و ACPRibbon1.Refresh لتحديث الاداة ورسم المكونات عليها ليصبح الكود كاملاً داخل حدث ال Form_Load كما يلي Private Sub Form_Load() Theme = 0 ACPRibbon1.Theme = Theme Image1.Left = 0 Image1.Top = ACPRibbon1.Height Image1.Picture = ACPRibbon1.LoadBackground Form1.BackColor = ACPRibbon1.BackColor ACPRibbon1.ImageList = ImageList1 ACPRibbon1.AddTab "1", "Tab 1" ACPRibbon1.AddTab "2", "Tab 2" ACPRibbon1.AddTab "3", "Tab 3" ACPRibbon1.AddCat "1", "1", "Group 1", False ACPRibbon1.AddCat "2", "1", "Group 2", True ACPRibbon1.AddCat "3", "1", "Group 3", True ACPRibbon1.AddCat "4", "2", "Group 1", True ACPRibbon1.AddCat "5", "2", "Group 2", False ACPRibbon1.AddCat "6", "3", "Group 1", False ACPRibbon1.AddButton "1", "1", "تغيير" & vbNewLine & "الستايل", 4 ACPRibbon1.AddButton "2", "1", "جدول", 1, False, "إضافة جدول جديد" ACPRibbon1.AddButton "3", "1", "إضافة صورة", 2 ACPRibbon1.AddButton "4", "1", "إضاقة" & vbNewLine & "صورة", 2 ACPRibbon1.AddButton "5", "2", "Graph", 3 ACPRibbon1.AddButton "6", "2", "Graph", 3, True ACPRibbon1.AddButton "7", "3", "إلبوم", 4 ACPRibbon1.AddButton "8", "4", "رسم", 5 ACPRibbon1.Refresh End SubDim Theme As Integer استخدام الأحداث يتم كما يلي يمكنك استخدام جملة Select Case كما يلي سنأخذ حدث ButtonClick لأنه الأكثر استعمالاً Private Sub ACPRibbon1_ButtonClick(ByVal ID As String, ByVal Caption As String) Select Case ID Case 1 Theme = Theme + 1 If Theme > 2 Then Theme = 0 ACPRibbon1.Theme = Theme Image1.Picture = ACPRibbon1.LoadBackground Form1.BackColor = ACPRibbon1.BackColor ACPRibbon1.Refresh End Select End Sub فمثلاً في هذا الكود باستخدام جملة Select Case في حالة كانت قيمة ال ID = 1 فإننا سنقوم بتغيير ال Theme وباقي ال Button بنفس الطريقة عن طريق قيمة ال ID يمكننا تنفيذ كود معيًن وبالنسبة لباقى الأحداث بنفس الطريقة استخدم جملة Select Case في برمجتها ملاحظة هامة : عندما تريد أن تستخدم هذه الأداة في برامجك يبج إضافة الملفين الظاهرين في الصورة التالية حتى تعمل أداة ال Ribbon حيث أن ملف Theme هو ملف Resuorce يحتوى على الصور المكوّنة لأداة ال Ribbon وملف Office Ribbon 2007 وهي أداة ال Ribbon والمثال في المرفقات أتمنّى أنّ أكون قد أفدتكم تحياتي للجميع Ribbon Example.rar
  14. بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته شرح تفصيلي لأداة ال ListView وكيفية استخدامها بعد مشاهدتي للعديد من الأسئلة والاستفسارات حول أداة ال ListView قررت كتابة مقال بشكل تفصيلي عن أداة ال ListView وسيتم خلال هذا المثال طرح أمثلة لتقريب الأفكار إلى ذهن القارئ , وأنوه في بداية الشرح أنني سأستخدم الكود فقط في التعامل مع أداة ال ListView ولن استخدم الخصائص مطلقاً .. لنبدأ على بركة الله :- في البدء سنتعلم كيف تتم إضافة الأداة , من قائمة Project اختر Components ثم اختر Microsoft Windows Common Controls 6.0 كما في الصور التالية : صورة الأداة بعد إضافتها على ال Form استخدامات أداة ال ListView أولاً : استخدام أداة ال ListView كأداة لعرض البيانات من استخدامات أداة ال ListView هو استخدامها كأداة لعرض البيانات مثل أداة DataGrid وأداة MSFlexGrid المعروفة. لاستخدام أداة ال ListView كأداة لعرض البيانات يجب ضبط خاصية View على الخيار lvwReport ,طبعاً خاصية View تستخدم لتحديد أسلوب العرض في أداة ال ListView وهناك خيارات أخرى لأسلوب العرض وهذه الخيارات هي كما يلي ■ lvwIcon : وهي لعرض أيقونات كبيرة داخل أداة ال ListView كما في الصورة التالية ■ lvwList : وهي البيانات كقائمة داخل أداة ال ListView كما في الصورة التالية ■ lvwReport : وهي لعرض البيانات كتقرير داخل أداة ال ListView وهي تشبه كثيراً الأدوات المعروفة لعرض البيانات من قاعدة البيانات مثل أداة DataGrid وأداة MSFlexGrid ... الخ. وهي أكثر الخيارات المستخدمة من قبل المبرمجين كما في الصورة التالية ■ lvwSmallIcon : وهي لعرض أيقونات صغيرة داخل أداة ال ListView كما في الصورة التالية تصميم مثال ● سأبدأ الآن بمثال بسيط لا يعتمد على قاعدة البيانات تابع معي 1)أضف أداة ListView إلى الForm 2)اذهب إلى حدث Load لل Form واكتب الكود التالي , وهذا الكود كما شرحنا سابقاً لتحديد أسلوب العرض في أداة ال ListView . Private Sub Form_Load() ListView1.View = lvwReport End Sub 3)لنفترض أن نريد إضافة ثلاثة أعمدة داخل أداة ال ListView في هذه الحالة يجب إضافة عنوان رأسي لكل عمود وهذا يتم باستخدام خاصية ColumnHeaders لأداة ال ListView ◄ قبل إضافة العناوين الرأسية لأداة ال ListView سأشرح خاصية ColumnHeaders لهذه الخاصية خمس وظائف وهي كالتالي ♦ Add : وهي الوظيفة تستخدم لإضافة عنوان رأسي داخل أداة ال ListView ولهذه الخاصية ست باراميترات وهي كما يلي ListView1.ColumnHeaders.Add Index, Key, Text, Width, Alignment, Icon حيث ▪ Index : هي الفهرس لهذا العنوان الرأسي ▪ Key : المفتاح لهذا العنوان الرأسي ▪ Text: النص الذي سيظهر عليه وهو الباراميتير الوحيد الذي سأستخدمه في إضافة العناوين الرأسية ▪ Width: لتحديد عرض العنوان الرأسي ▪ Alignment : لتحديد اتجاه محاذاة النص على العنوان الرأسي ولهذه الخاصية ثلاثة قيم كما تلاحظ في البارميترات فالوظيفة Add للخاصية ListSubItems هي تقريبا نفسها البارميترات للوظيفة Add للخاصية ListItems ف ReportIcon هي نفسها SmallIcon والباراميتر ToolTipText فهو للنافذة الصغير المنبثقة عند وضع مؤشر الفأرة على ذلك العنصر. 7)نأتي الآن لنضيف بيانات داخل أداة ال ListView كما في الكود التالي ListView1.View = lvwReport ListView1.ColumnHeaders.Add , , "Name" ListView1.ColumnHeaders.Add , , "Number" ListView1.ColumnHeaders.Add , , "Address" Dim Lst As ListItem 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 يمكنك استخدامها أيضاً كما يلي ● 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 لترتيب العناصر بشكل أبجدي تنازلياً . برمجة مثال لربط ال ListView بقاعدة البيانات في البدء ننشئ قاعدة بيانات وننشئ داخلها جدول اسمه Table1 يحتوي أربع حقول وهي ID , Name , Number , Address ثم ضعها في مجلد المشروع . سنستخدم مكتبة Ado في ربط قاعدة البيانات اذهب إلى قائمة Project اختر Reference ثم اختر مكتبة Microsoft ActiveX Object كما في الصورة التالية سنعرف في الGeneral المتغيرين التاليين Dim RS As ADODB.RecordsetDim DB As ADODB.Connection حيث سنستخدم المتغير DB في الاتصال بقاعدة البيانات والمتغير RS في التعامل مع الجداول والحقول . في حدث ال Form_Load استخدم الكود التالي في قاعدة البيانات Set RS = New ADODB.Recordset DB.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path + "\Sniper.mdb" DB.CursorLocation = adUseClientSet DB = New ADODB.Connection ثم سنقوم بتحديد أسلوب العرض للبيانات وجعل شريط التحديد يحدد جميع العناصر في الصف كما في الكود التالي ListView1.FullRowSelect = TrueListView1.View = lvwReport ثم سنضيف ثلاثة عناوين رأسية كما يلي ListView1.ColumnHeaders.Add , , "Number" ListView1.ColumnHeaders.Add , , "Address"ListView1.ColumnHeaders.Add , , "Name" نعرف متغيّر من نوع ListItem كما يلي Dim Lst As ListItem If RS.State = adStateOpen Then RS.Close إغلاق المتغير RS إذا كان مفتوحاً RS.Open "Select * From Table1", DB, adOpenDynamic, adLockOptimistic جملة الاستعلام لجلب جميع البيانات الموجودة داخل ال Table1 Do While Not RS.EOF Set Lst = ListView1.ListItems.Add(, , RS!Name) Lst.ListSubItems.Add , , RS!Number Lst.ListSubItems.Add , , RS!Address RS.MoveNext Loop نستخدم هنا حلقة Do While .. Loop لملئ أداة ال ListView حتى نصل للسجل الأخير في قاعدة البيانات نسند المتغير Lst للوظيفة Add التي تضيف حقل Name في السجل لأداة الListView , ثم نستخدم المتغير Lst في إضافة العمود الثاني (Number) والعمود الثالث (Address) ننتقل إلى السجل التالي , ثم نستخدم Loop لإغلاق الحلقة. ويمكن الاستغناء عن الوظيفة Add للمتغير Lst واستخدام الوظيفة SubItems ليصبح الكود كما يلي Set Lst = ListView1.ListItems.Add(, , RS!Name) Lst.SubItems(1) = RS!Number Lst.SubItems(2) = RS!Address RS.MoveNext LoopDo While Not RS.EOF صورة المثال بعد التشغيل حمل المثال التوضيحي من هنا ملاحظات قد تهمك في حالة استخدام أداة ال ListView كأداة لعرض البيانات ● حذف العنصر المحدد يتم باستخدام الكود التالي ListView1.ListItems.Remove ListView1.SelectedItem.Index ● حذف جميع العناصر المحددة في أداة الListView عند تفعيل خاصية MultiSelect باستخدام الكود التالي 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 لأننا لو قمنا بحذف عنصر من بداية العناصر فإن جميع مواقع العناصر الأخر ستتغير . ● عرض بيانات الصف المحدد في أداة ال ListView كما في الكود التالي Private Sub ListView1_Click() Text1.Text = ListView1.SelectedItem.Text Text2.Text = ListView1.SelectedItem.SubItems(1) Text3.Text = ListView1.SelectedItem.SubItems(2) End Sub حيث استخدمنا هذا الكود في حدث ListView1_Click فيتم عرض العنصر الأول في أداة Text1 طبعاً لأول عنصر في الصف نستخدم خاصية Text وباقي العناصر في الصف نستخدم الخاصية SubItems . ● عمل AutoSize للأعمدة الموجود في أداة ال ListView : سنستخدم هنا دالة SendMessage وهي إحدى دوال ال Api سنكون هنا دالة بسيطة لاستخدامها في حالة كان لدينا أكثر من ListView كما يلي هذه هي دالة SendMessage وبعض ثوابتها 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 وهذه هي الدالة التي قمنا بتصميمها Public Function AutoSizeListView(xListView As ListView) Dim i As Integer For i = 0 To xListView.ColumnHeaders.Count - 1 SendMessage xListView.hWnd, LVM_SETCOLUMNWIDTH, i, LVSCW_AUTOSIZE_USEHEADER Next i End Function وفي حالة أردنا استخدام هذه الدالة نقوم فقط باستدعائها لأداة ال ListView التي نريد أن نعمل لها AutoSize . كما يلي AutoSizeListView ListView1 ثانياً : استخدام أداة ال ListView عندما تكون خاصية View = lvwIcon طبعاً عندما يكون أسلوب العرض lvwIcon فلن يختلف عن أسلوب العرض lvwReport من حيث إضافة العناصر لكن هنا لا يوجد أعمدة ولا ColumnHeaders (عنوانين رأسية) وهناك خصائص أخرى لا نستخدمها في هذه الحالة وسيكون شكل ال ListView كما في الشكل التالي لكن في هذه الحالة سنستخدم الباراميتر Key للوظيفة Add لنتمكن من التعامل بسهولة مع كل عنصر. سنضيف 5 عناصر كما في الصورة السابقة , سنبدأ الآن في برمجة المثال سنحتاج في هذا المثال أداة ImageList تحتوي على بعض الصور كما في الصورة التالية في حدث Form_Load الكود التالي ListView1.View = lvwIcon لتحديد أسلوب عرض الأداة وهو lvwIcon ListView1.Icons = ImageList1 لتحديد مصدر الإيقونات التي سيتم استخدامها في الListView ثم الكود التالي For i = 1 To 5 ListView1.ListItems.Add , "M" & i, "Sniper" & i, i Next iDim i As Integer قمنا بتعرف المتغير i لاستخدامه في حلقة For .. Next ثم قمنا بتحديد عدد دورات الحلقة For .. Next وهي من 1 إلى 5 ثم سيتم إضافة عنصر في دورة كما هو ملاحظ من الكود حيث سيكون ال Key للعنصر الأول هو M1 العنصر الثاني هو M2 ... وهكذا . مع ملاحظ أن ال Key لا يجب أن يتكرر عند إضافة العناصر , وبالنسبة لباراميتر الأيقونة يتم تحديده بكتابة رقم ال Index للصورة المراد إضافتها للعنصر المضاف مع ملاحظ أن الباراميترالذي يتم إضافة رقم ال Index هو الباراميتر Icon وليس الباراميتر SmallIcon . ثم قمنا بإغلاق حلقة Next . إذن الكود النهائي سيكون كما يلي 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 End SubPrivate Sub Form_Load() الآن انتهينا من تصميم المثال .. طيب السؤال الآن كيف سنقوم بربط كل أيقونة بكود معيّن عن النقر DblClick مثلاً ؟ .. الجواب طبعاً باستخدام ال Key لكل عنصر .. تابع معي .. سنقوم باستخدام جملة Select Case في حدث ListView1_DblClick كما في الكود التالي Select Case ListView1.SelectedItem.Key Case "M1" Form2.Show Case "M2" Form3.Show Case "M3" MsgBox "Programmed By Sniper.ps" Case "M4" MsgBox "www.vb4arab.com" Case "M5" End End Select End SubPrivate Sub ListView1_DblClick() حيث في هذا الكود نستخدم جملة بناء على قيمة الKey للعنصر المحدد لذلك استخدمنا الخاصية SelectedItem ثم قلنا أنه في حالة كان ال Key للعنصر قيمته هي M1 فسيتم إظهار الForm2 وبنفس الطريقة لجميع العناصر. حمل المثال التوضيحي من هنا ثالثاً : استخدام أداة ال ListView عندما تكون خاصية View = lvwSmallIcon و lvwList في هاتين الحالتين لن تختلفا عن الحالة lvwIcon إلا في نمط عرض الأيقونات حيث في حالة lvwSmallIcon ستظهر الإيقونات كما في الصورة التالية وفي حالة lvwList ستظهر الإيقونات كما في الصورة التالية حمل المثال التوضيحي من هنا أسأل الله العظيم أن أكون قد وفقت في الشرح تحياتي للجميع
  15. بسم الله الرحمن الرحيم تعلم كيف تصنع أداة ال ActiveX بنفسك من الألف إلى الياء قبل البدأ في الدرس أو أن ألفت إنتباهكم بأن هذا المقال من إعدادي وتأليفي بحمد الله وفضله عليّ بعد أن بدأت في برمجة الأدوات أقدم لكم هذا الدرس أتمنى أن ينال إعجابكم في هذا الدرس سأقوم بشرح كيفية تصميم Text خاص بك وإضافة العديد من المزايا له. في البداية ما هي ال ActiveX بكل بساطة هي عبارة عن أداة مثل الأدوات القياسية في الفيجوال بيسك كمربع النص و زر الأمر ..إلخ, يقوم المبرمج ببرمجتها لتلبّي احتياجاته البرمجية. لنبدأ الآن في الدرس افتح مشروع جديد StanderdExE كما في الصورة التالية بعد فتح مشروعك قم بإضافة مشروع آخر من نوع ActiveX Control كما في الصورة التالي الهدف من إنشاء مشروعين هو 1)القدرة على تجربة الأداة أثناء التصميم 2)لتتمكن من تحويل الأداة الى ملف OCX بعد إضافتك للمشروعين إضغط DblClick على الأداة الموجودة في الصورة التالية ستظهر لك الأداة كما في الصورة التالية يمكنك ضبط اسم الأداة من نافذة الخصائص فلنقم بتسميتها فرضاً باسم MyText كما في الصورة التالية هناك العديد من الخصائص لأداة الUserControl ما يهمنا هي الخصائص التالية: InvisibleAtRuntime : لرؤية أو عدم رؤية الأداة أثناء زمن التنفيذ PropertyPages : وهي لاختيار صفحات ال PropertyPages التي سأتحدث عنها لاحقاً ToolBoxBitmap : وهي للإيقونة التي تظهر في صندوق الأدوات نعود الآن للأداة ضع أداة Text على أداة الUserControl كما في الصورة التالية قم بتسميتها بإسم TxT اضبط خاصية وقم بإعادة تسمية أدوات ال ComboBox كما يلي Combo1 : xSelectCase Combo2 : xInputType Combo3: xAlignment Combo4 : xScrollBars ورتب الأدوات على ال PropertyPage لتصبح كما في الصورة التالية أهم خصائص وأحداث PropertyPage خاصية Changed (قيمة منطقية) ووظيفتها تحديد إذا ما أراد المستخدم تغيير الخاصية من خلال ال PropertyPage أم لا حدث ApplyChanges ويتم تشغيل هذا الحدث عندما ينقر المستخدم على زر موافق أو بتبديل علامات التبويب في PropertyPage التي تتألف من عدة صفحات حيث أن هذا الحدث يقوم بإعطاء خصائص ال Text قيمها من القيم الموجودة في الPropertyPage حدث SelectionChanged ويتم تشغيل هذا الحدث عند النقر على خانة Custom حيث يتم إعطاء الأداة المربوطة بخاصية معينة قيمتها من تلك الخاصية حدث Initialize وهو يعمل عند تشغيل الPropertyPage فمثلا سنستخدمه لملئ صناديق الComboBox بالخيارات كما في الكود التالي xSelectCase.AddItem "MixedCase" xSelectCase.AddItem "LowerCase" xSelectCase.AddItem "UpperCase" xInputType.AddItem "AlfaNum" xInputType.AddItem "Alfa" xInputType.AddItem "Num" xAlignment.AddItem "Alignleft" xAlignment.AddItem "AlignRight" xAlignment.AddItem "AlignCenter" xScrollBars.AddItem "None" xScrollBars.AddItem "Horiziontal" xScrollBars.AddItem "Vertical" xScrollBars.AddItem "Both" End SubPrivate Sub PropertyPage_Initialize() لنبدأ الآن ببرمجة ال PropertyPage فمثلا لتبديل خاصية SelectCase نضغط DblClick على الCombo الخاص بهذه الخاصية ولأننا نريد تغيير الخاصية من خلال ال PropertyPage فإننا نضع قيمة الخاصية Changed = True في حدث Click للأداة فيصبح الكود كالتالي Changed = True End SubPrivate Sub xSelectCase_Click() ولإعطاء قيمة ال Combo للخاصية المرتبط بها نضع الكود التالي في حدث ApplyChanges كما يلي SelectedControls(0).SelectCase = xSelectCase.ListIndex End SubPrivate Sub PropertyPage_ApplyChanges() ولإعطاء ال ComboBox قيمته من الخاصية الخاصة به عند فتح ال PropertyPage نضع الكود التالي في حدث SelectionChanged كما يلي xSelectCase.ListIndex = SelectedControls(0).SelectCase End SubPrivate Sub PropertyPage_SelectionChanged() وباقي الأدوات بنفس الطريقة كما يلي Changed = True End Sub Private Sub Check2_Click() Changed = True End Sub Private Sub Check3_Click() Changed = True End Sub Private Sub Check4_Click() Changed = True End Sub Private Sub xAlignment_Click() Changed = True End Sub Private Sub xInputType_Click() Changed = True End Sub Private Sub xScrollBars_Click() Changed = True End Sub Private Sub xSelectCase_Click() Changed = True End SubPrivate Sub Check1_Click() لكن يبقى كيفية تغيير اللون الطريقة كالتالي بإظهار شاشة إنتقاء اللون من خلال أداة الCommonDialog فتأخذ أداة ال PictureBox اللون من أداة الCommonDialog ونقوم بإعطاء الخاصية التي نريد تغييرها كما يلي نضع في زر الأمر الكود التالي CD.ShowColor Pic1.BackColor = CD.Color ActiveBackGround = CD.Color Changed = True End SubPrivate Sub Command1_Click() وفي حدث ApplyChanges كالتالي SelectedControls(0).ActiveBackGround = Pic1.BackColor End SubPrivate Sub PropertyPage_ApplyChanges() وفي حدث SelectionChanged كالتالي Pic1.BackColor = SelectedControls(0).ActiveBackGround End SubPrivate Sub PropertyPage_SelectionChanged() وبالنهاية يصبح حدث ApplyChanges كالتالي SelectedControls(0).ActiveBackGround = Pic1.BackColor SelectedControls(0).ActiveForeGround = Pic2.BackColor SelectedControls(0).ActiveFrame = Pic3.BackColor SelectedControls(0).InactiveBackGround = Pic4.BackColor SelectedControls(0).InactiveForeGround = Pic5.BackColor SelectedControls(0).InactiveFrame = Pic6.BackColor SelectedControls(0).UseSpace = IIf(Check1.Value = 1, True, False) SelectedControls(0).Enabled = IIf(Check3.Value = 1, True, False) SelectedControls(0).Locked = IIf(Check4.Value = 1, True, False) SelectedControls(0).SelectCase = xSelectCase.ListIndex SelectedControls(0).InputType = xInputType.ListIndex SelectedControls(0).Alignment = xAlignment.ListIndex SelectedControls(0).ScrollBars = xScrollBars.ListIndex End SubPrivate Sub PropertyPage_ApplyChanges() وحدث SelectionChanged كالتالي Pic1.BackColor = SelectedControls(0).ActiveBackGround Pic2.BackColor = SelectedControls(0).ActiveForeGround Pic3.BackColor = SelectedControls(0).ActiveFrame Pic4.BackColor = SelectedControls(0).InactiveBackGround Pic5.BackColor = SelectedControls(0).InactiveForeGround Pic6.BackColor = SelectedControls(0).InactiveFrame Check1.Value = IIf(SelectedControls(0).UseSpace = True, 1, 0) Check3.Value = IIf(SelectedControls(0).Enabled = True, 1, 0) Check4.Value = IIf(SelectedControls(0).Locked = True, 1, 0) xSelectCase.ListIndex = SelectedControls(0).SelectCase xInputType.ListIndex = SelectedControls(0).InputType xAlignment.ListIndex = SelectedControls(0).Alignment xScrollBars.ListIndex = SelectedControls(0).ScrollBars End SubPrivate Sub PropertyPage_SelectionChanged() الآن بقيت خطوة بسيطة لكيفية ربط ال PropertyPage بال UserControl إذهب ال خصائص ال UserControl واختر خاصية PropertyPages اضغط عليها ستظهر لك نافذة كما في الصورة التالية كما في الصورة ثم القائمة الموجودة في الصفحة هي مجموعة من PropertyPages القياسية التي تأتي مع برنامج الفيجوال بيسك بالإضافة الى الصفحة التي صممناها بإسم Setting ما يلزمنا هي الصفحة التي صممناها وصفحة تغيير الخط واضغط OK ملاحظة :يمكنك تغيير عرض الصفحات من حيث الصفحة التي ستظهر في البداية من خلال الأسهم اللتي تظهر في الصورة السابقة والخطوة الأخيرة هي تحويل أداة ال UserControl إلى أداة OCX يمكن استخدامها في أي برنامج والمسألة بسيطة حدد المشروع الظاهر في الصورة واذهب الى قائمة File واختر الخيار الظاهر في الصورة ثم حمل المثال النهائي من هنا أرجو أن أكون قد وفقت في الشرح تحياتي لكم جميعاً