تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] التحكم في صلاحيات المستخدمين Devexpress Ribbon Control
#1
السلام عليكم ورحمة الله وبركاته
اسعد الله جميع اوقاتكم بكل خير
اتمنى ان يكون الجميع بصحه وعافيه
اخواني الاعزاء قمت بتطبيق الشرح المستخدم في الفديو التالي https://youtu.be/htMS66-6KVc ل menu strip
ولكن لم استطع تطبيق الشرح على ادوات devexpress ribbon control السؤال كيف استطيع ان اطبق الشرح علي ادوات Devexpress Ribbon Control
لا إله إلا الله وحده لا شريك له، لهُ الملك وله الحمد وهو على كل شئ قدير،،،،
سبحان الله وبحمده سبحان الله العظيم Heart
الرد }}}
تم الشكر بواسطة: ابو ليلى , asemshahen , asemshahen5 , asemshahen5
#2
بشاشة تسجيل اسم المستخدم و كلمة المرور ..

هكذا مثلا ..

كود :
             MDIParent1.BarButtonItem1.Enabled = Dreader!USERS_Formula1
 MDIParent1.BarButtonItem2.Enabled = Dreader!USERS_Formula2                                    
تحياتي
قناتنا على اليوتوب
الرد }}}
تم الشكر بواسطة: ابو ليلى , asemshahen , asemshahen5
#3
أخي عبدالعزيز للأسف لم أستطيع أن أعدل على الكود التالي:
كود :
If dr("P26") = False Then
                   frm_mainscreen.Show()
                   frm_mainscreen.MenuStrip1.Enabled = True
                   Me.Hide()
                   frm_mainscreen.P1.Enabled = dr("P1")
                   frm_mainscreen.P2.Enabled = dr("P2")
                   frm_mainscreen.P3.Enabled = dr("P3")
                   frm_mainscreen.P4.Enabled = dr("P4")
                   frm_mainscreen.P5.Enabled = dr("P5")
                   frm_mainscreen.P6.Enabled = dr("P6")
                   frm_mainscreen.P7.Enabled = dr("P7")
                   frm_mainscreen.P8.Enabled = dr("P8")
                   frm_mainscreen.P9.Enabled = dr("P9")
                   frm_mainscreen.P10.Enabled = dr("P10")
                   frm_mainscreen.P11.Enabled = dr("P11")
                   frm_mainscreen.P12.Enabled = dr("P12")
                   frm_mainscreen.P13.Enabled = dr("P13")
                   frm_mainscreen.P14.Enabled = dr("P14")
                   frm_mainscreen.P15.Enabled = dr("P15")
                   frm_mainscreen.P16.Enabled = dr("P16")
                   '    frm_mainscreen.P17.Enabled = dr("P11")
                   '   frm_mainscreen.P18.Enabled = dr("P11")
                   '     frm_mainscreen.P30.Enabled = dr("P16")

                   dr.Close()
                   con.Close()
               Else
                   MsgBox("عفواً لا يوجد لديك صلاحية لدخول البرنامج يرجى مراجعة مدير النظام", MsgBoxStyle.Critical, MsgBoxStyle.OkOnly)
               End If
           End If
       Catch ex As Exception
           MsgBox(ex.Message)
       Finally
           con.Close()
       End Try
