منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : تفقيط المبالغ داخل GridControl و خارجها كـ تلميح
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
تفقيط المبالغ المالية داخل صفوف القريد و خارجها و اظهارها كـ تلميح

السلام عليكم و رحمة الله و بركاته
منذ فترة طلب مني تفقيط للمبالغ المالية داخل صفوف القريد .
نظراً لان المبالغ كبيرة و قد تحدث قراءة خاطئة لها .
و كذلك نص التفقيط سيكون كبيراً مما سيسبب تشويه داخل القريد.
فجائت فكرة ادراج التفقيط كتلميح عبر ToolTipController, عند الوقوف على اي قيمة مالية يظهر التفقيط كنص تلميحي.

فكان الحل لهذه الفكرة كما يلي:
ندرج اداة ToolTipController التابعة لـ DevExpress  ونضبط بعض الخصائص لها

AutoPopDelay=8000
intialdelay=100
ToolTipStyle=Windows7
ToolTipType=SuperTip

طبعاً هذه الخصائص تعود لرغبتك .


ثم نضبط خاصية ToolTipController الخاصة بـ GridControl الى ToolTipController1  .

بعد ذلك ندخل الى الحدث ToolTipController1_GetActiveObjectInfo لنكتب الكود الخاص بالعملية :

PHP كود :
   Private Sub ToolTipController1_GetActiveObjectInfo(sender As ObjectAs DevExpress.Utils.ToolTipControllerGetActiveObjectInfoEventArgsHandles ToolTipController1.GetActiveObjectInfo

        If e
.SelectedControl Is GridControl1 Then
            Dim view 
As GridView GridControl1.GetViewAt(e.ControlMousePosition)
 
           If view Is Nothing Then Exit Sub
            Dim info 
As GridHitInfo view.CalcHitInfo(e.ControlMousePosition)
 
           If info.Column Is Nothing Then Return
 
           If info.Column.Name "Prc_Coast" Then

                If info
.InRowCell Then

                    Dim text 
As String view.GetRowCellDisplayText(info.RowHandleinfo.Column)
 
                   Dim cellKey As String info.RowHandle.ToString() & " - " info.Column.ToString()
 
                   e.Info = New DevExpress.Utils.ToolTipControlInfo(cellKeyTafkeet(text))
 
               End If
 
               Dim hi As GridHitInfo view.CalcHitInfo(e.ControlMousePosition)

 
               'تلميح التفقيط في الفوتر
                If hi.HitTest = GridHitTest.Footer Then
                    Dim text As String = info.Column.SummaryText
                    Dim cellKey As String = info.RowHandle.ToString() & " - " & info.Column.ToString()
                    e.Info = New DevExpress.Utils.ToolTipControlInfo(cellKey, Tafkeet(text))

                End If
                '
تلميح التفقيط بعد التجميع
                If hi
.HitTest GridHitTest.RowFooter Then
                    Dim text 
As String view.GetRowFooterCellText(info.RowHandleinfo.Column)
 
                   Dim cellKey As String info.RowHandle.ToString() & " - " info.Column.ToString()
 
                   e.Info = New DevExpress.Utils.ToolTipControlInfo(cellKeyTafkeet(text))

 
               End If

 
           End If
 
       End If
 
       'تلميح التفقيط مربعات نصوص
        If e.SelectedControl Is Txt_Pro_Coast Then
            e.Info = New DevExpress.Utils.ToolTipControlInfo(Txt_Pro_Coast, Tafkeet(Txt_Pro_Coast.EditValue))
        ElseIf e.SelectedControl Is Txt_Pro_Akttab Then
            e.Info = New DevExpress.Utils.ToolTipControlInfo(Txt_Pro_Akttab, Tafkeet(Txt_Pro_Akttab.EditValue))
        End If
    End Sub 
الكود يقسم الى اربع اقسام:

القسم الاول: نحدد فيه العمود المستهدف المراد تفقط قيم الخلايا بداخله و هو هنا Prc_Coast
يمكنك تفقيط اكثر من عمود اذا احببت.
القسم الثاني:يخص عمليات التجميع في الفوتر الخاص بالقريد .
القسم الثالث: يخص عمليات التجميع حسب فئة محددة (اذا كانت القريد معدة للتجميع حسب عمود معين).
القسم الرابع:هو لتفقيط مربعات نصوص على النموذج.

بالنسبة للدالة Tafkeet فهي كما يلي:
PHP كود :
'دالة التفقيط
    Private Function Tafkeet(Value As String) As String
        If Value Is Nothing Then Return Nothing
        Dim MER As New mero5000.mero
        If Value.Contains(",") Then Value = Value.Replace(",", "")
        Dim Result As String = String.Empty
        Result = MER.mero5000(If(Long.TryParse(Value, Nothing), Value, 0))
        Return Result
    End Function 
تم استخدام كلاس التفقيط الخاص بالاخ Mero5000 , يمكنك استخدام اي كلاس للتفقيط لديك المهم في الموضوع هو الفكرة.
الدالة تزيل الفواصل ان وجدت داخل الخلايا لانني استخدم تنسيق خاص للمبالغ يفصل بين المراتب , يمكنك التعديل على الدالة اذا كانت الارقام لديك تخلو من الفواصل.
بمجرد مرور الماوس على الحقل المستهدف سيظهر لك التلميح كما في الصور التالية




صور توضيحية
من داخل القريد

مربعات نصوص



بالتوفيق للجميع