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

تغير لون خليه في الداتا جريد

مغلق
بدأه aljohara في 16 ديسمبر 2005 · 7 رد · 4,852 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كيف لي تلوين خليه في جدول مع العلم ان هذا الخليه سوف تلون على حسب قيمتها مثلا

لوقيمتها 1 تلون ازرق

2 تلون اخضر وهكذا

مع العلم ان هذا الجدول في الداتا قريد والقيم تاخذ من داتا بيس مربوطه بالفورم وهي من نوع sql server

اتمنى مساعدتي ولو بمثال مشابه او مقارب للفكره

وشكرا

تم تعديل هذه المشاركة بواسطة الغملاسي في 16 ديسمبر 2005 في 18:50

#2

السلام عليكم

هنالك عدة طرق لعمل ذلك كما هو منوه عليه في الـ FAQ , أسهلها هي أن نقوم بإنشاء Component من نوع DataGridTextBoxColumn , وفي هذا الـ Component نقوم بإختبار القيمة الممررة من الـ Cell في الـ DataGrid

بشكل تلقائي ( أي لا تحتاج ان تكتب اكواد في طريقة التمرير ) فقط تحتاج التحقق من القيمة قبل تلوينها لا أكثر

هذا الـ Component سنستنسخ منه كلما إنشأنا grid column style في الـ Table style إليك المثال التالي

 Dim grdColStyle1 As New DataGridblueColorTextBoxColumn
            With grdColStyle1
                .MappingName = "age"
                .HeaderText = "أعمار خيالية"
                .Width = 50
                .NullText = String.Empty
            End With

تلاحظ اسم العنصر الذي صنعناه هو DataGridblueColorTextBoxColumn

الان نشاهد النصوص البرمجية في هذا العنصر.

Protected Overloads Overrides Sub Paint(ByVal g As Graphics, ByVal bounds As Rectangle, ByVal source As CurrencyManager, ByVal rowNum As Integer, ByVal backBrush As Brush, ByVal foreBrush As Brush, ByVal alignToRight As Boolean)
        Try
            Dim o As Object
            o = Me.GetColumnValueAtRow(source, rowNum)
            If (Not (o) Is Nothing) Then

                'Make a condition here..
                If IsNumeric(o) Then
                    If (o >= 60) Then
                        backBrush = New SolidBrush(Color.Blue)
                        foreBrush = New SolidBrush(Color.White)
                    End If
                End If


            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        Finally
            MyBase.Paint(g, bounds, source, rowNum, backBrush, foreBrush, alignToRight)
        End Try

    End Sub

تلاحظ ان إذا كان القيمة الممررة من الخلية أكبر من أو تساوي 60 سنقوم بتلوين هذا الخلية باللون الازرق

شاهد المثال المرفق للإيضاح , بالتوفيق إن شاء الله

ملاحظة هذه الطريقة و النصوص تم إستخدمها من موقع FAQ و تم التعديل عليها من قِبلِنا.

DataGridColors.zip

تم تعديل هذه المشاركة بواسطة الغملاسي في 17 ديسمبر 2005 في 15:25

في المثال يتضح المقال

#3

السلام عليكم

اريد اضافة الى ما ذكره اخى الغملاسى للتحكم فى تنسيق خلية على حسب شرط معين وما ساقوم باضافته ينطبق فقط على VB.NET2005

حيث تاتى اداة اكثر تطورا وامكانيات فى التحكم فى التنسيق وما الى ذلك الاداة الجديدة هى DataGridView

حيث لديها الحدثCellFormatting والذى يقع عند البدء فى ملء الاداة بالبيانات من اى مصدر بيانات

ويتم تنفيذه قبل ظهور البيانات

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

Private Sub DataGridView1_CellFormatting(ByVal sender As System.Object, _
  ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) _
  Handles DataGridView1.CellFormatting
    
    ' Check if this is the right column.
    If DataGridView1.Columns(e.ColumnIndex).Name = "Price" Then
        ' Check if this is the right value.
        If e.Value > 100 Then
            e.CellStyle.ForeColor = Color.Red
            e.CellStyle.BackColor = Color.Yellow
        End If
    End If
    
End Sub

VB.NET and C# Comparison

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

002.gif

=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

screen_shot_2011-05-19_at_12.44.49_pm.pn

#4

بارك الله فيك أخي , فعلاً هذه أسهل و أحكم

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

في المثال يتضح المقال

#5

السلام عليكم

شكرا الغملاسي وسولو

بصراحه اردت ان اسال

هل يمكن في داتا قريد

ان اللون خلية معينه ... حسب حقل او قيمة ثانيه

لنفرض

ان لدي ماده معينه ... لها عدد من الشعب ... شعب احيانا .. تمتلى بطلاب مسجلين

فاذا وصل عددهم الى حد معين يمنع تسجيل بها

هل من الممكن

