تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] مشكلة عند فقدان التركيز ؟
#1
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته

لدي نموذج يتم من خلاله ادخال
اسم المادة
سعر الشراء
سعر المبيع
ملاحظات

ان كل من حقل الشراء وحقل المبيع، تم كتابة كود مشابه لهما عند فقدان التركيز، ودلك من اجل العمل على تنسيق الرقم المدخل
اي ادا الرقم 2500 سوف يظهر 2,500

والكود هو
كود :
Private Sub txt_Mabee_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txt_Mabee.LostFocus
        If sender.Text.Trim <> "" Then
            sender.Text = FormatNumber(Val(sender.Text), 0)
        End If

        txt_Mabee.BackColor = Color.White
        show_rabeh()
    End Sub

الامور كلها سليمة ورائعة......

ولكن لاحظت ان تمت العودة لسبب ما الى تلك الحقول، فانه عند فقدان التركيز عنها تحصل المشكلة وهي ان الرقم المدخل من قبل المستثمر يتغير
ادا كان المدخل مثلا 1850 يصبح 1
واذا كان المدخل مثلا 2400 يصبح 2
وادا كان المدخل مثلا 4800 يصبح 4


ارجو تصحيح الكود لتجنب حدوث لتغيير في مدخلات المستثمر

والف شكر


الملفات المرفقة صورة/صور
               
الرد }}}}
تم الشكر بواسطة:
#2
اخى الكريم

اسف لردى بدون ان افهم المطلوب جيدا

ولكن الكود الذى وضعته يقول انه عند فقدان التركيز يصبح فورمات الرقم فى التكست بوكس رقم صحيح بدون فواصل عشريه لانك وضعت صفر هنا فى هذا السطر

sender.Text = FormatNumber(Val(sender.Text), 0)

ارجو التوضيح اكثر (ومن الممكن ان يكون احد من الاعضاء فهم المطلوب اكثر منى)
"الناس نيام فإذا ماتوا إنتبهوا"
الرد }}}}
تم الشكر بواسطة: @@أبورائد@@ , sherif khalid
#3
السلام عليكم ورحمة الله وبركاته


لأن التنسيق يصلح للعرض فقط وليس لإدخال البيانات

زيادة توضيح: إذا كان الموجود في مربع النص 123,456 فعند محاولة قراءته سينقطع الرقم عند الفاصلة التنسيقية وسيجد أول رقم وهو هنا 123 ويتجاهل 456, لها لا تتم قراءة الرقم المعروض كتنسيق لحفظه في قاعدة البيانات فهذه كارثة.

هناك حل إذا كنت تقوم بقراءة الرقم قبل وضعه في قاعدة البيانات وهو أن تحذف الشكل التنسيقي قبل وضعه في قاعدة البيانات كالتالي
كود :
Dim d As Integer = Me.TextBox1.Text.Replcae("," , "")



السلام عليكم ورحمة الله وبركاته
الرد }}}}
#4
السلام عليكم...

* سبقني أخي أبو رائد - و لكن في الزيادة إفادة *

السبب هو وجود فاصلة الآلاف بعد استعمال الدالة FormatNumber. فعند العودة إلى مربع النص (بعد أن ظهرت به فاصلة الآلاف) ثم الخروج منه فإنه عند استدعاء الدالة FormatNumber هذه المرة سيعتبر أن فاصلة الآلاف رمز غير رقمي، و بالتالي سيتم تجاهل كل ما بعدها ما يؤدي إلى بتر العدد!

يمكن التحايل على الأمر بتخزين محتوى مربع النص دون فاصلة الآلاف في الخاصية Tag لمربع النص عند فقدان التركيز (LostFocus) و استعادة تلك القيمة عند عودة التركيز (GotFocus). مثلاً:

كود :
Private Sub TextBox1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.GotFocus
        sender.Text = sender.Tag
    End Sub

    Private Sub TextBox1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.LostFocus
        If sender.Text.Trim = "" Then
            sender.Tag = ""
        Else
            sender.Tag = sender.Text.Replace(",", "")    ' نحتفظ بالعدد دون فاصلة الآلاف
            sender.Text = FormatNumber(Val(sender.Text), 0)
        End If
    End Sub

