تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
إنشاء مكتبة تضيف وظائف جديدة للتحكمات الموجودة
#1
كاتب الموضوع : samerselo

- أنشئ مشروعا جديدا من النوع Windows Forms Application كي نقوم بالعمل عليه
- من قائمة File ومن القائمة الفرعية ADD أضف مشروعا جديدا للمشروع الحالي من النوع Class Library وقم بتسميته TestExtendingLib
في ملف الكود الخاص بالمكتبة أضف في بدايته المراجع التالية الضرورية لعمل مثالنا هنا بعد التأكد من أنك قد أضفت المراجع المناسبة لها من صفحة References من خصائص My Project

كود :
Imports System.Runtime.CompilerServices
Imports System.Math
Imports System.Drawing
Imports System.Windows.Forms
- استبدل التعريف

كود :
Public Class Class1

End Class
بالتعريف

كود :
Public Module TestExtending

End Module
- انتهت عملية التهيئة الآن وأصبحنا جاهزين لإضافة توسعاتنا

- سأبدا بإضافة الوظيفة Alert لصندوق النصوص التي ستحول لون الخلفية له إلى الأحمر والكتابة إلى الأصفر عند استدعائها - داخل تعريف الـ Module السابق أدخل الكود التالي

كود :
<Extension()> _
Sub Alert(ByVal TxtBx As TextBox)
TxtBx.Font = New Font(TxtBx.Font, FontStyle.Bold)
TxtBx.ForeColor = Color.Yellow
TxtBx.BackColor = Color.Red
End Sub
- وسنضيف وظيفة أخرى لتوسيع النوع String بحيث تحول القيمة الموجودة في السلسلة النصية إلى Double ثم تضربها بالعدد الممرر وتعيد الناتج

كود :
<Extension()> _
Function Multiply(ByVal InString As String, _
ByVal Multply As Double) As Double

Return CDbl(InString) * Multply
End Function
- قم بعمل Build للمكتبة TestExtending
- من أجل التجربة انقر بزر الفأرة اليميني على تطبيق ويندوز الذي أنشأناه في البداية ثم اضغط Add Reference وأضف مرجعا للمكتبة التي أنشأناه للتو ثم أضف الاستيراد التالي في بداية كود النموذج

كود :
Imports TestExtendingLib.TestExtending
- أضف TextBox و Button و ListBox للنموذج ثم انقر نقرا مزدوجا على الزر لإنشاء حدث النقر عليه ثم أدخل الكود التالي لاختبار الوظيفتين اللتان أضفناهما سابقا

كود :
Me.TextBox1.Text = "123.456"
Me.TextBox1.Alert()
Dim s As String = Me.TextBox1.Text
MsgBox(s.Multiply(13))
شغل البرنامج واضغط على الزر وانظر النتيجة
}}}
تم الشكر بواسطة:
#2
- كما ترى أضفنا لصندوق النصوص وظيفة جديدة لم تكن موجودة سابقا تسمى Alert يمكننا الاستفادة منها وتطبيقها على أي صندوق نصوص في أي مشروع نريده فقط بإضافة المكتبة والاستيراد المناسب كما رأينا سابقا كما أضفنا أيضا الوظيفة Multiply لنوع البيانات String ويمكن استخدامه أيضا في أي مشروع بنفس الطريقة

- يمكننا أيضا إضافة وظيفة لـ ListBox لتفريغها وملئها ببعض البيانات مثلا بنفس الطريقة حيث يمكنك إضافة الكود التالي للمكتبة ثم عمل ReBuild لها وتجربة كيف أن صندوق القائمة أصبح يمتلك الوظيفة الجديدة

كود :
<Extension()> _
Sub ClearAndFillComputerCorp(ByVal LstBx As ListBox)
LstBx.Items.Clear()

