Imports C1.Win.C1TrueDBGrid Imports DevComponents Public Class DPMSecurity Dim SecurityData As DataSet = Globals.SecurityDaten Dim db As New clsDB Dim IntForm As Object Dim ctlcol As New Collection Dim formname As String = "" Public Function List_Form_Controls(ByRef f As Form) As String Dim counter As Integer = 0 Me.ctlcol.Clear() formname = f.Name For Each ctl As Control In f.Controls Objectanalysis(ctl) Next ' Exit Function Dim i As Integer Dim s As String = "" ' Dim cc As New ControlsCollection(f, ctlcol) 'For i = 1 To ctlcol.Count 'Dim secobj As MyFormControls = ctlcol(i) ' Try 'ReadContextMenu(secobj.MyControl.contextmenustrip) 'Catch 'End Try 'Next For i = 1 To ctlcol.Count Dim secobj As MyFormControls = ctlcol(i) s = s + vbCrLf + secobj.write_to_text() Next Return s End Function Public Sub Reset_Mainmenu(ByRef f As Form) If Globals.UseSecurityObjects = False Then Exit Sub IntForm = f formname = f.Name 'Load form DB Load_Data(f.Name) 'Load FormObjects Me.ctlcol.Clear() formname = f.Name For Each ctl As Control In f.Controls Dim typ As System.Type = ctl.GetType If LCase(typ.Name) = "menustrip" Then Dim tmpmnu As MenuStrip = ctl level = 0 For Each xx As Object In tmpmnu.Items Dim objtype As System.Type = xx.GetType If LCase(objtype.Name) = "toolstripmenuitem" Then Dim tsm As ToolStripMenuItem = xx tsm.Visible = True tsm.Enabled = True For Each subobj As Object In xx.DropDownItems If LCase(subobj.GetType.Name) = "toolstripmenuitem" Then Dim tsm1 As ToolStripMenuItem = subobj tsm1.Enabled = True tsm1.Visible = True End If Next End If Next End If Next End Sub ''' ''' Formularsecurity setzen ''' ''' Aktuelles Formular ''' ''' Public Function Set_Form_Security(ByRef f As Form) If Globals.UseSecurityObjects = False Then Exit Function IntForm = f formname = f.Name 'Load form DB Load_Data(f.Name) 'Load FormObjects Me.ctlcol.Clear() formname = f.Name For Each ctl As Control In f.Controls Objectanalysis(ctl) ' AddHandler ctl.HelpRequested, AddressOf Object_MouseDown 'ctl.ContextMenuStrip = Globals.TTContextMenuStrip 'AddHandler ctl.KeyDown, AddressOf Object_MouseDown Next Set_Security() End Function Public Function Set_Class_Security(ByRef f As Object, FName As String) IntForm = f formname = FName 'Load form DB Load_Data(formname) 'Load FormObjects Me.ctlcol.Clear() formname = f.Name For Each ctl As Control In f.Controls Objectanalysis(ctl) ' AddHandler ctl.HelpRequested, AddressOf Object_MouseDown 'ctl.ContextMenuStrip = Globals.TTContextMenuStrip 'AddHandler ctl.KeyDown, AddressOf Object_MouseDown Next Set_Security() End Function Public Function Set_Menu_Security(ByRef f As Form, ByRef menu As ToolStripMenuItem, ByVal Menuname As String) IntForm = f formname = f.Name Load_Data(f.Name) Me.ctlcol.Clear() formname = f.Name Dim ctl As Object = menu Dim typ As System.Type = ctl.GetType ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, Menuname, ctl.Name)) Set_Security() 'If Globals.Set_ToolTips = True Then ' tt.Edit_ToolTips(f, ctlcol) 'Else ' tt.Set_ToolTips(f) 'End If End Function Public Function ControlReadonly(ByRef ctlin As Control) Me.ctlcol.Clear() For Each ctl As Control In ctlin.Controls Objectanalysis_readonly(ctl) Next End Function Public Function Set_Form_Readonly(ByRef f As Form) IntForm = f Me.formname = f.Name Load_Data(f.Name) Me.ctlcol.Clear() For Each ctl As Control In f.Controls Objectanalysis_readonly(ctl) Next End Function Public Function Set_Form_Default(ByRef f As Form) IntForm = f Me.formname = f.Name Load_Data(f.Name) Me.ctlcol.Clear() For Each ctl As Control In f.Controls Objectanalysis_default(ctl) Next End Function Private Function Objectanalysis_readonly(ByRef ctl As Object) As String Dim typ As System.Type = ctl.GetType Select Case LCase(typ.Name) Case "splitcontainer" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim tmpsplit As SplitContainer = ctl For Each ctrl As Object In tmpsplit.Panel1.Controls Objectanalysis_readonly(ctrl) Next For Each ctrl As Object In tmpsplit.Panel2.Controls Objectanalysis_readonly(ctrl) Next Case "tabcontrol", "clsmytabcontrol" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim tmptabcontrol As TabControl = ctl For Each ctl In tmptabcontrol.TabPages Objectanalysis_readonly(ctl) Next Case "tabpage" Dim tmptabpage As TabPage = ctl ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, tmptabpage.Parent.Name, 1)) For Each ctl In tmptabpage.Controls Objectanalysis_readonly(ctl) Next Case "groupbox" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim tmptabpage As GroupBox = ctl For Each ctl In tmptabpage.Controls Objectanalysis_readonly(ctl) Next Case "panel" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim tmppanel As Panel = ctl For Each ctl In tmppanel.Controls Objectanalysis_readonly(ctl) Next Case "textbox" Dim x As TextBox = ctl x.BackColor = Color.LightGray x.ForeColor = Color.Black x.ReadOnly = True Case "maskedtextbox" Dim x As MaskedTextBox = ctl x.BackColor = Color.LightGray x.ForeColor = Color.Black x.ReadOnly = True Case "combobox" Dim x As ComboBox = ctl x.Enabled = False x.BackColor = Color.LightGray x.ForeColor = Color.Black Case "checkbox" Dim x As CheckBox = ctl x.Enabled = False Case "radiobutton" Dim x As RadioButton = ctl x.Enabled = False Case "comboboxtree" Dim x As Object = ctl x.enabled = False x.BackColor = Color.LightGray x.ForeColor = Color.Black Case "richtextbox" Dim x As Object = ctl x.BackColor = Color.LightGray x.ForeColor = Color.Black x.ReadOnly = True Case "button" Dim x As Button = ctl x.Enabled = False Case "listbox" Dim x As Object = ctl ctl.enabled = False Case "checkedlistbox" Dim x As Object = ctl ctl.enabled = False Case "datetimepicker" Dim x As Object = ctl ctl.enabled = False Case Else End Select End Function Private Function Objectanalysis_default(ByRef ctl As Object) As String Dim typ As System.Type = ctl.GetType Select Case LCase(typ.Name) Case "splitcontainer" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim tmpsplit As SplitContainer = ctl For Each ctrl As Object In tmpsplit.Panel1.Controls Objectanalysis_default(ctrl) Next For Each ctrl As Object In tmpsplit.Panel2.Controls Objectanalysis_default(ctrl) Next Case "tabcontrol", "clsmytabcontrol" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim tmptabcontrol As TabControl = ctl For Each ctl In tmptabcontrol.TabPages Objectanalysis_default(ctl) Next Case "tabpage" Dim tmptabpage As TabPage = ctl ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, tmptabpage.Parent.Name, 1)) For Each ctl In tmptabpage.Controls Objectanalysis_default(ctl) Next Case "groupbox" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim tmptabpage As GroupBox = ctl For Each ctl In tmptabpage.Controls Objectanalysis_default(ctl) Next Case "panel" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim tmppanel As Panel = ctl For Each ctl In tmppanel.Controls Objectanalysis_default(ctl) Next Case "textbox" Dim x As TextBox = ctl x.BackColor = Color.White x.ForeColor = Color.Black x.Enabled = True x.ReadOnly = False Case "maskedtextbox" Dim x As MaskedTextBox = ctl x.BackColor = Color.White x.ForeColor = Color.Black x.Enabled = True x.ReadOnly = False Case "combobox" Dim x As ComboBox = ctl x.Enabled = True x.BackColor = Color.White x.ForeColor = Color.Black Case "checkbox" Dim x As CheckBox = ctl x.Enabled = True Case "radiobutton" Dim x As RadioButton = ctl x.Enabled = True Case "comboboxtree" Dim x As Object = ctl x.enabled = True x.BackColor = Color.White x.ForeColor = Color.Black Case "richtextbox" Dim x As Object = ctl x.BackColor = Color.White x.ForeColor = Color.Black x.enabled = True Case "button" Dim x As Button = ctl x.Enabled = True Case "listbox" Dim x As Object = ctl ctl.enabled = True Case "checkedlistbox" Dim x As Object = ctl ctl.enabled = True Case "datetimepicker" Dim x As Object = ctl ctl.enabled = True Case Else End Select End Function ''' ''' Daten ab Datenbank laden ''' ''' Private Sub Load_Data(ByVal Formname As String) db.Get_Tabledata("Security", "", "Select * from Berechtigungen where aktiv=1 and (funktionsstufe='' or funktionsstufe like '%" + Globals.ActUser.ToString + "%')") End Sub ''' ''' Prüft die DB-Einträge mit den Formcontrols und bei Übereinstimmung werden die Security-Einstellungen gesetzt ''' ''' Private Sub Set_Security() If Globals.UseSecurityObjects = False Then Exit Sub Dim i As Integer For i = 0 To db.dsDaten.Tables(0).Rows.Count - 1 Dim SecurityObject As String = db.dsDaten.Tables(0).Rows(i).Item("SecurityObject") Dim SecurityObjectitem As String = db.dsDaten.Tables(0).Rows(i).Item("SecurityObjectItem") Dim read_only As Boolean = db.dsDaten.Tables(0).Rows(i).Item("readonly") Dim invisible As Boolean = db.dsDaten.Tables(0).Rows(i).Item("Ausblenden") Dim Bezeichnung As String = db.dsDaten.Tables(0).Rows(i).Item("Bezeichnung") Dim ii As Integer For ii = 1 To ctlcol.Count Dim secobj As MyFormControls = ctlcol(ii) If secobj.MySecurityObjectItem = SecurityObjectitem Then 'secobj.MySecurityObject = SecurityObject And secobj.MySecurityObjectItem = SecurityObjectitem Then Set_Preferences(secobj.MyControl, read_only, invisible, SecurityObjectitem, Bezeichnung) End If Next Next End Sub ''' ''' Security-Einstellungen setzen ''' ''' Betroffenes Objeckt (Menuitem, Conrol usw.) ''' Readonly ja/nein ''' Sichtbar ja/nein ''' Name des Unterobjektes - wird für die Spalteneinstellungen von C1TruedbGrids verwendet ''' Private Sub Set_Preferences(ByRef obj As Object, ByVal read_only As Boolean, ByVal invisible As Boolean, ByVal SecurityObjectItem As String, ByVal bezeichnung As String) Dim objtype As System.Type = obj.GetType Select Case LCase(objtype.Name) Case "button" Dim ctl As Button = obj If read_only Then ctl.Enabled = False If invisible Then ctl.Visible = False ctl.Enabled = False End If Try If bezeichnung <> "" Then ctl.Text = bezeichnung Catch ex As Exception End Try Case "groupbox" Dim ctl As GroupBox = obj If read_only Then ctl.Enabled = False If invisible = True Then ctl.Visible = False ctl.Enabled = False End If Try If bezeichnung <> "" Then ctl.Text = bezeichnung Catch ex As Exception End Try Case "toolstripmenuitem" Dim ctl As ToolStripMenuItem = obj If read_only Then ctl.Enabled = False If invisible Then ctl.Visible = False ctl.Enabled = False End If Try If bezeichnung <> "" Then ctl.Text = bezeichnung Catch ex As Exception End Try Case "textbox", "label", "combobox", "checkbox", "toolstripbutton", "panel", "datetimepicker", "maskedtextbox", "comboboxtree" If read_only Then obj.Enabled = False If invisible Then obj.Visible = False Case "label" Try If bezeichnung <> "" Then obj.Text = bezeichnung Catch ex As Exception End Try Case "richtextbox" If read_only Then obj.Enabled = False Try obj.readonly = True obj.enabled = True Catch ex As Exception End Try If invisible Then obj.Visible = False Case "tabpage" If invisible Then Dim tbp As TabPage = obj For Each x As MyFormControls In Me.ctlcol If x.MySecurityObject = tbp.Parent.Name Then Dim tb As TabControl = x.MyControl tb.TabPages.Remove(tbp) Exit Sub End If Next End If '20100406 - TabPageHandling If read_only Then 'obj.enabled = False For Each CTLX As Control In obj.CONTROLS Me.Objectanalysis_readonly(CTLX) Next End If Case "c1truedbgrid" Dim ctl As C1TrueDBGrid = obj If SecurityObjectItem = "" Then If read_only Then ctl.Enabled = False If invisible Then obj.Visible = False Else If read_only Then ctl.Splits(0).DisplayColumns(SecurityObjectItem).Locked = True If invisible Then ctl.Splits(0).DisplayColumns(SecurityObjectItem).Visible = False End If End Select End Sub #Region "Read Objects from Form and save to Database" Dim tmpmenuname As String ''' ''' Sämtliche Controls vom Formular auslesen ''' ''' ''' ''' Private Function Objectanalysis(ByRef ctl As Object) As String Dim typ As System.Type = ctl.GetType Select Case LCase(typ.Name) Case "menustrip" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) tmpmenuname = ctl.name ReadMenu(ctl) Case "contextmenustrip" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) tmpmenuname = ctl.name ReadContextMenu(ctl) Case "toolstrip" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim tmptoolstrop As ToolStrip = ctl Try Dim ic As Integer For ic = 0 To tmptoolstrop.Items.Count - 1 Try Dim subobj As ToolStripButton subobj = tmptoolstrop.Items(ic) ctlcol.Add(New MyFormControls(subobj, formname, typ.Name, ctl.Name, subobj.Name, 1)) Catch ex As Exception End Try Next 'For Each subobj As ToolStripButton In tmptoolstrop.Items 'ctlcol.Add(New MyFormControls(subobj, formname, typ.Name, ctl.Name, subobj.Name, 1)) 'Next Catch End Try Case "splitcontainer" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim tmpsplit As SplitContainer = ctl For Each ctrl As Object In tmpsplit.Panel1.Controls Objectanalysis(ctrl) Next For Each ctrl As Object In tmpsplit.Panel2.Controls Objectanalysis(ctrl) Next Case "tabcontrol", "clsmytabcontrol" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim tmptabcontrol As TabControl = ctl For Each ctl In tmptabcontrol.TabPages Objectanalysis(ctl) Next Case "tabpage" Dim tmptabpage As TabPage = ctl ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, tmptabpage.Parent.Name, 1)) For Each ctl In tmptabpage.Controls Objectanalysis(ctl) Next Case "groupbox" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim tmptabpage As GroupBox = ctl For Each ctl In tmptabpage.Controls Objectanalysis(ctl) Next Case "panel" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim tmppanel As Panel = ctl For Each ctl In tmppanel.Controls Objectanalysis(ctl) Next Case "c1truedbgrid" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim ctrl As C1TrueDBGrid = ctl Dim i As Integer For i = 0 To ctrl.Columns.Count - 1 ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, ctrl.Columns(i).Caption, 0, ctrl.Columns(i).Caption)) Next Try If ctrl.ContextMenuStrip.Name <> "" Then Dim x As ContextMenuStrip = ctrl.ContextMenuStrip Objectanalysis(x) End If Catch ex As Exception End Try For Each xctl As Object In ctrl.Controls Objectanalysis(xctl) Next Case "treeview" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim ctrl As TreeView = ctl Try If ctrl.ContextMenuStrip.Name <> "" Then Dim x As ContextMenuStrip = ctrl.ContextMenuStrip Objectanalysis(x) End If Catch ex As Exception End Try Case "supertabcontrol" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim tmptabpage As DevComponents.DotNetBar.SuperTabControl = ctl For Each ctl In tmptabpage.Controls Objectanalysis(ctl) Next Case "supertabcontrolpanel" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim tmptabpage As DevComponents.DotNetBar.SuperTabControlPanel = ctl For Each ctl In tmptabpage.Controls Objectanalysis(ctl) Next Case "patient" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim tmptabpage As DPM2016.Patient = ctl For Each ctl In tmptabpage.Controls Objectanalysis(ctl) Next Case "patientdetials" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim tmptabpage As DPM2016.PatientDetails = ctl For Each ctl In tmptabpage.Controls Objectanalysis(ctl) Next Case "behandlung" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim tmptabpage As DPM2016.Behandlung = ctl For Each ctl In tmptabpage.Controls Objectanalysis(ctl) Next Case "benhandlungdetail" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim tmptabpage As DPM2016.Benhandungdetail = ctl For Each ctl In tmptabpage.Controls Objectanalysis(ctl) Next Case "finanzen" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim tmptabpage As DPM2016.Finanzen = ctl For Each ctl In tmptabpage.Controls Objectanalysis(ctl) Next Case "krankengeschichte" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim tmptabpage As DPM2016.Krankengeschichte = ctl For Each ctl In tmptabpage.Controls Objectanalysis(ctl) Next Case "leistungen" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim tmptabpage As DPM2016.Leistungen = ctl For Each ctl In tmptabpage.Controls Objectanalysis(ctl) Next Case "patientabrechnung" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim tmptabpage As DPM2016.PatientAbrechnung = ctl For Each ctl In tmptabpage.Controls Objectanalysis(ctl) Next Case "recall" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim tmptabpage As DPM2016.Recall = ctl For Each ctl In tmptabpage.Controls Objectanalysis(ctl) Next Case "clsdokumente" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim tmptabpage As DPM2016.clsDokumente = ctl For Each ctl In tmptabpage.Controls Objectanalysis(ctl) Next Case "advtree" ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) Dim ctrl As AdvTree.AdvTree = ctl Try If ctrl.ContextMenuStrip.Name <> "" Then Dim x As ContextMenuStrip = ctrl.ContextMenuStrip Objectanalysis(x) End If Catch ex As Exception End Try Case Else If ctl.name = "TreeStruktur" Then End If ctlcol.Add(New MyFormControls(ctl, formname, typ.Name, ctl.Name, "")) End Select End Function ''' ''' Auslesen von MenuItems ''' ''' ''' ''' ''' Dim level As Integer = 0 Private Function ReadMenu(ByRef x As Object) Dim tmpmnu As MenuStrip = x level = 0 For Each xx As Object In tmpmnu.Items Dim objtype As System.Type = xx.GetType If LCase(objtype.Name) = "toolstripmenuitem" Then ctlcol.Add(New MyFormControls(xx, formname, "menustrip", tmpmenuname, xx.Name, level)) get_all_menus(xx) End If Next End Function ''' ''' Auslesen von ContextMenuItems ''' ''' ''' ''' ''' Private Function ReadContextMenu(ByRef x As Object) Try Dim tmpmnu As ContextMenuStrip = x level = 0 Try For Each xx As Object In tmpmnu.Items Dim objtype As System.Type = xx.GetType If LCase(objtype.Name) = "toolstripmenuitem" Then ctlcol.Add(New MyFormControls(xx, formname, "menustrip", tmpmenuname, xx.Name, level)) get_all_menus(xx) End If ' ctlcol.Add(New MyFormControls(xx, formname, "contextmenustrip", tmpmenuname, xx.Name, level)) ' get_all_menus(xx) Next Catch ex As Exception End Try Catch End Try End Function ''' ''' Auslesen von Menu-Subitems ''' ''' ''' ''' Private Function get_all_menus(ByRef xx As ToolStripMenuItem) level = level + 1 For Each subobj As Object In xx.DropDownItems If LCase(subobj.GetType.Name) = "toolstripmenuitem" Then ctlcol.Add(New MyFormControls(subobj, formname, "menustrip", tmpmenuname, subobj.Name, level)) get_all_menus(subobj) End If Next level = level - 1 End Function #End Region #Region "ScreenDoku" #Region "check_obsolet" Public Function Check_Obsoloet(ByVal f As Object, Optional Classname As String = "", Optional Formularname As String = "") Dim s As String = "" 'Bestehende Daten lesen If Classname <> "" Then load_form_data(Classname) If Formularname = "" Then Formularname = Classname Else load_form_data(f.Name) If Formularname = "" Then Formularname = f.name End If 'Formular_analyiseren() Me.ctlcol.Clear() If Classname <> "" Then formname = Classname Else formname = f.Name End If For Each ctl As Control In f.Controls Objectanalysis(ctl) Next s = "" Dim i As Integer Dim found As Boolean For Each r As DataRow In SecurityData.Tables(0).Rows found = False For i = 1 To ctlcol.Count Dim secobj As MyFormControls = ctlcol(i) If secobj.MyFormname = r("securityform") And secobj.MySecurityObject = r("SecurityObject") And secobj.MySecurityObjectItem = r("Securityobjectitem") And secobj.MySecurityObjecttype = r("SecurityObjectType") Then found = True Exit For End If Next If Not found Then If s <> "" Then s = s + vbCrLf s = s + "- " + r("securityObject") + "/" + r("Securityobjectitem") End If Next If s <> "" Then s = Formularname + ": Folgende Elemente sind nicht mehr vorhanden:" + vbCrLf + vbCrLf + s Else s = Formularname + ": Alle Objekte werden verwendet." MsgBox(s, MsgBoxStyle.Information, Formularname) End Function Public Sub load_form_data(ByVal formname As String) End Sub #End Region #End Region ''' ''' Klasse für ein Control-Objekt ''' ''' Public Class MyFormControls Public MyControl As Object Public MyFormname As String Public MySecurityObjecttype As String Public MySecurityObject As String Public MySecurityObjectItem As String Public MyDescription As String Public MyLevel As Integer ''' ''' Neue Instanz erstellen ''' ''' Control-Objekt ''' Betroffenes Formular ''' Objekttyp ''' Objektname ''' Unterobjekt (z.B. bei Menus, Spalten von C1TrueDBGrids) ''' Sub New(ByVal ctl As Object, ByVal Formname As String, ByVal securityobjecttype As String, ByVal Securityobject As String, ByVal SecurityObjectItem As String, Optional ByVal level As Integer = 0, Optional ByVal desc As String = "") MyControl = ctl MySecurityObjecttype = securityobjecttype MyFormname = Formname MySecurityObject = Securityobject MySecurityObjectItem = SecurityObjectItem If desc = "" Then MyDescription = Get_Description(ctl) Else MyDescription = desc End If Try MyDescription = MyDescription.Replace("&", "") Catch ex As Exception End Try MyLevel = level End Sub Private Function Get_Description(ByRef ctl As Object) As String Dim typ As System.Type = ctl.GetType Select Case LCase(typ.Name) Case "menustrip", "toolstripmenuitem", "toolstrip", "toolstripbutton", "contextmenustrip", "tabpage", "c1truedbgrid", "label" Return ctl.Text Case Else Return ctl.Name End Select End Function Public Function write_to_text() As String Dim s As String Dim db As New clsDB db.Get_Tabledata("Berechtigungen", "", "Select * from berechtigungen where eintragnr=-1") 'formular='" + MyFormname + "' and objekt='" + MySecurityObject + "'") If db.dsDaten.Tables(0).Rows.Count = 0 Then Dim r As DataRow = db.dsDaten.Tables(0).NewRow r(1) = 1 r(2) = MySecurityObjecttype r(3) = MyFormname r(4) = MySecurityObject r(5) = MySecurityObjectItem r(6) = MyDescription r(7) = MyLevel r(8) = False r(9) = False r(10) = "" r(11) = Now r(12) = Now r(13) = 1 r(14) = 1 db.dsDaten.Tables(0).Rows.Add(r) db.Update_Data() db = Nothing End If 's = MyFormname + ";" + Me.MySecurityObjecttype + ";" + Me.MySecurityObject + ";" + Me.MySecurityObjectItem Return s End Function End Class Public Class ControlsCollection Private Shared m_controls As Collection Dim m_strings As String Property ObjStrings As String Get Return m_strings End Get Set(value As String) m_strings = value End Set End Property Public Sub New(ByVal myForm As Form, ByRef ctlcol As Collection) m_controls = New Collection 'create a control walker to get 'all controls on the form Dim aControlWalker As New ControlWalker(myForm) Dim s As String For i = 1 To m_controls.Count Dim xtyp As System.Type = m_controls(i).GetType Dim name As String = m_controls(i).name Dim parent As String = "" Try parent = m_controls(i).parent.name Catch ex As Exception parent = "" End Try ctlcol.Add(New MyFormControls(m_controls(i), myForm.Name, xtyp.ToString, name, parent)) Next Me.ObjStrings = s End Sub 'This property returns the collection of all controls 'on the form ReadOnly Property Controls() As Collection Get Return m_controls End Get End Property Public Function FindControl(ByVal ctlname As String) As Boolean Dim i As Integer For i = 1 To Me.m_controls.Count Dim ctl As Control = m_controls(i) If UCase(ctl.Name) = UCase(ctlname) Then MsgBox("found") Next End Function Private Class ControlWalker ' This class recursively walks through all controls ' in a container, and all containers contained in ' this container, visiting all controls throughout ' the hierarchy Private mContainer As Object Public Sub New(ByVal Container As Object) Dim cControl As Control If Container.haschildren Then For Each cControl In Container.controls 'add this control to the controls collection m_controls.Add(cControl) If cControl.HasChildren Then 'This control has children, create another 'ControlWalk go visit each of them Dim cWalker As New ControlWalker(cControl) End If Next cControl End If End Sub End Class End Class End Class