الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أول درس أكتبه عن الفيجوال دوت نت إنشاء مشروع بسيط

مغلق
بدأه أبو ريناد في 5 فبراير 2005 · 14 رد · 1,542 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

سنجعل أول برنامج نكتبه هو برنامج حساب نسبة الأرباح

الخطوة الأولى:

قم بكتابة كروكي متكامل الخطوات عن مشروعك، مثال ذلك :

نريد أن نكتب برنامج يحسب لنا نسبة أرباح فإننا سنرسم الشكل الذي نراه مناسبا على سبيل المثال هذا الشكل :

shar7.jpg

ونجعله مقسما على القيمة ، نسبة الربح ، المجموع ويوجد زرين حدث هما خروج وإحسب لحساب الناتج.

الخطوة الثانية :

قم بتعيين أسماء لأدوات مشروعك .

على سبيل المثال :

سنسمي المربع الذي سندخل فيه المبلغ

txtSales

وطريقة كتابة الاسم :

أن نجعل الفأرة على المربع ونضغط عليها بالزر الأيمن ثم نختار خصائص ثم نجد من ضمن الخصائص :

Text

وهذه نكتب فيها ما نشاء أو نتركها فارغة.

وتجد من ضمن الخصائص :

Name

في هذه الخانة يجب أن يكون بالإنجليزي ونكتب فيها في مثالنا هذا

txtSales

ثم نسمي بقية المربعات كما فعلنا :

مربع النسبة نسميه:

txtPercent

مربع المجموع نسميه :

txtTotal

الخطوة الثالثة :

نسمي الأزرار أيضا كما فعلنا في مربعات الإدخال :

فنسمي مربع الخروج :

cmdExit

ونسمي مربع الحساب :

cmdCalculate

الخطوة الرابعة :

ننقر على زر الحدث وهو زر الحساب في مثالنا هذا مرتين بالفأرة ثم نبدأ بكتابة الكود البرمجي (كود الإجراء).

الخطوة الخامسة :

الإعلان عن المتغيرات :

نقوم بالإعلان عن المتغير بهذه العبارة :

Dim اسم المتغيرAs نوع المتغير

سنقوم بالإعلان بأن المتغير الأول من نوع الأعداد العشرية فيكون الإعلان بهذا الشكل :

Dim dcSales As Decimal

فـ dcSales

اسم المتغير

و Decimal

نوع المتغير وهو متغير موجود في الدوت نت للأعداد العشرية.

سنقوم الآن بالإعلان عن المتغيرات الأخرى وعليك اكتشافها بنفسك :

Dim sgPercent As Single

Dim crTotal As Decimal

الآن انتهينا من الإعلان عن المتغيرات والآن سيتم كتابة كود الإجراء (المراد يكود الإجراء هو توزيع الحدث على واجهة البرنامج)

كتابة كود الإجراء وكيفية الكتابة كالتالي :

نكتب اسم المتغير الذي أعلنا عنه وهو في الإعلان الأول :

dcSales

ثم نكتب علامة =

ثم نكتب اسم المربع الذي نريد أن يكون من الأحداث وهو المربع الأول الذي سيتم إدخال القيمة الأولى فيه ثم نضع نقطة

(.)

ثم نضع نوعه وهو

Text

فيكون الإجراء بهذا الشكل :

dcSales = txtSales.Text

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

ثم نكتب كود الإجراء الثاني والثالث بنفس الطريقة الأولى فيكون بهذا الشكل :

sgPercent = txtPercent.Text / 100

crTotal = sgPercent * dcSales

txtTotal.Text = Format(crTotal, "Fixed")

وبالنسبة لزر الخروج اضغط عليه مرتين واكتب

End

والآن يصبح ما تم كتابته في كود الإجراء يهذا الشكل :

Dim dcSales As Decimal

Dim sgPercent As Single

Dim crTotal As Decimal

dcSales = txtsales.Text

sgPercent = txtPercent.Text / 100

crTotal = sgPercent * dcSales

txtTotal.Text = Format(crTotal, "Fixed")

الخطوة السادسة :

تشغيل التطبيق وإن شاء الله يعمل التطبيق بكل وضوح.

جرب التطبيق واكتب في المربع الأول :

1000

وفي المربع الثاني النسبة

10

سيخرج لك في المربع الثالث مجموع ربحك :

100.00

وبالتوفيق إن شاء الله

لدي بعض الأسئلة للإخوة الخبراء ولا غنى لنا عن إبداء الرأي والتصحيح .

#2

لو سمحت روح شوف الرد تحت طلبي