اذا تفضلت مشكوراً تساعدني على حل هذه المشكلة
لا إله إلا الله وحده لا شريك له، لهُ الملك وله الحمد وهو على كل شئ قدير،،،،
سبحان الله وبحمده سبحان الله العظيم Heart
الرد }}}
تم الشكر بواسطة: ابو ليلى , ابو ليلى , asemshahen , asemshahen5 , asemshahen5
#4
أخي الكريم محمد العامر
لست أدري طبيعة الكد لديك و محتوياته
بالنسبة لي .. أنا أستعمل بزر تسجيل الدخول هذا الكود .. حاول الاستنباط منه .. و حذف ما لا يليق بك
كود :
   Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
       Try
           If Me.ComboBox1.Text = "" Then
               ErrorProvider1.SetError(Me.ComboBox1, "الرّجاء كتابة اسم المستخدم")
               MsgBox("الرّجاء كتابة اسم المستخدم", vbCritical + vbMsgBoxRight + vbMsgBoxRtlReading, "خطأ غير متوقّع")
               Me.ComboBox1.Focus()
               Exit Sub
           End If
           If Me.TextBox2.Text = "" Then
               ErrorProvider1.SetError(Me.TextBox2, "الرّجاء كتابة كلمة المرور")
               MsgBox("الرّجاء كتابة كلمة المرور", vbCritical + vbMsgBoxRight + vbMsgBoxRtlReading, "خطأ غير متوقّع")
               Me.TextBox2.Focus()
               Exit Sub
           End If

           Dim Dr1 As OleDbDataReader
           Dim Cmd1 As New OleDbCommand("SELECT [USERS_Name],[USERS_Password] From TBL_USERS Where USERS_Name = '" & Me.ComboBox1.Text & "'")
           Cmd1.Connection = Conne_2020
           If Conne_2020.State = ConnectionState.Closed Then Conne_2020.Open()
           Dr1 = Cmd1.ExecuteReader
           If Dr1.Read Then
               If UCase(Dr1(1)) = UCase(TextBox2.Text) Then
                   Dim Sql = "SELECT * From TBL_USERS WHERE USERS_Name='" & ComboBox1.Text & "'"

                   Dr1.Close()
                   Dr1.Dispose()

                   Dim Adp = New OleDb.OleDbDataAdapter(Sql, Conne_2020)
                   Dim Ds = New DataSet
                   Adp.Fill(Ds)

                   Dim Dt = Ds.Tables(0)
                   If Dt.Rows.Count > 0 Then

                       Dim Dr2 As DataRow
                       Dr2 = Dt.Rows(0)

                       MDIParent1.BarButtonItem1.Enabled = Dr2!USERS_Formula1
                       MDIParent1.BarButtonItem2.Enabled = Dr2!USERS_Formula2
                       MDIParent1.BarButtonItem3.Enabled = Dr2!USERS_Formula3
                       MDIParent1.BarButtonItem4.Enabled = Dr2!USERS_Formula4
                       MDIParent1.BarButtonItem5.Enabled = Dr2!USERS_Formula5
                       MDIParent1.BarButtonItem6.Enabled = Dr2!USERS_Formula6
                       MDIParent1.BarButtonItem7.Enabled = Dr2!USERS_Formula7
                       MDIParent1.BarButtonItem8.Enabled = Dr2!USERS_Formula8
                       MDIParent1.BarButtonItem9.Enabled = Dr2!USERS_Formula9
                       MDIParent1.BarButtonItem10.Enabled = Dr2!USERS_Formula10
                       MDIParent1.BarButtonItem11.Enabled = Dr2!USERS_Formula11
                       MDIParent1.BarButtonItem12.Enabled = Dr2!USERS_Formula12

                       Name_Users = Dr2!USERS_FullName

                       Password_Users = TextBox2.Text
                       XtraMessageBox.Show("                         سندس لتسيير الإمتحانات الرسميّة .. ترحّب بكم" & ChrW(13) & ChrW(10) & ChrW(13) & ChrW(10) & "  تمّ تسجيل الدخول إلى البرنامج على السّاعة : " & (DateAndTime.Now.ToString))

                       MDIParent1.Show()
                       MDIParent1.Enabled = True
                       MDIParent1.BarStaticItem3.Caption = Name_Users

                       Me.Dispose()
                       Me.Close()

                   End If
               Else
                   Error_Show_Library_Management_First()
                   Me.TextBox2.Focus()
               End If
           Else
               Error_Show_Library_Management_Second()
               Me.ComboBox1.Focus()
               Exit Sub
           End If
           Dr1.Close()
           Conne_2020.Close()
       Catch ex As Exception
           XtraMessageBox.Show(ex.Message)
       End Try

   End Sub