ان اظهر لليوزر

اسم الماده مع الشعبه فقط

واذا كانت مغلقه فانها تلون بلون معين

سؤال اخر

هل يمكن تلوين صف كامل

لنفس مثال

يعني

بدال ما اروح اللون خلية

اللون كل رو

مع العلم

ان الحقل اللي راح اختبره في كلا الحالتين غير ظاهر لليوزر

يعني يعرف شعبه مغلقه او مفتوحه من الاوان دون ان يظهر له حاله

مره شكرا

بصراحه حاولت لكن ما توصلت اليه نتيجه سقيمه

لاني فكره غير علمية

وهي انني اكتب في الخلية قيم فوق بعض :wacko:

#6

ابشركم عرفت كيف اللون رو كامل على اساس

حقل غير ظاهر لليوزر

وذلك بانني جعلت الكولوم المحتوي على قيمة اللي ابي اختبرها في عامود الثالث .. وجعلت العرض كولوم صفر (حتى يكون غير مرئي لليوزر )

وبعد ذلك تم تلوين الرو على اساسه بعد اختبار بالشرط

......................................................

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

يعني ما اختبر قيمة الموجوده في خليه ... وانما اختبر شرط من حقل غير ظاهر لليوزر

ولون اللي بالخلية على اساس هذا الحقل

ما ادري سؤال وضح او لا ؟؟؟

#7

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

وذلك بدمج الحقل مراد اخراجه لليوزر مع الحقل مراد اختباره مع الاخذ بالاعتبار

عدم اظهار القيمة لليوزر

واختبار الجزء الاخير من الاستنرق

 If (Not (o) Is Nothing) Then
                Dim str As String
                str = CType(o, String)
                If str.EndsWith("register") Or str.EndsWith("REGISTER") Then
                    backBrush = New SolidBrush(Color.YellowGreen)
                    foreBrush = New SolidBrush(Color.White)

هذا بتعديل على نفس مشروع الغملاسي

شكري البالغ للجميع

#8
الغملاسي كتب:
السلام عليكم

هنالك عدة طرق لعمل ذلك كما هو منوه عليه في الـ FAQ , أسهلها هي أن نقوم بإنشاء Component من نوع DataGridTextBoxColumn , وفي هذا الـ Component نقوم بإختبار القيمة الممررة من الـ Cell في الـ DataGrid

بشكل تلقائي ( أي لا تحتاج ان تكتب اكواد في طريقة التمرير ) فقط تحتاج التحقق من القيمة قبل تلوينها لا أكثر

هذا الـ Component سنستنسخ منه كلما إنشأنا grid column style في الـ Table style إليك المثال التالي

 Dim grdColStyle1 As New DataGridblueColorTextBoxColumn
            With grdColStyle1
                .MappingName = "age"
                .HeaderText = "أعمار خيالية"
                .Width = 50
                .NullText = String.Empty
            End With

تلاحظ اسم العنصر الذي صنعناه هو DataGridblueColorTextBoxColumn

الان نشاهد النصوص البرمجية في هذا العنصر.

Protected Overloads Overrides Sub Paint(ByVal g As Graphics, ByVal bounds As Rectangle, ByVal source As CurrencyManager, ByVal rowNum As Integer, ByVal backBrush As Brush, ByVal foreBrush As Brush, ByVal alignToRight As Boolean)
        Try
            Dim o As Object
            o = Me.GetColumnValueAtRow(source, rowNum)
            If (Not (o) Is Nothing) Then

                'Make a condition here..
                If IsNumeric(o) Then
                    If (o >= 60) Then
                        backBrush = New SolidBrush(Color.Blue)
                        foreBrush = New SolidBrush(Color.White)
                    End If
                End If
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        Finally
            MyBase.Paint(g, bounds, source, rowNum, backBrush, foreBrush, alignToRight)
        End Try

    End Sub

تلاحظ ان إذا كان القيمة الممررة من الخلية أكبر من أو تساوي 60 سنقوم بتلوين هذا الخلية باللون الازرق

شاهد المثال المرفق للإيضاح , بالتوفيق إن شاء الله

ملاحظة هذه الطريقة و النصوص تم إستخدمها من موقع FAQ و تم التعديل عليها من قِبلِنا.

مرحبا

كيف اقوم بتلوين الصف بالكامل على اساس شرط معين وليكن مثلا

اذا كان DataGridblueColorTextBoxColumn أكبر من 80 عايز اغير لون الصف بالكامل للاصفر

ارجو الافادة

قال رسول الله صلى الله عليه وسلم

يكبر بن أدام ويكبر معه شيئان كثرة المال وطول العمر

صدق رسول الله صلى الله عليه وسلم

قال عمر بن الخطاب رضي الله عنه

نحن قوم أعزنا الله بالإسلام فإذا إبتغينا العزة فى غيره أذلنا الله

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

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