#3

ما فهمت ما هو الطلب والرد ؟

#4

ماذا أفعل لأتأكد أن المستخدم أدخل قيمة رقمية ولم يدخل حروف هجائية

#5

شكرا جزيلا على هذا الدرس الجميل وبالمناسبة أخي أيضا أبو ريناد وهو إسم جميل

أبو حسين

فلسطين الزاهية بألوان الحب والسلام

ذلك الطعم الزيتوني الذي يتدفق عسلاً من أفواه بساتينها وحدائقها

تشتاق إليها نفوس المتقين وترنوا للسجود فيها جباه المسلمين

#6

شكرا أخوي على هذا الدرس وتم تطبيقة بنجاح

ولكن زي ما قال أخوي ahab

إذا أدخل المستخدم معلومات نصيه ... أو ترك مربعات النص فارغة ثم ضغط على زر الحساب سيحصل خطأ في البرنامج

أنا متأكد 100% أن حل المشكله سهل

نرجوا منكم اخواني وضع حل لهذي المشكله البسيطه كي نسفيد ^ـــــــ^

تحياتي

#7

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

الأخ الكريم ahab

حقيقة أنا مبتدئ والشباب لن يقصروا بإذن الله تعالى .

الأخ الكريم seahmad

أشكرك على ثنائك (وكلك ذوق)

الأخ الفاضل Mohsen-F

بالنسبة لي لما أدخل كتابة وليس أرقام يخرج لي رسالة أن هذا ليس من القيمة الممكن إجراؤها ثم يقوم بإغلاق البرنامج.

تحياتي لكم

#8

أخي أبا ريناد،

تأكد تماماً بأن درسك مقدر، وتأكد تماماً بأن أفضل وسيلة لأمثالك الطيبين حتى يرقوا بمستواهم البرمجي هو بوضع الدروس، فأنا أظنك من النوعية التي تعشق خدمة الآخرين.

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

الأخ ahab، يوجد طرق عدة للتأكد من ذلك وأسهلها وضع جملة شرط تتأكد من أن المدخلات هي أرقام وليست نصوصاً وحروفاً... ويوجد في الفيجوال بيسك دالة مباشرة للقيام بذلك وهي IsNumeric.

ونستطيع كتابة الكود كالتالي:

If IsNumeric(TestSales)=FalseThen
Messagebox.show("Numbers only for God's Sake")
Exit Sub
End If

اقتباس
أو ترك مربعات النص فارغة

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

Learn Japanese :>>> http://www.nouben.com/

#9

طيب أخي الكريم همس :

أين أكتب هذا الكود هل يكون في مكان الحدث ؟

أم في فريم البرنامج ؟

معليش تراني مبتدئ.

#10

تكتب هذا الامر عند زر cmdCalculate

If IsNumeric(txtsales)=FalseThen
Messagebox.show("Numbers only for God's Sake")
Exit Sub
Else
Dim dcSales As Decimal
Dim sgPercent As Single
Dim crTotal As Decimal
dcSales = txtsales.Text
sgPercent = txtPercent.Text / 100
crTotal = sgPercent * dcSales
txtTotal.Text = Format(crTotal, "Fixed")

End If

تم تعديل هذه المشاركة بواسطة mn_902 في 6 فبراير 2005 في 19:25

#11

أخي الكريم : mn_902

أشكرك على ردك ولكن جربت الكود الذي وضعته لكن للأسف أصبح البرنامج يخرج لي الرسالة ولا يخرج لي الناتج .

وجربت أن أضع هذا الكود في آخر الإجراء فأصبح يخرج لي الناتج والرسالة أيضا وكانت كتابتي للكود بهذا الشكل :

Dim dcSales As Decimal

Dim sgPercent As Single

Dim crTotal As Decimal

dcSales = txtsales.Text

sgPercent = txtPercent.Text / 100

crTotal = sgPercent * dcSales

txtTotal.Text = Format(crTotal, "Fixed")

If IsNumeric(txtsales) = False Then

MessageBox.Show("Numbers only for God's Sake")

Exit Sub

Else

End If

====

ألا يوجد حل بالفعل لهذه المشكلة ؟

كما أنني أريد أن يخرج الناتج عند الضغط على زر انتر بعد إدخال النسبة فكيف يتم فعل ذلك ؟

#12

أمر آخر أرجو شرح هذا الإجراء لو تكرمتم :

if

شرط

IsNumeric

؟؟؟؟؟