ما يمكن فعله هو تعطيل ال BarButtonItem
المذكورة حسب الاسم بالكود و المشار إليها بالأسهم الحمراء كمثال ..


طيّب .. سيكون عددها كبير .. و بالتالي سيكون عدد الحقول من Yes - No

عن نفسي .. لم أجد حل آخر

من المفروض يتم تعطيل ال RibbonPage المشار إليها بالصورة أدناه

لكن لم أتوصّل إلى حل لهذه الإشكالية .. عن نفسي أتحدث
عند إستبدال ال  BarButtonItem ب RibbonPage هكذا .. سينتج خطأ ..


كود :
MDIParent1.RibbonPage1.Enabled = Dreader!USERS_Formula

يمكنك .. إخفاء ال RibbonPage تماما بهذا الشكل و بدون أي أخطاء
كود :
MDIParent1.RibbonPage1.Visible = Dreader!USERS_Formula1

أمّا تعطيل ال RibbonPage و ليس إخفاؤه
بحثت كثيرا و لم أتوصّل للحل يا غالي
تحياتي
قناتنا على اليوتوب
الرد }}}
#5
https://supportcenter.devexpress.com/Tic...ribbonpage
الرد }}}
#6
السلام عليكم و رحمة الله و بركاته

يمكنك اختصار الموضوع كما يلي

PHP كود :
       For Each page As DevExpress.XtraBars.Ribbon.RibbonPage In RibbonControl.Pages
            For Each group 
As DevExpress.XtraBars.Ribbon.RibbonPageGroup In page.Groups
                For Each link 
As BarItemLink In group.ItemLinks
                    If Not link
.Item.Name "BarBt_Login" Then
                        link
.Item.Enabled False
                    End 
If
 
               Next
            Next
        Next 
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد }}}
#7
اخي عبد العزيز البسكري
شكرا جزيلا لك فرج الله همك ونفع بعلمك
الحمد الله الكود يعمل باستثناء امكانية التحكم في RibbonPage
الاخ العزيز asemshahen5
بارك الله فيك وجزاك الله كل خير

اخي ابو ليلى
ان امكن شرح استخدام Ribbon Control في موضوع مستقل حتي تعم الفائدة علي الجميع
شكرا لك جزيل الشكر
لا إله إلا الله وحده لا شريك له، لهُ الملك وله الحمد وهو على كل شئ قدير،،،،
سبحان الله وبحمده سبحان الله العظيم Heart
الرد }}}
#8
السّلام عليكم و رحمة الله و بركاته

كل الشّكر و التقدير و الإحترام و الإمتنان موصولين للأستاذيْن الكريمين
عاصم شاهين
أبو ليلى
لما قدّماه و يقدّمانه دومًا في خدمة السائلين أمثالي
 أخي الغالي
محمد العامر
إليك الحل بالنسبة لي .. وهذا ما توصلت إليه  بالنسبة لهذا الموضوع
و هو تعطيل ال : RibbonPageGroup و ليس ال RibbonPage

قد تكون 15 أو 20 .. ليس بالأمر الكثير
ثمّ بفورم اسم المستخدم و كلمة المرور ..
كود :
                       MDIParent1.RibbonPageGroup1.Enabled = Dreader!USERS_Permission1
                       MDIParent1.RibbonPageGroup2.Enabled = Dreader!USERS_Permission2
                       MDIParent1.RibbonPageGroup3.Enabled = Dreader!USERS_Permission3
لأنّك حتى لو استعلمت كود أستاذنا الفاضل أبو ليلى
أو كود أستاذنا الفاضل عاصم شاهين .. بعد تحويله
كود :
   Private Sub RibbonControl1_MouseDown(sender As Object, e As MouseEventArgs) Handles RibbonControl1.MouseDown
       Dim hi As RibbonHitInfo = RibbonControl1.CalcHitInfo(e.Location)
       If hi.Page Is RibbonPage2 Then
           DXMouseEventArgs.GetMouseArgs(e).Handled = True
       End If
   End Sub