نرجو الاستفادة و السلام.
بِسْمِ اللهِ الرَّحْمَنِ الرَّحِيمِ ( وَ مَا تُقَدِّمُوا لِأَنفُسِكُم مِّنْ خَيْرٍ تَجِدُوهُ عِندَ اللهِ هُوَ خَيْراً وَ أَعْظَمَ أَجْراً ) صَدَقَ اللهُ الْعَظِيمُ
الرد }}}}
#5
وعليكم السلام ورحمة الله وبركاته

اخي جرب هذا الكود وبأذن لله سينجح تفضل :

PHP كود :
Private Sub TextBox1_LostFocus(sender As ObjectAs EventArgsHandles TextBox1.LostFocus
        Dim val 
As Integer
        val 
TextBox1.Text

        TextBox1
.Text val.ToString("###,###")

    
End Sub 
الرد }}}}
تم الشكر بواسطة: ناجي إبراهيم , learning.net , kafi2030 , kslawy
#6
الف شكر لكافة الاخوة الزملاء
على التوضيح الاكثر من رائع


بارك الله فيكم، وبهذا المنتدى الرائع

احب ان انوه الى انه بعد تجربة المقترحات
وجدت مايلي

بالنسبة الى الاخ eng.khalidvb
الكود الذي تفضلت به رائع وعمل بشكل جيد، ولكنه كان بحاجة الى اضافة سطر واحد، لتجنب حدوث خطأ في حال عدم قيام المستثمر بادخال اي قيمة
وذلك باسناد القيمة 0 للحقل في كان الحقل فارغ

'ok
كود :
'Dim val As Integer
        'If Trim(txt_Shra.Text) = "" Then txt_Shra.Text = 0
        'val = txt_Shra.Text
        'txt_Shra.Text = val.ToString("###,###")


الكود والحل المقدم من الاخ ناجي ابراهيم عمل بشكل رائع

الكود المقدم من الاخ / ابو رائد
من خلال كتابة الكود، ظهرت رسالة خطأ
وفق الصورة المبينة


الملفات المرفقة صورة/صور
   
الرد }}}}
تم الشكر بواسطة:
#7
السلام عليكم...

الخطأ في كود الأخ أبو رائد هو خطأ إملائي فقط Big Grin حيث كتب الحرف c قبل الحرف a (أي Replcae و الصحيح هو Replace)

سلام.
بِسْمِ اللهِ الرَّحْمَنِ الرَّحِيمِ ( وَ مَا تُقَدِّمُوا لِأَنفُسِكُم مِّنْ خَيْرٍ تَجِدُوهُ عِندَ اللهِ هُوَ خَيْراً وَ أَعْظَمَ أَجْراً ) صَدَقَ اللهُ الْعَظِيمُ
الرد }}}}
تم الشكر بواسطة: kafi2030 , @@أبورائد@@


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  مشكلة عند التعامل مع DevExpress آمل أن أجد لها حلًا أحمد إبراهيم سعد 10 203 23-09-17, 11:47 PM
آخر رد: أحمد إبراهيم سعد
  [VB.NET] مشكلة اثناء تنفيذ المشروع ظاهر علي 2 61 23-09-17, 10:56 AM
آخر رد: aliday03
  [VB.NET] مشكلة معايا فى الTEXTBOX MOSTAFA.KAMEL 12 155 22-09-17, 10:45 PM
آخر رد: MOSTAFA.KAMEL
  مشكلة في حفظ الصورة Fantastico 3 80 22-09-17, 04:46 PM
آخر رد: Fantastico
  مشكلة الفورم الشفاف محمود صالح 5 186 22-09-17, 12:47 AM
آخر رد: Fantastico
  [سؤال] ما حل مشكلة تعارض Task مع Sleep؟ السندبااد 6 132 20-09-17, 02:49 PM
آخر رد: السندبااد
  مشكلة في قراءة قيمة من الريجستري سعود الشامان 12 186 19-09-17, 07:59 PM
آخر رد: سعود الشامان
  [سؤال] مشكلة في حذف و تعديل بيانات DataGridView mohammed alnour 4 131 16-09-17, 01:01 AM
آخر رد: mohammed alnour
  [VB.NET] مشكلة في تعديل المشروع مصمم هاوي 9 523 15-09-17, 06:54 PM
آخر رد: مصمم هاوي
  [VB.NET] مشكلة طباعه بيانات من DataGridview رومنس الشوق 4 664 14-09-17, 06:24 PM
آخر رد: محمود صالح

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


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