LstBx.Items.Add("Micrsoft")
LstBx.Items.Add("Sun")
LstBx.Items.Add("Intel")
LstBx.Items.Add("IBM")
LstBx.Items.Add("Borland")
LstBx.Items.Add("CyberLink")
LstBx.Items.Add("Nvidia")
LstBx.Items.Add("Gigabyte")
LstBx.Items.Add("MSI")
End Sub
- كما يمكننا أيضا إضافة وظيفة للتحكم Button تغير من مظهره بنفس الطريقة

كود :
<Extension()> _
Sub YellowOnDarkBlue(ByVal Btn As Button)
Btn.Font = New Font(Btn.Font, FontStyle.Bold)
Btn.ForeColor = Color.Yellow
Btn.BackColor = Color.DarkBlue
End Sub
- الآن أي وظائف متكررة تستخدمها يمكنك إضافتها للتحكمات أو الفئات الموجودة وأصبحت وكأنه وظائف أساسية وذلك بإنشاء المكتبة الخاصة بك واستيرادها للمشروع
}}}
تم الشكر بواسطة:
#3
المثال العملي على الموضوع في المرفقات


الملفات المرفقة
.zip   textextending.zip (الحجم : 54.82 ك ب / التحميلات : 60)
}}}
تم الشكر بواسطة:
#4
تعديل بسيط أخير - غير موجود في المثال في رابط التحميل

- في ملف الكود الخاص بالمكتبة TestExtendingLib فقط قم باستبدال السطر التالي في بداية الملف

كود :
Public Module TestExtending
بالسطر

كود :
<Global.Microsoft.VisualBasic.HideModuleName()> _
Public Module TestExtending
وبذلك عند استخدام المكتبة يمكنك أن تستبدل سطر الاستيراد التالي

كود :
Imports TestExtendingLib.TestExtending
بسطر الاستيراد التالي

كود :
Imports TestExtendingLib
وشرح التعديل هو بما أن كودنا في المكتبة ضمن Module ويمكننا استخدام الدالات الموجودة في الـ Module باسمها فقط لذا أضفنا الواصفة HideModuleName التي تسبب إخفاء اسم الـ Module وبالتالي اختصار الاستيراد عند استدعاء المكتبة


طبعا بعد التعديل لاتنس عمل Rebuild للمكتبة حتى تسري التعديلات الجديدة
}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  طريقة إنشاء برنامج طباعة ملصقات الباركود ملهمـ 1 4,397 22-12-21, 05:09 PM
آخر رد: alessam4pro
Lightbulb [مقال] التعامل مع ملفات اوفيس من خلال مكتبة NPOI ابو ليلى 2 4,190 01-07-21, 11:42 AM
آخر رد: kebboud
  [مشروع] مكتبة برمجية بلغة الفيجوال بيسك aljzazy 4 3,769 23-05-20, 02:12 PM
آخر رد: asemshahen5
Exclamation [VB.NET] شرح مكتبة style devexpress لتجميل المشاريع mgr21002100 4 4,904 22-08-19, 03:21 PM
آخر رد: mgr21002100
  طريقة استخدام مكتبة internet download manager في برنامجك kslawy 3 5,360 30-07-19, 07:06 AM
آخر رد: سعود
  مقال: الكومبو بوكس ComboBox كيف تضيف أيقونات Blue Sky 1 3,158 30-06-19, 10:41 AM
آخر رد: invocker
  مكتبة صور وايقونات DevExpress الرائعة لتجميل مشروعك Code Master 7 4,305 07-06-19, 11:36 AM
آخر رد: سعود
  دورة إنشاء برنامج مبيعات متكامل ملهمـ 1 2,720 02-05-18, 12:04 AM
آخر رد: عبد العزيز البسكري
Question [مثال] كيف تضيف اكثر من لغة الى برنامجك HASAN6.0 3 3,326 26-11-15, 11:20 PM
آخر رد: hamada558
  [كود] كيف نتأكد من أن البكسل الموجودة في الصورة تدعم الشفافية silverlight 1 2,605 02-06-15, 03:43 PM
آخر رد: abulayth

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


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