لن تتمكن من التحكم .. بخصوص صلاحيات المستخدمين بالفورم الأساسي الذي يخص اسم المستخدم و كلمة المرور
نحن نريد أن نتيح للمستخدم الأول الفورم 1 و الفورم 2
و نمنع المستخدم الثاني من الفورم 3 و الفورم 4 .. كمثال
و بالتالي .. حسب رأيي المتواضع
استعمل هذه الطريقة و هي تفي بالغرض تماما
و الله الموفّق و الله المستعان
إحتراماتي للجميع
قناتنا على اليوتوب
الرد }}}
تم الشكر بواسطة: asemshahen , asemshahen5 , asemshahen5 , ابو ليلى
#9
(18-07-20, 09:58 PM)عبد العزيز البسكري كتب :
السّلام عليكم و رحمة الله و بركاته

كل الشّكر و التقدير و الإحترام و الإمتنان موصولين للأستاذيْن الكريمين
عاصم شاهين
أبو ليلى
لما قدّماه و يقدّمانه دومًا في خدمة السائلين أمثالي
 أخي الغالي
محمد العامر
إليك الحل بالنسبة لي .. وهذا ما توصلت إليه  بالنسبة لهذا الموضوع
و هو تعطيل ال : RibbonPageGroup و ليس ال RibbonPage

قد تكون 15 أو 20 .. ليس بالأمر الكثير
ثمّ بفورم اسم المستخدم و كلمة المرور ..
كود :
                       MDIParent1.RibbonPageGroup1.Enabled = Dreader!USERS_Permission1
                       MDIParent1.RibbonPageGroup2.Enabled = Dreader!USERS_Permission2
                       MDIParent1.RibbonPageGroup3.Enabled = Dreader!USERS_Permission3
لأنّك حتى لو استعلمت كود أستاذنا الفاضل أبو ليلى
أو كود أستاذنا الفاضل عاصم شاهين .. بعد تحويله
كود :
   Private Sub RibbonControl1_MouseDown(sender As Object, e As MouseEventArgs) Handles RibbonControl1.MouseDown
       Dim hi As RibbonHitInfo = RibbonControl1.CalcHitInfo(e.Location)
       If hi.Page Is RibbonPage2 Then
           DXMouseEventArgs.GetMouseArgs(e).Handled = True
       End If
   End Sub
لن تتمكن من التحكم .. بخصوص صلاحيات المستخدمين بالفورم الأساسي الذي يخص اسم المستخدم و كلمة المرور
نحن نريد أن نتيح للمستخدم الأول الفورم 1 و الفورم 2
و نمنع المستخدم الثاني من الفورم 3 و الفورم 4 .. كمثال
و بالتالي .. حسب رأيي المتواضع
استعمل هذه الطريقة و هي تفي بالغرض تماما
و الله الموفّق و الله المستعان
إحتراماتي للجميع

جزاك الله خير اخي عبدالعزيز
لاحظت بأنك تقوم بتعطيل جميع محتويات Ribbon Control من Ribbon Page Group و Ribbon Page ثم بناء على الصلاحيات في قاعدة البيانات يتم تنشيط محتويات Ribbon Page Group و Ribbon Page 
هل هذا صحيح ؟؟
لا إله إلا الله وحده لا شريك له، لهُ الملك وله الحمد وهو على كل شئ قدير،،،،
سبحان الله وبحمده سبحان الله العظيم Heart
الرد }}}
تم الشكر بواسطة: ابو ليلى , asemshahen5 , asemshahen5
#10
السّلام عليكم و رحمة الله و بركاته
يبدو أنّك لم تقرأ جيدا ما كتبته أخي الكريم محمد العامر
تحياتي
قناتنا على اليوتوب
الرد }}}
تم الشكر بواسطة: ابو ليلى , asemshahen5 , asemshahen5



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


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