قواعد المشاركة في المنتدى

(منتدى الأكسس) الموضوع:الحاق نتيجة استعلام فى جدول بواسطة: (startnet) :: (منتدى الأكسس) الموضوع:استيراد عده اوارق اكسل في جدول واحد بواسطة: (startnet) :: (منتدى الأكسس) الموضوع:فيديو للشروحات والدروس من عمل الاعضاء بواسطة: (startnet) :: (قسم الاعلانات) الموضوع:مزاد سعودي يحتوي على مزاد السيارات و العقار و الأجهزة ولوحات مميزه وارقام مميزه بواسطة: (اسامة الاحمر) :: (منتدى الأكسس) الموضوع:من أدخل السجل وقام بالتعديل عليه بواسطة: (أيمن غراوي) :: (منتدى الأكسس) الموضوع:اضافة سجل جديد في النموذج المخفي بواسطة: (د.كاف يار) :: (منتدى Microsoft Excel) الموضوع:شيت كنترول ابتدائي 2018 تصميم عبد الحميد شقير بواسطة: (shokeir) :: (منتدى الأكسس) الموضوع:مساعدة بتنفيذ فكرة لترحيل دين شهريا بواسطة: (د.كاف يار) :: (قسم الاعلانات) الموضوع:شركة نقل اثاث بالرياض بواسطة: (سمسم جمال) :: (منتدى مبرمجي Microsoft Visual C#.NET) الموضوع:كيف تستخدم حلقة foreach واحدة للحصول على قيم من مجموعتين مختلفتين بواسطة: (عبد الكريم كنعان) :: (قسم الاعلانات) الموضوع:احصل على قنوات تلفزيونية مجانية بواسطة: (اسامة الاحمر) :: (قسم الاعلانات) الموضوع:تملك شقتك الان في مشروع الجادة بالشارقة بواسطة: (اسامة الاحمر) :: (أخبار التكنولوجيا) الموضوع:خصومات الان من خدمة عملاء كاريير بواسطة: (ليان عمر) :: (قسم الاعلانات) الموضوع:موقع اعلانات تاسكي رويال بواسطة: (اسامة الاحمر) :: (قسم الاعلانات) الموضوع:مطلوب فنيين تركيب كاميرات مراقبة وأنظمة أنذار حريق بواسطة: (royal sara) :: (منتدى الأكسس) الموضوع:مساعد عاجله لطريقة حل مشكلة الفرغات بالتقرير بواسطة: (STAR5000) :: (قسم الاعلانات) الموضوع:بدون تعقيدات تستلم خادمتك و سائقك بواسطة: (ايوان للاستقدام) :: (منتدى الأكسس) الموضوع:اخفاء حقول عند شرط بواسطة: (اواب) :: (قسم الاعلانات) الموضوع:ابطال السحرالشيخ سامح الكيشاني بواسطة: (اسامة الاحمر) :: (منتدى الأكسس) الموضوع:التفعيل بواسطة: (.husein)


راديو القرآن

المواضيع المثبته: (منتدى الدعم الفني للماسنجر المحيط العربي) الموضوع:مشاكل ماسنجر المحيط العربي بواسطة: (jbsa) :: (منتدى مبرمجي Microsoft Visual VB.NET) الموضوع:دورة في LINQ To DataSet بواسطة: (jbsa) :: (منتدى أجاكس(Asynchronous JavaScript and XML)) الموضوع:البدء مع ASP.NET AJAX بواسطة: (يوسف جميل جادالله) :: (منتدى البرامج) الموضوع:7 اسطوانات لتعليم شهاده ICDL بالصوت والصوره بواسطة: (مستشفى الكمبيوتر) :: (قسم الدعم الفني) الموضوع:هل تريد التحكم بجهازك كأنك محترف بواسطة: (ياسر جمال) :: (منتدى برمجة التقارير) الموضوع:اصنع تقريرك في اقل من دقيقه واستغني عن الكريستال ريبورت بواسطة: (mero_make) :: (منتدى Microsoft SQL Server) الموضوع:مراحل تصميم قاعدة بيانات ناجحة بواسطة: (m.atassi) :: (القسم المفتوح) الموضوع:لقاء صحفى بواسطة: (ramies) :: (منتدى ADO.NET العام) الموضوع:شرح ado.net بواسطة: (شهرزاد) :: (منتدى مبرمجي Microsoft Visual C#.NET) الموضوع:مكتبة الأمثلة والتطبيقات للغة #C بواسطة: (النور) :: (Oracle قسم قواعد البيانات أوراكل) الموضوع:كتب اوراكل (عربي) ...حمل... بواسطة: (عبد الرحمن) :: (منتدى مبرمجي ASP) الموضوع:برنامج مكتبة إلكترونية بواسطة: (عبدالله جابر شقليه) :: (منتدى Microsoft SQL Server) الموضوع:SQL SERVER vs ORACLE بواسطة: (m.atassi) :: (منتدى Microsoft Excel) الموضوع:شرح دوال الاكسيل كلِ على حده بواسطة: (ramies) :: (قسم التعاميم والشكاوي) الموضوع:هنيئا للشعب المصري بواسطة: (صهيب جاويش) :: (Oracle قسم قواعد البيانات أوراكل) الموضوع:تعرف على تقنية Oracle APEX بواسطة: (وليد القدسي) :: (منتدى Microsoft SQL Server) الموضوع:كتب SQL server بواسطة: (m.atassi) :: (قسم التعاميم والشكاوي) الموضوع:شروط المشاركة في المنتدى بواسطة: (عبدالله جابر شقليه) :: (منتدى Microsoft SQL Server) الموضوع:يومياً أسئلة sql server مجاناً بواسطة: (m.atassi) :: (قسم البرامج الجاهزة و الاكواد) الموضوع:مشروع طبيب الاسنان مع السورس كود بواسطة: (ITPROGRAMMER)

عدد الصفحات : 2  1  2   > » إضافة رد إضافة موضوع جديد

> الأوامر الجديدة والقديمه في Visual Basic 2005, 2008,تعلم طريقة الاستخدام بالتفصيل
Bookmark and Share
تقييم الموضوع Label معدل التقيم:0
مشاركةالاثنين,04/ربيع الثاني/1430 هـ,09:13 صباحاً
المشاركة #1

خبيرتحليل نظم و دوت نت
الرتبة في المنتدى:عماد

أيقونة المجموعة

المجموعة: مشرفي الموقع
المشاركات: 3849
سجل في:الأحد,17/محرم/1428 هـ,05:57 صباحاً
الدولة:الأردن
رقم العضوية: 19244





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

دورة في الأوامر الجديدة والقديمه في

Visual Basic 2005, 2008




1- Extension Methods vb 2008
2- If Operator vb 2008
3- Local Type Inference vb 2008
4- Func vb 2008 , Action vb 2005, 2008
5- Partial Methods vb 2005, 2008
6- DateTimePicker - For Time vb 2005, 2008
7- DataRepeater vb 2005, 2008
8- Nullable Value Types vb 2005,2008
9- PrintForm Component vb 2005,2008
10- Printer Compatibility Library vb 2005,2008



سأقوم باذن الله بشرح عشرة أوامر وأدوات الثلاث الاولى منها تعمل فقط في vb 2008 والباقي يعمل في vb 2005, 2008

حيث انها قليلة الاستخدام ولكنها تحتوي على الكثير من القوة في البرمجة والاستفادة من اختصار الاجراءات.



1- Extension Methods vb2008



وهي طريقة إضافة (توسع ، امتداد ، تغيير) وظائف وأوامر إلى أنواع البيانات وال Control المعرفة أصلا في Vb.Net دون اشتقاق Without Creating A New Derived Type وممكن أن تكون إجراء Sub أو function.

وبهذه الطريقة نستطيع إضافة أوامر جديدة للأنواع أو الأدوات الموجودة ويمكن أن نقوم بكتابتها في Sub أو في Function وممكن أن تكون خاصية property معينة أو حقل field أو حدث event .


الشروط الواجب إتباعها :

1- يجب عمل Imports System.Runtime.CompilerServices
2- يجب أن تكتب في Module
3- يجب أن تبدأ <Extension()>
4- المتغير الأول فيها هو النوع الذي سنقوم بعملية التوسيع له .

الأنواع التي ممكن عمل عليها توسع Extended

جميع الأنواع المعرفة في Vb بالإضافة إلى الأنواع التالية :

• Classes (reference types)
• Structures (value types)
• Interfaces
• Delegates
• ByRef and ByVal arguments
• Generic method parameters
• Arrays



ولان المتغير الأول فيها هو الذي يحدد إلى أي نوع سيضاف هذا التوسع فلا يمكن أن يكون اختياري Optional أو ParamArray

ونبدأ بوضع بعض الأمثلة التي توضع هذه الطريقة .

مثلا لو أردنا إضافة أمر Print إلى أي متغير من نوع String حيث يقوم بإظهاره في Msgbox.

 كود
Imports System.Runtime.CompilerServices
Module ExtendedModule

<Extension()> _
Public Sub Print(ByVal aString As String)
MsgBox(aString)
End Sub

End Module


فعند وضع هذا التوسع في ال Module مباشرة سيضاف إلى خصائص أي متغير من نوع String وطريقة استعمال هذا الوسع نقوم بعمل التالي :
نعرف متغير من نوع String

Dim example As String = "My Name Is Jbsa"



نقوم بتنفيذ أمر التوسع

example.Print()


سيقوم باظهار Msgbox فيها My Name Is Jbsa

وهنا الفت انتباهكم بان هذا التوسع أضيف أيضا إلى أي أمر ينفذ على نوع string بدون arguments يعني
لو قمت بتنفيذ أمر example.ToLower() فهنا لن يعطيني أي شيء.
إما لو أردت أن أظهرها في msgbox فهنا أمر التوسع أضيف إلى جميع الأوامر التي لا يوجد بها arguments

example.ToLower.Print()


فهنا يظهر msgbox فيها my name is jbsa

ماذا لو أردنا أن يقوم بطباعة محتويات أي نوع String برمز تنصيص معين

فهنا أقوم بإضافة هذه الإجراء إلى نفس ال Module

 كود
<Extension()> _
Public Sub PrintPunctuated(ByVal aString As String, _
ByVal punct As String)
MsgBox(punct & aString & punct)
End Sub

وهنا لطباعته أنفذ الجملة التالية

example.PrintPunctuated("#")


وسيظهر msgbox فيها #My Name Is Jbsa#

example.PrintPunctuated(" ' ")


وسيظهر msgbox فيها ' My Name Is Jbsa '
وفي هذه الحالة تبقى محتويات المتغير example هي نفسها ولا يضيف إليها الإشارات .

ونستطيع دمج طريقة Print وطريقة PrintPunctuated في توسع واحد وهنا نعرف متغير إشارة التنصيص بـ Optional وبهذا فإذا وضعنا إشارة يطبع الإشارة والنص وإذا لا يطبع النص فقط.
 كود
<Extension()> _
Public Sub Print (ByVal aString As String, Optional ByVal punct As String = "")

MsgBox(punct & aString & punct)

End Sub

فهنا قمت بتحديد انه إذا لم توجد قيمة للمتغير punct فان قيمته Nothing "" وننفذ هذا الإجراء

example.Print()


سيقوم بإظهار Msgbox فيها My Name Is Jbsa

example.Print(" = ")


سيقوم بإظهار Msgbox فيها = My Name Is Jbsa =


ماذا لو أردنا أن نقوم بالتغيير في محتويات أي نوع String فهنا أقوم بإضافة هذه الإجراء إلى نفس ال Module

 كود
<Extension()> _
Public Sub AddPunctuated(ByRef aString As String, _
ByVal punct As String)
aString = punct & aString & punct
End Sub

وفي هذه الحالة اقوم بتعريف المتغير string بطريقة ByRef حتى استطيع اجراء التغيير في محتوياتة

example.AddPunctuated("=")


فهنا اريد ان اضيف للنص اشارة = في بدايته ونهايته وهنا لا يقوم بإعطائي أي نتيجة فقط قام بتغيير محتويات المتغير example ولرؤية ذلك أقوم بإظهارها في msgbox أو بأمر Print

Msgbox(example) او example.Print()


وسيظهر msgbox فيها =My Name Is Jbsa=


ونضع مثال أخر هنا على Class فمثلا نعرف Class يحتوي على متغير من نوع Integer ويقوم بإظهاره في Msgbox وبعدها نقوم بعمل التوسع عليه

 كود
Public Class ExamClass

Public Sub ExamMethod(ByVal m As Integer)
MsgBox(m & " Instance method")
End Sub

End Class

ويطلق على الاسم الأصلي الذي قمنا بتعريفة في ال Class طريقة Instance Method أي أنها الأصلية وهي التي نريد إجراء التوسع عليها ويطلق عليها اسم Extension Methods

ولتنفيذ الإجراء
 كود
Dim exm As New ExamClass
Dim arg1 As Integer = 5
exm.ExamMethod(arg1)

وسيظهر msgbox فيها رقم 5 Instance method أي انه ينفذ الإجراء الأصلي

وألان ماذا لو أردنا أن نقوم بعمل توسع لل ExamClass ليشمل الأرقام من نوع Longونقوم بإضافة التوسع إلى Module واعطائه نفس اسم Subفي ال Class
 كود
<Extension()> _
Public Sub ExamMethod(ByVal ec As ExamClass, _
ByVal n As Long)
MsgBox(n & " Extension method")
End Sub

وهنا حدد المتغير الأول وهو من نوع ExamClass الذي ارغب بإضافة توسع علية ولكن حددت الرقم من نوع Long

ولتنفيذ الإجراء

 كود
Dim arg2 As Long = 10
exm.ExamMethod(arg2)
.
وسيظهر msgbox فيها رقم 10 Extension method أي انه ينفذ الإجراء الموسع

أي انه في حالة وضع رقم integer فإنه ينفذ الإجراء الأصلي وفي حالة وضعنا رقم Long ينفذ الإجراء الذي وضعناه في Extension .


مثال في التوسع على Control مثلا textbox ماذا لو نرغب بإضافة توسع أمر مثلا لنسميه Msg ليقوم بإظهار محتويات أي textbox.text في msgbox .
وإضافة توسع لأمر ToDate مثلا لتحويل أي textbox.text إلى تاريخ.


نضع إجراء التوسع التالي في Module
 كود
<Extension()> _
Public Sub Msg(ByVal Tx As TextBox)
MsgBox(Tx.Text)
End Sub

وبما أن التوسع يأخذ نوع المتغير الأول وهو Textbox فان هذا التوسع سيضاف إلى أي Textbox في البرنامج.

ولتنفيذه نضع الأمر TextBox1.Msg()

ولتحويل محتويات textbox.text إلى تاريخ نضيف التوسع التالي إلى Module

 كود
<Extension()> _
Public Function ToDate(ByVal Tx As TextBox)
Dim Td As DateTime
If DateTime.TryParse(Tx.Text, Td) Then
Return Td
Else
Return Nothing
End If
End Function

وهنا لا نحدد نوع ال Function حتى نستطيع إرجاع قيمة Nothing فإذا كان Textbox.Text قابلة للتحويل إلى تاريخ فانه يرجع نوع ال Function تاريخ أما إذا كان Textbox.Text غير قابل للتحويل إلى تاريخ فانه يرجع نوع ال Function Object وتكون قيمته Nothing

ولتنفيذ هذا التوسع
 كود
If Not TextBox1.ToDate() Is Nothing Then
Dim dd As DateTime = TextBox1.ToDate()
MsgBox(dd)
Else
MsgBox("Not Valid Date")
End If

أولا نقوم بفحص القيمة الراجعة فإذا لم تكن Nothing هذا يعني أنها تحتوي على تاريخ فنقوم بتعريف متغير من نوع DateTime ونسند له قيمة TextBox1.ToDate()حتى نتأكد انه يرجع لنا تاريخ أما لو أن القيمة الراجعة Nothing فيظهر لنا Msg = Not Valid Date

ملاحظة :
إذا أردت أن اقوم بعمل component (.NET assemply) خاص يحتوي على جميع التوسعات Extension التي ارغب بها واستعملها في برامجي الأخرى وأقوم بتحويل هذه التوسعات إلى ملف Dll ((.NET assemply اقوم باستيراده عن طريق Add Referance وعمل Imports له فهنا يجب تعريف هذا ال Module بنوع Public Module واضع اسم ال Module الذي ارغب به .
مثلا Public Module MyModule1.



مثال اخر وهو اضافة تدقيق املائي لاي نوع string وتصحيحه

سواء كان باللغة العربية او الانجليزية أو

حسب اللغة التي موجود عندك في Ms Word.



اولا يجب عمل Imports Microsoft.Office.Interop

ثم عمل function التدقيق
 كود
<Extension()> _
Function SpellCheck(ByRef Txt As String) As String
Try
Dim strText As String = Txt
Dim mWordApp As Word.Application
Dim objWordDoc As Word.Document

mWordApp = New Word.Application

With mWordApp
.Visible = False

objWordDoc = .Documents.Add()
objWordDoc.Select()
.Selection.Text = strText


objWordDoc.CheckSpelling()

strText = .Selection.Text
strText = .CleanString(strText)

objWordDoc.Close(SaveChanges:=False)
.Quit()

' Word add's a trailing vbcr(13).
Dim chars() As Char = {CType(vbCr, Char), CType(vbLf, Char)}
strText = strText.Trim(chars)

If strText.Trim.Length > 0 Then
strText = strText.Replace(vbLf, "")
strText = strText.Replace(vbCr, vbCrLf)
End If
Txt = strText
End With

objWordDoc = Nothing
mWordApp = Nothing
Return Txt
Catch ex As System.Exception
MsgBox(ex.Message)
End Try
Return Nothing
End Function


وهو يقوم بعمل فتح ملف word وارسال النص له ثم نقوم بتشغيل المدقق الاملائي لل word في هذه الجملة objWordDoc.CheckSpelling وسيتم تصحيح الاخطاء حسب ما تم اختيارة.

ولتنفيذ هذا الاجراء
 كود
TextBox2.Text.SpellCheck()
Dim st As String = "الى من يهمه الامر"
MsgBox(st.SpellCheck)


هنا سيقوم بتدقيق محتويات textbox2 وسيتم تصحيح الاخطاء حسب اختيارك واسناد القيمة المصححه الى textbox2.text.
وكذلك ايضا في string st سيتم تصحيح الاخطاء واسناد القيمة الصحيحة حسب ما تم اختيارة الى المتغير st ومن ثم اظهارة في رسالة.


تحياتي للجميع
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالثلاثاء,05/ربيع الثاني/1430 هـ,03:56 صباحاً
المشاركة #2

خبيرتحليل نظم و دوت نت
الرتبة في المنتدى:عماد

أيقونة المجموعة

المجموعة: مشرفي الموقع
المشاركات: 3849
سجل في:الأحد,17/محرم/1428 هـ,05:57 صباحاً
الدولة:الأردن
رقم العضوية: 19244





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

2- If Operator vb 2008



وهي إضافة ميزة جديدة لها وهي للتميز بين متغيرين او ثلاثة متغيرات لتحقيق شرط معين

والصيغة العامة لها

If( [argument1,] argument2, argument3 )



حيث تقوم If بمقارنة argument1 على أساس انه من نوع Boolean ويقوم بإرجاع

Argument2 وهو Object أي نوع إذا كانت قيمة argument1 تساوي True ويرجع قيمة Argument3 وهو Object أي نوع إذا كانت قيمة argument1 تساوي False

وهي تعمل بنفس طريقة IIf والاختلاف بينهم أن IIf تقوم بمقارنة الثلاث متغيرات هذا يجعل If أسرع من استخدام IIf .

أمثلة :
1-

Msgbox(If(False, " Show True", "Show False"))

فهنا بما أن قيمة المتغير الأول False فسيظهر رسالة Show False


2-

number = -1
Msgbox(If(number >= 0, "Positive", "Negative"))


فهنا بما أن قيمة number = -1 فهنا نتيجة الشرط في المتغير الأول ستعطي False وسيظهر رسالة Negative


3- لتوضيح الفرق بين If و IIf نقوم بعمل المثال التالي :

number = 12
Dim divisor = 3
msgbox(If(divisor <> 0, number \ divisor, 0))
Msgbox(IIf(divisor <> 0, number \ divisor, 0))


هنا سيعطي النتيجة نفسها للجملتين وهي رقم 4
أما في حالة

divisor = 0
msgbox (If(divisor <> 0, number \ divisor, 0))
msgbox (IIf(divisor <> 0, number \ divisor, 0))


فهنا سيعطي نتيجة عند استخدام If وسيظهر رسالة صفر
أما في استخدام IIf سيعطي run-time error وذلك لأنه يقوم بمقارنة الطرفين


4- في المثال التالي نوضح طريقة استخدامه بمتغيرين فقط
في حالة استخدام متغيرين فهنا سيقوم بإرجاع القيمة الأولى دائما إلا في حالة واحدة فقط سيقوم بإرجاع القيمة الثانية وذلك عندما تكون القيمة الأولي Nothing أو Nullable فقط ومهما كانت قيمة المتغير الثاني. ويجب أن يكونوا من نوع محدد أو Nullable ولا يمكن مقارنة نوعين مختلفين كأن نقارن String مع Integer ولكن يمكن مقارنة أرقام مع أرقام أي integer مع Double مثلا أو حرف مع حروف Char مع String .

Dim first? As Integer = 3
Dim second As Integer = 6


msgbox(If(first, second))


بما أن قيمة المتغير First ليست فارغة لا تساوي Nothing فهنا سيظهر رسالة برقم 3 ولا يقوم بمقارنة المتغير الثاني مهما كانت قيمته.

second = Nothing
msgbox(If(first, second))


بما أن قيمة المتغير First ليست فارغة لا تساوي Nothing فهنا سيظهر رسالة برقم 3 ولا يقوم بمقارنة المتغير الثاني مهما كانت قيمته.

first = Nothing
second = 6
msgbox(If(first, second))


بما أن قيمة المتغير First فارغة تساوي Nothing فهنا سيظهر رسالة برقم 6 .

first = Nothing
second = Nothing
msgbox(If(first, second))



بما أن قيمة المتغير First فارغة تساوي Nothing والقيمة الثانية تساوي ايضا Nothing فهنا سيظهر رسالة تساوي صفر وذلك لان المتغير الثاني معرف على انه Integer ولو إن المتغيرين معرفين String = Nothing فعندها سيظهر فراغ.

تحياتي للجميع
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالأربعاء,06/ربيع الثاني/1430 هـ,05:18 صباحاً
المشاركة #3

خبيرتحليل نظم و دوت نت
الرتبة في المنتدى:عماد

أيقونة المجموعة

المجموعة: مشرفي الموقع
المشاركات: 3849
سجل في:الأحد,17/محرم/1428 هـ,05:57 صباحاً
الدولة:الأردن
رقم العضوية: 19244





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

اخواني الكرام

تم اضافة مثال اخر وهو اضافة تدقيق املائي لاي نوع string وتصحيحه سواء كان باللغة العربية او الانجليزية أو حسب اللغة التي موجود عندك في Ms Word.

في اخر المشاركة الاولى

تحياتي للجميع

للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالخميس,07/ربيع الثاني/1430 هـ,05:14 صباحاً
المشاركة #4

خبيرتحليل نظم و دوت نت
الرتبة في المنتدى:عماد

أيقونة المجموعة

المجموعة: مشرفي الموقع
المشاركات: 3849
سجل في:الأحد,17/محرم/1428 هـ,05:57 صباحاً
الدولة:الأردن
رقم العضوية: 19244





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

3- Local Type Inference vb 2008




وهي طريقة تعريف المتغيرات دون تحديد النوع.
وهذه الميزة جديدة في vb 2008 حيث انه عند عدم استخدام As في تعريف المتغيرات يقوم compiler باستنتاج النوع بشكل تلقائي حسب القيمة لذلك المتغير.

مثلا لتعريف متغير محدد النوع
 كود
Dim num1 As Integer = 3

فهنا المتغير num1 محدد نوعه في integer
إما لتعريفة بطريقة Local Type Inference
 كود
Dim num2 = 3

فهنا سيقوم ال compiler باستنتاج نوعه حسب القيمة وهو integer

 كود
Dim Name As String = "Jbsa"


يمكن تعريفها بهذا الشكل وسيعرف نوعها أنها String
 كود
Dim Name = "Jbsa"



وكذلك المتغيرات التي تساوي Function معين فستأخذ نوع ال Function أو نوع القيمة الراجعة من ال Function مثلا :
 كود
Dim num2 = UppercaseString("jbsa")

فهنا سيعرف نوع num2 على انها String
 كود

Dim num2 = ShowWindowsMessage("jbsa")

فهنا سيعرف نوع num2 على انها Integer

وهذه بعض الأمثلة لتعريف المتغيرات :
لتعريف رقم Integer
 كود

Dim num2 = 3
Dim num2 = 3I
Dim num2% = 3

لتعريف رقم Double
 كود

Dim num2 = 3.0
Dim num2 = 3R
Dim num2# = 3


لتعريف رقم Single
 كود

Dim num2 = 3.0F
Dim num2! = 3

لتعريف رقم Short
 كود
Dim num2 = 3.0S


لتعريف رقم Long
 كود

Dim num2 = 3.0L
Dim num2& = 3


لتعريف رقم Decimal
 كود

Dim num2 = 3.0D
Dim num2@ = 3


لتعريف رقم String
 كود

Dim num2 = "A"
Dim num2$ = "A"


لتعريف رقم Char
 كود
Dim num2 = "A"c



والمتغيرات التي لا يستطيع تحديد نوعها فلن يقوم بتعريفها إلا في حالة Runtime وسيعتبر نوعها على أنها Object واستخدام هذه الطريقة يبطئ من سرعة البرنامج مثال :

 كود

Dim num() = {1, "A"c, "jbsa", 3.0}
MsgBox(num.ToString)
MsgBox(num(0).GetType.ToString)
MsgBox(num(1).GetType.ToString)
MsgBox(num(2).GetType.ToString)
MsgBox(num(3).GetType.ToString)



هنا لو وضعت المؤشر على num فلن يحدد لك نوعها
في ال msg الأولى سيعطي النوع System.Object[]
في ال msg الثانية سيعطي System.Integer
في ال msg الثالثه سيعطي System.Char
في ال msg الرابعة سيعطي System.String
في ال msg الخامسه سيعطي System.Double

تحياتي للجميع

للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالاثنين,11/ربيع الثاني/1430 هـ,05:13 صباحاً
المشاركة #5

خبيرتحليل نظم و دوت نت
الرتبة في المنتدى:عماد

أيقونة المجموعة

المجموعة: مشرفي الموقع
المشاركات: 3849
سجل في:الأحد,17/محرم/1428 هـ,05:57 صباحاً
الدولة:الأردن
رقم العضوية: 19244





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

4- Func vb 2008 , Action vb 2005,2008




وهو أمر جديد في vb 2008 ومن نوع Built-in delegate types ونستخدمه عندما نحتاج تعريف متغير من نوع delegate ينفذ إجراء معين ويرجع قيمة معينة وهي مفيدة جدا في برمجة الاشتقاقات Derived Class's ، ويمكن استخدام Lambda Expression فيه.
وله خمسة طرق :

1- Func(TResult) Delegate

بدون parameters يعيد القيمة حسب نوع Tresult

مثال : لو أردنا أن نقوم بتخزين كلمة Hello, World! في ملف في Temp فولدر فإذا تم التخزين يعيد لنا True وإذا لم يتم التخزين يعيد لنا False ، وفي مثل هذه الحالة يجب أن أقوم بتعريف متغير من نوع delegate وذلك لأنني أريد أن أحاكي أنفذ Function في Class ثم الحصول على النتيجة : ففي الطريقة العادية اعرفها بهذا الشكل :
يجب تعريف Delegate Function في بداية البرنامج حيث لا يمكن تعريفها داخل الإجراءات.

 كود
Delegate Function WriteMethod As Boolean


ثم تنفيذ الإجراء التالي :

 كود
Dim output As New OutputTarget()
Dim methodCall As WriteMethod = AddressOf output.SendToFile
If methodCall() Then
Msgbox("Success!")
Else
Msgbox("File write operation failed.")
End If


أما في الأمر Func فنقوم بتعريفة بهذا الشكل في داخل الإجراء ولا نعرف Delegate Function في بداية البرنامج

 كود
Dim output As New OutputTarget()
Dim methodCall As Func(Of Boolean) = AddressOf output.SendToFile
If methodCall() Then
Msgbox("Success!")
Else
Msgbox("File write operation failed.")
End If


أي أن هذا المتغير methodCall سيكون نوعه Boolean وسيأخذ القيمة من ال output.SendToFile في جملة Return

 كود
Public Class OutputTarget
Public Function SendToFile() As Boolean
Try
Dim fn As String = Path.GetTempFileName
Dim sw As StreamWriter = New StreamWriter(fn)
sw.WriteLine("Hello, World!")
sw.Close
Return True
Catch
Return False
End Try
End Function
End Class


2- Func(T, TResult) Delegate

وجود parameter واحد يرسل نوع وقيمة T ويعيد القيمة حسب نوع Tresult

وسأضع مثال هنا باستخدام Lambda Expression لو أردنا محاكاة Function يحول الحروف من صغيرة إلى كبيرة في الطريقة العادية نستخدمها بهذا الشكل :
يجب تعريف Delegate Function في بداية البرنامج

 كود
Delegate Function ConvertMethod(ByVal inString As String) As String


عمل الإجراء التالي :
 كود
Dim convertMeth As ConvertMethod = AddressOf UppercaseString
Dim name As String = "Jbsa"
MsgBox(convertMeth(name))

عمل Function لتحويل الحروف التالي
 كود
Private Function UppercaseString(ByVal inputString As String) As String
Return inputString.ToUpper()
End Function


أما في الأمر Func فنقوم بتعريفة بهذا الشكل في داخل الإجراء ولا نعرف Delegate Function في بداية البرنامج

 كود
Dim convertMethod As Func(Of String, String) = Function(s) s.ToUpper()

Dim name As String = "Jbsa"
MsgBox(convertMethod(name))


ونلاحظ هنا أننا نستغني عن ال Function UppercaseStringلأننا عرفناه في Lambda Expression

3- Func(T1, T2, TResult) Delegate

وجود اثنين parameter يرسل نوع وقيمة T1,T2 ويعيد القيمة حسب نوع Tresult

4- Func(T1, T2, T3, TResult) Delegate

وجود ثلاث parameter يرسل نوع وقيمة T1,T2,T3 ويعيد القيمة حسب نوع Tresult

5- Func(T1, T2, T3, T4, TResult) Delegate

وجود أربع parameter يرسل نوع وقيمة T1,T2,T3,T4 ويعيد القيمة حسب نوع Tresult


Action vb 2005,2008




وهو أمر في vb 2005, 2008 ومن نوع Built-in delegate types ونستخدمه عندما نحتاج تعريف متغير من نوع delegate ينفذ إجراء معين Sub….…End Sub فقط ، ولتنفيذ Function يجب استخدامه بطريقة Lambda Expression ، ولا يرجع أي قيمة وهي مفيدة جدا في برمجة الاشتقاقات Derived Class's.
وله خمسة طرق :

1- Action() Delegate

بدون parameters ولا يعيد قيمة .

2- Action(T) Delegate

وجود parameter واحد يرسل نوع وقيمة T ولا يعيد قيمة .

3- Action(T1, T2) Delegate

وجود اثنين parameter يرسل نوع وقيمة T1,T2 ولا يعيد قيمة .

4- Action (T1, T2, T3) Delegate

وجود ثلاث parameter يرسل نوع وقيمة T1,T2,T3 ولا يعيد قيمة.

Action (T1, T2, T3, T4) Delegate

وجود أربع parameter يرسل نوع وقيمة T1,T2,T3,T4 ولا يعيد قيمة.

مثال : لمحاكاة إجراء يظهر msg معينه بالطريقة Delegate Sub

نقوم بتعريف Delegate Sub في بداية البرنامج
 كود
Delegate Sub DisplayMessage(message As String)
في تنفيذ الإجراء نكتب التالي :
Dim messageTarget As DisplayMessage

messageTarget = AddressOf ShowWindowsMessage

messageTarget("Hello, World!")

الإجراء الذي نرغب في محاكاته
 كود
Private Sub ShowWindowsMessage(message As String)
MsgBox(message)
End Sub


أما بطريقة Action فلا أقوم بتعريف Delegate Sub
في تنفيذ الإجراء نكتب التالي :
 كود
Dim messageTarget As Action(Of String)

messageTarget = AddressOf ShowWindowsMessage

messageTarget("Hello, World!")

أما لو أردت أن أحاكي Function فيجب أن استخدم Lambda Expression

 كود
Dim messageTarget As Action(Of String)

messageTarget = Function(s) ShowWindowsMessage(s)

messageTarget("Hello, World!")

ال Function الذي نرغب في محاكاته
 كود
Private Function ShowWindowsMessage(message As String) As Integer
Return MessageBox.Show(message)
End Function



تحياتي للجميع
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالثلاثاء,12/ربيع الثاني/1430 هـ,08:58 صباحاً
المشاركة #6

خبيرتحليل نظم و دوت نت
الرتبة في المنتدى:عماد

أيقونة المجموعة

المجموعة: مشرفي الموقع
المشاركات: 3849
سجل في:الأحد,17/محرم/1428 هـ,05:57 صباحاً
الدولة:الأردن
رقم العضوية: 19244





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

5- Partial Methods vb2008,2005



وهو عملية تقسيم ال method إلى عدة أجزاء في عدة أماكن في عدة ملفات وتسمح هذه الطريقة بتمدد وإضافة methodإلى ال class ويمكن استخدام هذه الطريقة في vb.net 2005 , 2008 ، ويجب تعريفها في partial class وهي تستخدم عادة لتقديم إشعار بأن شيئا قد تغير. وهي تمكن المطور لتحديد السلوك استجابة لهذا التغيير الذي حدث.

الشروط الواجب إتباعها :
1- ال method يجب ان تكون Sub وليس Function .
2- يجب ان يكون لل method اسم.
3- يجب أن يكون ال method في ال partial class فارغ لا يحتوي على أية أوامر.
4- يجب أن تعرف ال Method بـ Partial Private في ال partial class ونقوم بتعريفها في ال Partial Methods بـ Private فقط.
5- يجب تعريف partial class واحد في الملف ، بمعنى انه لا يمكن تعريف نفس partial class أكثر من مرة في نفس الملف.


ونوضح هذه الطريقة بالمثال التالي : نضع ال Class في form1.vb
 كود
Partial Class Product
Private _Quantity As Integer

Property Quantity() As Integer
Get
Return _Quantity
End Get
Set(ByVal value As Integer)
_Quantity = value
QuantityChanged()
End Set
End Property

Partial Private Sub QuantityChanged()
End Sub
End Class


هنا قمنا بتعريف Class Product Partial على انه جزء من Class Product
حيث نرغب بإطلاق حدث في حالة أن الكمية قد تغيرت فنقوم بإضافة Property Quantity ونطلق حدث أن الكمية قد تغيرت ، ونعرف هذا الحدث Partial Private
وفي حالة أن الكمية قد تغيرت ينفذ الإجراء QuantityChanged() الذي لا يحتوي على أية أوامر.
وهنا يأتي دور Partial Methods حيث نستطيع عمل هذه الإجراء دون أن نقوم بتغير ال Class Product الأصلي ، بالطريقة التالية :
وهنا يجب وضع هذا ال Class في ملف أخر غير Form1.vb ولكن في نفس المشروع ولنفترض انه في Form2.vb

 كود
Partial Class Product
Private Sub QuantityChanged()
MsgBox("Quantity was changed to " & Me.Quantity)
End Sub
End Class


ونستطيع تنفيذ هذا الإجراء في أي ملف من المشروع مثال :
 كود
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click

Dim pr As New Product
pr.Quantity = 10

End Sub

فهنا فور تنفيذ جملة pr.Quantity = 10
يظهر رسالة
10 Quantity was changed to


ونستفيد من هذه الطريقة كثيرا عند استخدام DataSet في المشروع حيث عند تخليق ملف DataSet1.xsd يقوم وبشكل تلقائي بعمل Class لل DataSet1 وجميع الجداول فيها وفي حالة الرغبة بكتابة ما نريد عن وقع الأحداث في DataSet1 من إضافة أو إلغاء أو تعديل أو مسح الجدول . فيكون بشكل سهل جدا ً عمل هذه الأحداث مثال

قم بإضافة أي ملف DataBase في DataSet1 إلى مشروعك ستجد انه تم تخليق ملف DataSet1.xsd ضع المؤشر على هذا الملف ثم اضغط على View Code سيفتح DataSet1.vb ويوجد بها Class باسم DataSet1 بهذا الشكل :

 كود
Partial Class DataSet1

End Class

اكتب داخل هذا ال Class ما يلي Partial Class وعندها سيظهر لك اسماء الجداول في DataSet1 وغيرها ثم قم باختيار احد الجداول ومثلا Product
 كود
Partial Class DataSet1
Partial Class ProductsDataTable
Dim YorN As MsgBoxResult

End Class
End Class

ألان اكتب داخل هذا Partial Class ProductsDataTable ما يلي :

 كود
Private Sub Products_RowDeleted Handles Me.RowDeleted
YorN = MsgBox("هل انت متأكد من الإلغاء", MsgBoxStyle.YesNo, "الإلــــغـــاء")
If YorN = MsgBoxResult.No Then
Try
e.Row.RejectChanges()
Catch ex As Exception
End Try
End If
End Sub

وعند كتابة handles ستظهر أمامك جميع الأحداث التي من الممكن استخدامها أو يمكنك اختيارها من الإحداث وهنا قمت باختيار إلغاء Row معين ففي الحدث RowDeleted يعني أن السجل سيشطب وفي أي موقع من برنامجي عند حدوث أي عملية إلغاء للسجل من هذا النوع سيظهر رسالة "هل انت متأكد من الإلغاء" فإذا كان الجواب No فهنا سيوقف عملية الإلغاء أما إذا كان الجواب Yes فهنا سيطلق حدث آخر وهو RowDeleting أي أنه قد تم إلغاء السجل
 كود
Private Sub ProductsDataTable_RowDeleting() Handles Me.RowDeleting
If YorN = MsgBoxResult.Yes Then
MsgBox("تم الإلغاء")
'تستطيع هنا وضع اسم الاجراء لعكس التعديل في الداتا سيت والداتا بيز
Else
Try
e.Row.RejectChanges()
Catch ex As Exception
End Try
End If
End Sub
End Class

وطريقة استخدام Partial في Class DataSet يحمي ال Class الاصلي من أي تغيير ولكن نستطيع ان نكتب في الاحداث ما نرغب.
وكما لاحظنا من هذا المثال أن Partial نستطيع استخدامها في Class أو Methods أو Struc أو Interface.


تحياتي للجميع

للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالخميس,14/ربيع الثاني/1430 هـ,03:03 صباحاً
المشاركة #7

خبيرتحليل نظم و دوت نت
الرتبة في المنتدى:عماد

أيقونة المجموعة

المجموعة: مشرفي الموقع
المشاركات: 3849
سجل في:الأحد,17/محرم/1428 هـ,05:57 صباحاً
الدولة:الأردن
رقم العضوية: 19244





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

6- DateTimePicker - For Time vb 2005,2008



الجميع استخدم هذه الأداة لإظهار التاريخ أو التاريخ والوقت أو الوقت لوحدة ، وهذه الأداة لها ميزة وهي نستطيع استخدام لإدخال واظهر الوقت فقط وتستطيع الاستغناء عن إجراءات التحقق من الإدخال لأنه يتحقق منها بشكل تلقائي.

نجعل خاصية Format = Time وهنا سيظهر الوقت فقط ، ولكن لو حاولنا إدخال الوقت عن طريق الضغط على السهم ستفتح لنا رزنامة الشهور.
في هذه الحالة يجب أن نغير خاصية ShowUpDown = True وهنا سيتم إدخال الوقت فقط دون ظهور للتاريخ .
ويجب في هذه الحالة عند تخزين الوقت أو التعامل معه أن لا استخدم DateTimePicker.Value لانها هنا ستعطيني التاريخ والوقت معا بل استخدم DateTimePicker1.Text حيث انها ستعطيني الوقت فقط .

ولها ميزة أخرى وهي أن نجعل خاصية Format = Custom ونحدد الشكل الذي نريده للوقت في خاصية CustomFormat وفي هذه الخاصية نستطيع أن نحدد الشكل الذي نريده للوقت .

والرموز التي يمكن لنا استخدامها لإظهار الوقت هي :

h : دون إظهار الصفر على اليسار إظهار الوقت بنظام 12 ساعة
(1-2-3-4-5-6-7-8-9-10-11-12)

hh : إظهار الصفر على اليسار إظهار الوقت بنظام 12 ساعة
(01-02-03-04-05-06-07-08-09-10-11-12)

H : دون إظهار الصفر على اليسار إظهار الوقت بنظام 24 ساعة
(0-1-2-3-4-5-6-7-8-9-10-11-12-13-….-23)

HH : وإظهار الصفر على اليسار إظهار الوقت بنظام 24 ساعة
(00-01-02-03-04-05-06-07-08-09-10-11-12-13-….-23)

m : إظهار الدقائق دون الصفر على اليسار
(0-1-2-3-4-5-6-7-8-9-10-11-12-13-….-59)

mm : إظهار الدقائق وإظهار الصفر على اليسار
(00-01-02-03-04-05-06-07-08-09-10-11-12-13-….-59)
وجب الانتباه هنا بعدم استخدام M , MM لأنه سيعتبرها تاريخ وسيظهر الشهر

s : إظهار الثواني دون الصفر على اليسار
(0-1-2-3-4-5-6-7-8-9-10-11-12-13-….-59)

ss : إظهار الثواني وإظهار الصفر على اليسار
(00-01-02-03-04-05-06-07-08-09-10-11-12-13-….-59)

t : إظهار الصباح والمساء
(A ,P)

tt : إظهار الصباح والمساء
(AM ,PM)

ويمكن كتابة أية فواصل نرغب بها ( : , | , – , /, \ ) أو كتابة الكلمات أيضا ولكن اذا كانت الكتابة باللغة الانجليزية وكان أول حرف من الكلمة هو من الرموز السابقة أو من رموز التاريخ يجب كتابة الكلمة بهذه الطريقة 'Hour' أو 'second' أو 'Minute' لأنه سيعتبرها شهر أو 'minute'

أمثلة للتوضيح :
 كود
CustomFormat = h:m:s t

سيظهر الوقت بهذا الشكل (الساعة الواحدة وتسع دقائق و خمسة ثواني بعد الظهر )
 كود
1: 9: 5 P

 كود
CustomFormat = H:m:s t

سيظهر الوقت بهذا الشكل (الساعة الواحدة وتسع دقائق و خمسة ثواني بعد الظهر )
 كود
13: 9: 5 P

 كود
CustomFormat = hh : mm : ss [t]

سيظهر الوقت بهذا الشكل (الساعة التاسعة وتسع دقائق و خمسة ثواني صباحا )
 كود
09 : 09 : 05 [A]

 كود
CustomFormat = HH : mm : ss (tt)

سيظهر الوقت بهذا الشكل (الساعة التاسعة وتسع دقائق و خمسة ثواني مساءا )
 كود
21 : 09 : 05 (PM)

 كود
CustomFormat = الساعة HH و mm دقيقة و ss ثانية t

الساعة 21 و 9 دقيقة و 05 ثانية P

تحياتي للجميع
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
SQL
مشاركةالأربعاء,16/رجب/1430 هـ,10:29 صباحاً
المشاركة #8

الرتبة في المنتدى:ملازم أول

أيقونة المجموعة

المجموعة: أعضاء فعالين
المشاركات: 176
سجل في:الثلاثاء,13/جمادى الثانية/1429 هـ,07:59 مساءً
الدولة:السعودية
رقم العضوية: 57544



بارك الله فيك
بس لدي سؤال ماهو المقصود بـCustomFormat
ومن اين اتيت بها
والله اني توني انتبه لخصائص الاده من شرحك
الله يوفقك
ويسدد خطاك


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالخميس,17/رجب/1430 هـ,01:25 صباحاً
المشاركة #9

خبيرتحليل نظم و دوت نت
الرتبة في المنتدى:عماد

أيقونة المجموعة

المجموعة: مشرفي الموقع
المشاركات: 3849
سجل في:الأحد,17/محرم/1428 هـ,05:57 صباحاً
الدولة:الأردن
رقم العضوية: 19244





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

اخي SQL جزاك الله خيرا

 اقتباس
بس لدي سؤال ماهو المقصود بـCustomFormat


المقصود هو ان المبرمج يحدد الحروف التي قمت بشرحها سابقا كما يرغب بكيفية اظهار الوقت

 اقتباس
ومن اين اتيت بها


موجودة من ضمن خصائص datetimepicker , وهي تكون فوق خاصية Dock


تحياتي للجميع

للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالاثنين,28/رجب/1430 هـ,03:50 صباحاً
المشاركة #10

خبيرتحليل نظم و دوت نت
الرتبة في المنتدى:عماد

أيقونة المجموعة

المجموعة: مشرفي الموقع
المشاركات: 3849
سجل في:الأحد,17/محرم/1428 هـ,05:57 صباحاً
الدولة:الأردن
رقم العضوية: 19244






DataRepeater vb2005,2008


مقدمة :


وهي أداة يمكن إضافة لها أي Controls أخرى لإظهار البيانات بشكل مكرر (سجلات) مثل الأسطر في Database وتستعمل كبديل عن أداة DataGridView عندما تحتاج إلى مزيد من التحكم بشكل التصميم لإظهار البيانات .


وتحتوي على شكلين عاموديHorizontal و عرضي Vertical وتنقسم هذه الأداة إلى جزأين جزء العلوي لإضافة الأدوات والتصميم وتستطيع تغيير الألوان وإخفاء أو إظهار العناصر والترويسه .


والجزء السفلي مكان تكرار البيانات أو إذا كان عامودي فيكون الجزأين يسار ويمين.


http://www.arabmoheet.net/aspnetforum/Uploads/19244/image/pwoer1.jpg" width="474" height="583" />









وهي تسمح لظهور عدة سجلات في نفس الوقت وبها إمكانية الإضافة والإلغاء والتعديل والبحث على السجلات سواء

كانت
Database أو Class من نوع
http://msdn.microsoft.com/en-us/library/system.collections.ilist.aspx"> style="color: black; font-size: 15pt" dir="ltr">IList أو arrays أو http://msdn.microsoft.com/en-us/library/system.componentmodel.ilistsource.aspx"> style="color: black; font-size: 15pt" dir="ltr">IListSource أو http://msdn.microsoft.com/en-us/library/system.componentmodel.ibindinglist.aspx"> style="color: black; font-size: 15pt" dir="ltr">IBindingList أو http://msdn.microsoft.com/en-us/library/system.componentmodel.ibindinglistview.aspx"> style="color: black; font-size: 15pt" dir="ltr">IBindingListView.


ربط البيانات : Data Binding


تستطيع بكل سهولة إضافة الحقول التي ترغب بها من الجدول قم بمسك الحقل وضعه في الجزء العلوي وقم بتنسيقه بالشكل الذي ترغب فيه . ويجب إضافة على الأقل حقل واحد إلى DataRepeater وإلا لن يظهر بها أية معلومات.


ويمكن استخدامها أيضا لإظهار البيانات الرئيسية والفرعية data in a master and detail عندما يوجد رابط بينهم وذلك عن طريق استخدام أداتين من DataRepeter واحدة للرئيسي وأخرى للفرعي حيث عند اختيار سجل رئيسي يظهر بشكل تلقائي البيانات الفرعية في الأداة الأخرى.







كما هو واضح من الصورة ان Orders هي بيانات فرعية مرتبط مع Customers فهنا نسحب حقول Customers ونضعها في أداة الرئيسي ثم نسحب حقول Orders المتفرعة من Customers ونضعها في أداة الفرعي وهنا سيتم ربطهم بشكل تلقائي. ولا نقوم بسحب الحقول من Orders الأساسي.


وهذا رابط فيديو لشرح عملية ربط الجداول في data in a master and detail بشكل عام وعمل وإضافة وتعديل وإلغاء عليه


http://msdn.microsoft.com/en-us/vbasic/cc138241.aspx"> style="font-size: 15pt" dir="ltr">http://msdn.microsoft.com/en-us/vbasic/cc138241.aspx


ولعملية البحث استخدم هذا الإجراء


Private Sub SearchButton_Click(ByVal sender As System.Object, ByVal e As _


System.EventArgs) Handles SearchButton.Click


Dim foundIndex As Integer


Dim searchString As String


searchString = SearchTextBox.Text


foundIndex = ProductsBindingSource.Find("ProductID", _


searchString)


If foundIndex > -1 Then


DataRepeater1.CurrentItemIndex = foundIndex


Else


MsgBox("Item " & searchString & " not found.")


End If


End Sub


الأحداث : Events ومن أهم الإحداث في هذه الأداة


1- http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.powerpacks.datarepeater.drawitem.aspx"> style="color: black; font-size: 15pt" dir="ltr">DrawItem ويطلق عند ظهور العناصر أثناء تحريكها للأسفل أو الأعلى أو من اليمين أو اليسار. ويمكن استخدامه لتغير شكل ولون ظهور البيانات مثلا يمكن تغيير لون الأرقام السالبة أو التي تقل عن عدد معين.



وهذا رابط فيديو لشرح عملية الإضافة والاستخدام


http://msdn.microsoft.com/en-us/vbasic/cc411420.aspx"> style="font-size: 15pt" dir="ltr">http://msdn.microsoft.com/en-us/vbasic/cc411420.aspx



2- http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.powerpacks.datarepeater.currentitemindexchanged.aspx"> style="color: black; font-size: 15pt" dir="ltr">CurrentItemIndexChanged ويطلق عند اختيار احد السجلات وتستطيع فيه تغيير قيم الحقول. مثال


Private Sub DataRepeater1_CurrentItemIndexChanged(ByVal sender _


As Object, ByVal e As System.EventArgs) Handles _


DataRepeater1.CurrentItemIndexChanged



If DataRepeater1.CurrentItem Is Nothing Then Exit Sub


If CDbl(DataRepeater1.CurrentItem.Controls("UnitsInStockTextBox").Text) < 15 Then


Me.LowStockWarningLabel.Visible = True


Else


Me.LowStockWarningLabel.Visible = False


End If


End Sub



3- لمنع الإضافة والتعديل والإلغاء وتكون الأداة مجرد لإظهار البيانات فقط يجب عمل التالي :


DataRepeater1.AllowUserToAddItems = False


DataRepeater1.AllowUserTodeleteItems = False


BindingNavigatorAddNewItem.Enabled = False


ProductsBindingSource.AllowNew = False


BindingNavigatordeleteItem.Enabled = False




أضف هذا الحدث أيضا وهو ضروري لأنه يعود Enabled عند التنقل بين السجلاتBindingNavigatordeleteItem_EnabledChanged



If BindingNavigatordeleteItem.Enabled = True Then



			 BindingNavigatordeleteItem.Enabled = False



End If




تحياتي للجميع

للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة

    

عدد المتصفحين لهذا المنتدى «1»: (الضيوف «1» - المتخفون «0»)
الأعضاء «0»: .

عدد الصفحات : 2  1  2   > » إضافة رد جديد إضافة موضوع جديد



 
الوقت الأن:اليوم,04:41 صباحاً بتوقيت القدس المحتلة

Powered By arabmoheet v3.1

منتديات المحيط العربي  -  راسلنا  -   أعلى
X   رسالة المنتدى
(سوف يتم اغلاق هذه النافذة بعد 2 ثانية)
X   رسالة المنتدى
(سوف يتم اغلاق هذه النافذة بعد 2 ثانية)