04-10-12, 04:35 AM (آخر تعديل لهذه المشاركة : 04-10-12, 04:43 AM {2} بواسطة تركي الحلواني.)
السلام عليكم ورحمة الله وبركاته
كيف يمكننى تلوين ( خلية محسوبة ) فى الداتا جريد اذا تغيرت قيمتها
بمعنى عند تعبئة الداتا جريد مثلا تكون قيمة الخلية 1000
ونفترض اننا اضفنا بعض القيم إلى أعمدة أخرى واصبح مجموع الخلية سابقة الذكر 1100 اريده ان يتم تلوينه كى أعرف ان تلك الخلية هى التى تم تعديلها للمراجعة ؟؟
عند فتح الفورم تكون قيمة الخلية بالعامود الرابع مثلا 1000
تم تعديل قيمة خلايا بالعامود الأول والثانى ( والذى يصب مجموعهم ) بالعامود الرابع وبالتالى تغير مجموع الخلية بالعامود الرابع الى ( 1100 ) كيف يمكننى تلوين الخلية التى تغيرت فقط ( بالعامود الرابع )
الأن فى المثال لديك ثلاث أعمدة العمود الثالث هو حاصل ضرب العمود الأول والثانى تم وضع قيمه للعمود الثالث ( بحيث لو تخطى 1000 يتم تغيير لون الخليه التى تغيرت)
04-10-12, 04:35 PM (آخر تعديل لهذه المشاركة : 04-10-12, 04:41 PM {2} بواسطة تركي الحلواني.)
amgadtamer كتب :الأن فى المثال لديك ثلاث أعمدة العمود الثالث هو حاصل ضرب العمود الأول والثانى تم وضع قيمه للعمود الثالث ( بحيث لو تخطى 1000 يتم تغيير لون الخليه التى تغيرت)
أشكرك أخى الكريم
ولكنى اريد تلوين الخلية ليست اذا كانت قيمتها تخطت 1000 انا اريد تلوينها اذا تغيرت قيمتها لأى قيمة
عند تعبئة الداتا جريد تكون الأعمدة بها قيم افتراضية
المبلغ الضريبة الاجمالى
100 10 110 هنا يكون اللون كما هو دون اى تغيير لعدم عمل اى تعديلات
بعد التعديل يكون الأتى
المبلغ الضريبة الاجمالى
200 20 220 هنا يتم تلوين الموجود بخلية الإجمالى فقط
05-10-12, 03:18 PM (آخر تعديل لهذه المشاركة : 05-10-12, 03:27 PM {2} بواسطة تركي الحلواني.)
amgadtamer كتب :المثال بعد التعديل
بارك الله فيك أخى الفاضل على توضيح الفكرة قمت بتعديل جزء فى الكود وهو إلغاء دالة IF فى الجزء EditingControlShowing لكى يقوم بتنفيذها على أى خلية كذلك عدلت فى الجزء Textbox_TextChanged واشرت إلى اسم العامود
كود :
Private Sub DGV1_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles DGV1.EditingControlShowing
Dim textinserted As TextBox = CType(e.Control, TextBox)
AddHandler textinserted.TextChanged, AddressOf Textbox_TextChanged
End Sub
كود :
Private Sub Textbox_TextChanged(sender As Object, e As System.EventArgs)
Me.DGV1.Item("e_asay_tot_col", Me.DGV1.CurrentRow.Index).Style.BackColor = Color.Yellow
Me.DGV1.Item("e_mos_tot_col", Me.DGV1.CurrentRow.Index).Style.BackColor = Color.Yellow
End Sub
والحمد لله الكود شغال و 100 / 100
طلب اخير من فضلك وهو هل ممكن تشرح لى الكود الموجود فى EditingControlShowing لأننى لم أفهمه وأود توضيحه ؟؟
سؤال: بفرض تم تعديل خلية بالخطأ وتم تلوينها وأثناء المراجعة تم إرجاعها إلى قيمتها الأصلية هل من الممكن إلغاء التلوين حينها ( ترجع زى ماكانت على أساس انه لم يتم التعديل ) أم أن هذا غير منطقى من الأساس ؟؟
تم وضع if لكى نحدد أعمدة الداتاجريد التى بتغييرها تؤثر فى قيمة خلية الإجمالى عموما المثال يتم قنص حدث تغيير نص خلية الداتاجريد (datagridviewtextboxcell) عن طريق addhandler ثم عمل delegation لحدث textchanged
أما لو حدث تغيير بالخطأ فهذا الكود لن يفيد لكن تستطيع وضع رسالة تأكيد للمستخدم للتأكيد
أما لو أردت تغيير اللون فى حالة الخطأ يمكن إستخدام ملف xml لحفظ بيانات الداتاجريد ومقارنتها أو إستخدام قاعدة بيانات