Messagebox.show("Numbers only for God's Sake

معناها أخرج رسالة تخبره بـ ....

هذا ما فهمته من الإجراء

فهل ما فهمته صحيح ؟

وما معنى الجملة التي بعد الشرط ؟

If IsNumeric(txtsales)=FalseThen
Messagebox.show("Numbers only for God's Sake")
Exit Sub
Else

تم تعديل هذه المشاركة بواسطة أبو ريناد في 6 فبراير 2005 في 22:08

#13

IsNumeric هي عبارة عن وظيفة تقوم باختبار تعبير، هل هو رقم أم لا ..

إذا كان رقم تعود هذه الوظيفة بـ True

إذا كان غير ذلك تعود بـ False

من خلال هذه الوظيفة نستطيع اختبار قيمة النص، ونتعامل معها على هذا الأساس

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

بالتوفيق

ani.gif
#14

ممكن تستخدم هذه الأداة (تنبهك عند حدوث الخطأ)

ErrorProvider1

ويجب ادراجها من قائمة الأدوات

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        'التأكد من ان المستخدم لايتركه فراغ ولا يدخل نص بدل رقم 
        If TextBox1.Text = "" Or IsNumeric(TextBox1.Text) = False Then
            ErrorProvider1.SetError(TextBox1, "please Enter a number and you cannot leave it empty")
            TextBox1.Focus()
        Else
            'حتى يلغي التوجيه بعد التصحيح نضع "" بدون ترك اي فراغ
            ErrorProvider1.SetError(TextBox1, "")
        End If
    End Sub

الطريقة الثانية هي استخدم الدالة

Isnumeric()

Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
        
If IsNumeric(TextBox2.Text) = False Then
            MsgBox("ادخل قيمة رقمية")
            TextBox1.Focus()
        Else
        End If
    End Sub

الطريقة هذه ممكن نستخدمها للتأكد من القيم عند ترك مربع النص ولكن على حدثين

Validated و Validating

Private Sub TextBox2_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox3.Validated
        If TextBox2.Text = "" Or IsNumeric(TextBox2.Text) = True Then
            ErrorProvider1.SetError(TextBox2, "")
        End If
    End Sub

    Private Sub TextBox2_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox3.Validating
        If TextBox2.Text = "" Or IsNumeric(TextBox2.Text) = False Then
            ErrorProvider1.SetError(TextBox2, "please Enter a number and you cannot leave it empty")
            TextBox2.Focus()
        End If
    End Sub

اما إذا رغبت بالتأكد عند النقر على احسب فهذه هي الطريقة..

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If TextBox1.Text = "" Or TextBox2.Text = "" Then
            MsgBox("You must Enter a number in the last textboxes")
        Else
            Dim a, b, c As Decimal
            a = TextBox1.Text
            b = TextBox2.Text / 100
            c = a * b
            TextBox3.Text = c
        End If
    End Sub
#15

ملاحظات:

*الطريقة الأولى والثانية تبين الخطأ من لحظة وقوعه (ويوجد طريقة تمنع المستخدم من الإكمال الإ إذا قام بالتصحيح لكن لم استطع تذكرها)

*الطريقة الثالثة عند تبين ال×طأ عندما تضغط على أي شي خارج مربع النص

أي في لحظة المغادرة

*الطريقة الرابعة تبين الخطأ عند الضغط على زر احسب

*وطبعا يمكن استخدام Errorprovider في اي وقت تريد

*ايضا يوجد طريقة اخرى وهي انك من الأساس تستخدم اداة ماتقبل الإ قيم رقمية مثل

NumericUpDown

يبقى بس تتأكد من انه مايتركه فراغ لأنك لازم تحذف الصفر

*بالنسبة لشرح الدالة isnumeric

الدالة هذه هي دالة موجودة في الدوت نت ووظيفتها التأكد من ان القيم المدخله هي ارقام وأرقام فقط

ونقوم بإدخال متغير واحدلها وهو اسم مربع النص المراد التأكد هل القيمة المدخلة له رقمية ام لأ وتوضع داخل دالة شرط

وطريقة الكتابة

if isnumeric ( ) then

الشروط حيث تضع اسم مربع النص مابين الأقواس

إفتراح:

ليش ماتحط زر مسح الحقول وتحاول تبرمج الزر على انه يمسح كل الحقول

لأنه مش معقوله نعيد فتح النموذج في كل مرة ادخل فيها قيمة

والله أعلم

هذا الكود مني وماأقدر اقول انه صح خصوصا اني مبتدئ زيكم

إذا كان احد عنده احسن منه يتفضل

مع الشكر والتحيه

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…