Imports System.Data.SqlTypes Public Class CtrlServerInventar Dim Server As TKB.VV.Server.clsServerinventar Dim sec As TKB.VV.Utils.MySecurity Dim msg As TKB.VV.Utils.MyMessage Dim FormReadonly As Boolean = False Dim FormDataChanged As Boolean = False Dim SpaltenTitel As New TKB.VV.Utils.Tabellenspalte Dim isnewServer As Boolean = False Dim baseform As Windows.Forms.Form Dim iumgebung As Integer = 0 Dim ikategorie As Integer = 0 Friend selectPoint As New System.Drawing.Point() Dim WithEvents evh As MyGenericEventHandler = Globals.MyEventHanlder Dim m_Show_In_Application As Boolean Property Show_In_Application As Boolean Get Return m_Show_In_Application End Get Set(value As Boolean) Me.m_Show_In_Application = value If value = True Then GRPServer.Width = 160 GrpApplication.Visible = False ToolstripFIlterServer.Visible = False sec.ControlReadonly(Me) End If End Set End Property Dim m_filter As Integer = 0 Property filter As Integer Get Return m_filter End Get Set(value As Integer) m_filter = value Try Me.TSApplFilter.Text = tsApplAktivMenuItem.Text Server.Load_tree(Me.TVServer, value) Me.TVServer.ExpandAll() Catch End Try End Set End Property Property isDirty As Boolean Get Return FormDataChanged End Get Set(value As Boolean) Me.FormDataChanged = value End Set End Property Dim m_filtersearch As String Property FilterSearch As String Get Return m_filtersearch End Get Set(value As String) m_filtersearch = value End Set End Property Dim IntSearchstring As String #Region "Closing / Check_Changes" Public Function check_Save() As Boolean If Check_Changes() = False Then Return False Else Return True End Function Public Sub init(ByRef bform As Windows.Forms.Form) Server = New TKB.VV.Server.clsServerinventar sec = New TKB.VV.Utils.MySecurity msg = New TKB.VV.Utils.MyMessage Me.baseform = bform End Sub ''' ''' Schliessen des Formulars ''' ''' ''' ''' Private Sub FormularClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) If Me.FormReadonly = True Then Exit Sub If Check_Changes() = False Then e.Cancel = True Else Server.dispose() Me.Dispose() End If End Sub ''' ''' Prüfung, ob Datenänderungen vorgenommen wurden. ''' ''' Private Function Check_Changes() As Boolean If Me.FormReadonly Then Return True Exit Function End If If Me.Show_In_Application = True Then Return True Exit Function End If Dim msgres As MsgBoxResult If Me.FormDataChanged Then msgres = msg.Show_MessageYesNoCancel(3) Select Case msgres Case MsgBoxResult.Yes Save_data() Return True Case MsgBoxResult.Cancel Return False Case MsgBoxResult.No Me.FormDataChanged = False Return True End Select Else Return True End If End Function #End Region #Region "Eventhandler ChangeEreignisse" ''' ''' Allg Eventhandler für Chanage-Ereignise festlegen ''' ''' ''' Private Sub AddChanges(ByVal Container As Control) Dim l As New List(Of Control) Me.GetControl(Me, "*", l) Dim evh As EventHandler = AddressOf ChangesMade For Each c As Control In l If TypeOf c Is TextBox Then Dim ctl As TextBox = c AddHandler ctl.TextChanged, evh End If If TypeOf c Is MaskedTextBox Then Dim ctl As MaskedTextBox = c AddHandler ctl.TextChanged, evh End If If TypeOf c Is ComboBox Then Dim ctl As ComboBox = c AddHandler ctl.SelectedValueChanged, evh End If If TypeOf c Is RichTextBox Then Dim ctl As RichTextBox = c AddHandler ctl.TextChanged, evh End If If TypeOf c Is CheckBox Then If c.Name <> "cboxNurAktive" Then Dim ctl As CheckBox = c AddHandler ctl.CheckedChanged, evh End If End If If TypeOf c Is CheckedListBox Then Dim ctl As CheckedListBox = c AddHandler ctl.ItemCheck, AddressOf ChecketListBoxChange End If Next End Sub ''' ''' Envent-Handler für Change-Ereignisse ''' ''' ''' ''' Private Sub ChangesMade(ByVal sender As Object, ByVal e As System.EventArgs) Me.FormDataChanged = True Dim objtype As System.Type = sender.GetType If objtype.Name = "MaskedTextBox" Then Dim o As MaskedTextBox = sender If o.Text = "01.01.1900" Then o.Text = " . . " End If End Sub Private Sub ChecketListBoxChange(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs) Me.FormDataChanged = True End Sub ''' ''' Sucht in den Base-Controls sämtliche Controls mit dem Namen in "Key" (Wildcards * möglich) und listet ''' die gefundnen Controls in der Liste L zur weiteren Bearbeitung ''' ''' Base-Contrlo (z.B. aktuelles Formular ''' Schlüssel welcher gesucht werden soll ''' Liste der gefundenen Objekte ''' True wenn eines oder mehr Controls gefunden wurden, false wenn kein Control gefunden wurde. ''' ''' Private Function GetControl(ByVal BaseControl As Control, ByVal Key As String, ByRef L As List(Of Control), Optional ByVal ReturnAtFirstElement As Boolean = False) As Boolean If L Is Nothing Then L = New List(Of Control) Dim Gut As Boolean Dim ReturnFlag As Boolean = False If Key IsNot Nothing Then Key = Key.ToLower If BaseControl.HasChildren = True Then For Each ctl As Control In BaseControl.Controls Gut = False If Key Is Nothing Then Gut = True Else If ctl.Name.Length >= Key.Length Then Key = Key.ToLower If Key.StartsWith("*") Then If Key.Substring(1) = ctl.Name.ToLower.Substring(ctl.Name.Length - (Key.Length - 1), Key.Length - 1) Then Gut = True ElseIf Key.EndsWith("*") Then If Key.Substring(0, Key.Length - 1) = ctl.Name.ToLower.Substring(0, Key.Length - 1) Then Gut = True Else If Key = ctl.Name.ToLower Then Gut = True End If End If End If If Gut = True Then L.Add(ctl) If ReturnAtFirstElement = True Then ReturnFlag = True End If If ReturnFlag = False Then Call GetControl(ctl, Key, L) End If Next End If If L.Count - 1 > -1 Then Return True Else Return False End If End Function #End Region #Region "Formular" Public Sub Load() Me.cbboxUmgebung.DataSource = Server.Umgebung Me.cbboxUmgebung.DisplayMember = "Bezeichnung" Me.cbboxUmgebung.ValueMember = "Server_UmgebungNr" Me.cbboxOS.DataSource = Server.OS Me.cbboxOS.DisplayMember = "Bezeichnung" Me.cbboxOS.ValueMember = "Server_OSNr" Me.cbboxOSLevel.DataSource = Server.OSLevel Me.cbboxOSLevel.DisplayMember = "Bezeichnung" Me.cbboxOSLevel.ValueMember = "Server_OSLevelNr" Me.cbboxBackupLoesung.DataSource = Server.Backup Me.cbboxBackupLoesung.DisplayMember = "Bezeichnung" Me.cbboxBackupLoesung.ValueMember = "Server_Backup_Loesungnr" Me.cbboxBackupRetention.DataSource = Server.Retention Me.cbboxBackupRetention.DisplayMember = "Bezeichnung" Me.cbboxBackupRetention.ValueMember = "Server_Backup_RetentionNr" Me.cbboxDB.DataSource = Server.db Me.cbboxDB.DisplayMember = "Bezeichnung" Me.cbboxDB.ValueMember = "Server_DBNr" Me.cbboxDBBackupLoesung.DataSource = Server.dbBackup Me.cbboxDBBackupLoesung.DisplayMember = "Bezeichnung" Me.cbboxDBBackupLoesung.ValueMember = "Server_DB_Backup_LoesungNr" Me.cbboxDBBackupRetention.DataSource = Server.dbRetention Me.cbboxDBBackupRetention.DisplayMember = "Bezeichnung" Me.cbboxDBBackupRetention.ValueMember = "Server_DB_Backup_RetentionNr" Me.cbboxStandort.DataSource = Server.Standort Me.cbboxStandort.DisplayMember = "Bezeichnung" Me.cbboxStandort.ValueMember = "Server_StandortNr" Me.cbboxKategorie.DataSource = Server.Kategorie Me.cbboxKategorie.DisplayMember = "Bezeichnung" Me.cbboxKategorie.ValueMember = "Server_KategorieNr" Me.cbboxWeiteresTyp1.DataSource = Server.Weiteres_Typ1 Me.cbboxWeiteresTyp1.DisplayMember = "Bezeichnung" Me.cbboxWeiteresTyp1.ValueMember = "Server_Weiteres_TypNr" Me.cbboxWeiteresTyp2.DataSource = Server.Weiteres_Typ2 Me.cbboxWeiteresTyp2.DisplayMember = "Bezeichnung" Me.cbboxWeiteresTyp2.ValueMember = "Server_Weiteres_TypNr" Me.cbboxWeiteresTyp3.DataSource = Server.Weiteres_Typ3 Me.cbboxWeiteresTyp3.DisplayMember = "Bezeichnung" Me.cbboxWeiteresTyp3.ValueMember = "Server_Weiteres_TypNr" Me.cbboxWeiteresTyp4.DataSource = Server.Weiteres_Typ4 Me.cbboxWeiteresTyp4.DisplayMember = "Bezeichnung" Me.cbboxWeiteresTyp4.ValueMember = "Server_Weiteres_TypNr" Me.cbboxWeiteresTyp5.DataSource = Server.Weiteres_Typ5 Me.cbboxWeiteresTyp5.DisplayMember = "Bezeichnung" Me.cbboxWeiteresTyp5.ValueMember = "Server_Weiteres_TypNr" Me.cbboxWeiteresBackupLoesung1.DataSource = Server.Weiteres_Backup_Loesung1 Me.cbboxWeiteresBackupLoesung1.DisplayMember = "Bezeichnung" Me.cbboxWeiteresBackupLoesung1.ValueMember = "Server_Weiteres_Backup_LoesungNr" Me.cbboxWeiteresBackupLoesung2.DataSource = Server.Weiteres_Backup_Loesung2 Me.cbboxWeiteresBackupLoesung2.DisplayMember = "Bezeichnung" Me.cbboxWeiteresBackupLoesung2.ValueMember = "Server_Weiteres_Backup_LoesungNr" Me.cbboxWeiteresBackupLoesung3.DataSource = Server.Weiteres_Backup_Loesung3 Me.cbboxWeiteresBackupLoesung3.DisplayMember = "Bezeichnung" Me.cbboxWeiteresBackupLoesung3.ValueMember = "Server_Weiteres_Backup_LoesungNr" Me.cbboxWeiteresBackupLoesung4.DataSource = Server.Weiteres_Backup_Loesung4 Me.cbboxWeiteresBackupLoesung4.DisplayMember = "Bezeichnung" Me.cbboxWeiteresBackupLoesung4.ValueMember = "Server_Weiteres_Backup_LoesungNr" Me.cbboxWeiteresBackupLoesung5.DataSource = Server.Weiteres_Backup_Loesung5 Me.cbboxWeiteresBackupLoesung5.DisplayMember = "Bezeichnung" Me.cbboxWeiteresBackupLoesung5.ValueMember = "Server_Weiteres_Backup_LoesungNr" Me.cbboxWeiteresRetention1.DataSource = Server.Weiteres_Retention1 Me.cbboxWeiteresRetention1.DisplayMember = "Bezeichnung" Me.cbboxWeiteresRetention1.ValueMember = "Server_Weiteres_RetentionNr" Me.cbboxWeiteresRetention2.DataSource = Server.Weiteres_Retention2 Me.cbboxWeiteresRetention2.DisplayMember = "Bezeichnung" Me.cbboxWeiteresRetention2.ValueMember = "Server_Weiteres_RetentionNr" Me.cbboxWeiteresRetention3.DataSource = Server.Weiteres_Retention3 Me.cbboxWeiteresRetention3.DisplayMember = "Bezeichnung" Me.cbboxWeiteresRetention3.ValueMember = "Server_Weiteres_RetentionNr" Me.cbboxWeiteresRetention4.DataSource = Server.Weiteres_Retention4 Me.cbboxWeiteresRetention4.DisplayMember = "Bezeichnung" Me.cbboxWeiteresRetention4.ValueMember = "Server_Weiteres_RetentionNr" Me.cbboxWeiteresRetention5.DataSource = Server.Weiteres_Retention5 Me.cbboxWeiteresRetention5.DisplayMember = "Bezeichnung" Me.cbboxWeiteresRetention5.ValueMember = "Server_Weiteres_RetentionNr" Me.cbboxprovider.DataSource = Server.Betriebsprovider Me.cbboxprovider.DisplayMember = "Bezeichnung" Me.cbboxprovider.ValueMember = "Server_Providernr" sec.Set_Class_Security(Me, "clsServerInventar") 'Me.TVServer.SelectedNode = Me.TVServer.Nodes(0).Nodes(0) End Sub Private Sub TSBtnQuit_Click(sender As Object, e As EventArgs) 'e.Close() End Sub #End Region #Region "Daten" ''' ''' Daten ab DB laden uns ins Form befüllen ''' ''' ''' Private Sub Init_Controls() Me.txtBezeichnung.Text = "" Me.txtBeschreibung.Text = "" Me.cbboxUmgebung.SelectedValue = -1 Me.cbboxOS.SelectedValue = -1 Me.cbboxOSLevel.SelectedValue = -1 Me.cbboxBackupLoesung.SelectedValue = -1 Me.cbboxBackupRetention.SelectedValue = -1 Me.txtBakup.Text = "" Me.cbboxDB.SelectedValue = -1 Me.txtDB.Text = "" Me.cbboxDBBackupLoesung.SelectedValue = 1 Me.cbboxDBBackupRetention.SelectedValue = -1 Me.txtdbbackup.Text = "" Me.cbboxStandort.SelectedValue = -1 Me.txtStandort.Text = "" Me.cbboxKategorie.SelectedValue = -1 Me.cbboxWeiteresTyp1.SelectedValue = 1 Me.cbboxWeiteresTyp2.SelectedValue = 1 Me.cbboxWeiteresTyp3.SelectedValue = 1 Me.cbboxWeiteresTyp4.SelectedValue = 1 Me.cbboxWeiteresTyp5.SelectedValue = 1 Me.cbboxWeiteresBackupLoesung1.SelectedValue = 1 Me.cbboxWeiteresBackupLoesung2.SelectedValue = 1 Me.cbboxWeiteresBackupLoesung3.SelectedValue = 1 Me.cbboxWeiteresBackupLoesung4.SelectedValue = 1 Me.cbboxWeiteresBackupLoesung5.SelectedValue = 1 Me.cbboxWeiteresRetention1.SelectedValue = 1 Me.cbboxWeiteresRetention2.SelectedValue = 1 Me.cbboxWeiteresRetention3.SelectedValue = 1 Me.cbboxWeiteresRetention4.SelectedValue = 1 Me.cbboxWeiteresRetention5.SelectedValue = 1 Me.txtWeiteres1.Text = "" Me.txtWeiteres2.Text = "" Me.txtWeiteres3.Text = "" Me.txtWeiteres4.Text = "" Me.txtWeiteres5.Text = "" Me.txtmutierer.Text = "" Me.cbaktiv.Checked = True Me.txterstellt_am.Text = "" Me.txtmutiert_am.Text = "" 'ec.Set_Form_Security(Me) Me.GrpDB.Height = 42 Me.grpWeiteres.Height = 42 End Sub Private Sub Get_Data(ByVal Servernr As Integer) Try init_Controls() Server.Get_Server(Servernr) Me.txtBezeichnung.Text = Server.sBezeichnung.Value Me.txtBeschreibung.Text = Server.sBeschreibung.Value Me.cbboxUmgebung.SelectedValue = Server.iServer_UmgebungNr.Value Me.cbboxOS.SelectedValue = Server.iServer_OSNr.Value Me.cbboxOSLevel.SelectedValue = Server.iServer_OSLevelNr.Value Me.cbboxBackupLoesung.SelectedValue = Server.iServer_Backup_LoesungNr.Value Me.cbboxBackupRetention.SelectedValue = Server.iServer_Backup_RetentionNr.Value Me.txtBakup.Text = Server.sServer_Backup_Bemerkung.Value Me.cbboxDB.SelectedValue = Server.iServer_DBNr.Value Me.txtDB.Text = Server.sServer_DB_Bemerkung.Value Me.cbboxDBBackupLoesung.SelectedValue = Server.iServer_DB_Backup_LoesungNr.Value Me.cbboxDBBackupRetention.SelectedValue = Server.iServer_DB_Backup_RetentionNr.Value Me.txtdbbackup.Text = Server.sServer_DB_Backup_Bemerkung Me.cbboxStandort.SelectedValue = Server.iServer_StandortNr.Value Me.txtStandort.Text = Server.sServer_Stanmdort_Bemerkung.Value Me.cbboxKategorie.SelectedValue = Server.iServer_KategorieNr.Value Me.cbboxWeiteresTyp1.SelectedValue = Server.iServer_Weiteres_TypNr1.Value Me.cbboxWeiteresTyp2.SelectedValue = Server.iServer_Weiteres_TypNr2.Value Me.cbboxWeiteresTyp3.SelectedValue = Server.iServer_Weiteres_TypNr3.Value Me.cbboxWeiteresTyp4.SelectedValue = Server.iServer_Weiteres_TypNr4.Value Me.cbboxWeiteresTyp5.SelectedValue = Server.iServer_Weiteres_TypNr5.Value Me.cbboxWeiteresBackupLoesung1.SelectedValue = Server.iServer_Weiteres_Backup_LoesungNr1.Value Me.cbboxWeiteresBackupLoesung2.SelectedValue = Server.iServer_Weiteres_Backup_LoesungNr2.Value Me.cbboxWeiteresBackupLoesung3.SelectedValue = Server.iServer_Weiteres_Backup_LoesungNr3.Value Me.cbboxWeiteresBackupLoesung4.SelectedValue = Server.iServer_Weiteres_Backup_LoesungNr4.Value Me.cbboxWeiteresBackupLoesung5.SelectedValue = Server.iServer_Weiteres_Backup_LoesungNr5.Value Me.cbboxWeiteresRetention1.SelectedValue = Server.iServer_Weiteres_RetentionNr1.Value Me.cbboxWeiteresRetention2.SelectedValue = Server.iServer_Weiteres_RetentionNr2.Value Me.cbboxWeiteresRetention3.SelectedValue = Server.iServer_Weiteres_RetentionNr3.Value Me.cbboxWeiteresRetention4.SelectedValue = Server.iServer_Weiteres_RetentionNr4.Value Me.cbboxWeiteresRetention5.SelectedValue = Server.iServer_Weiteres_RetentionNr5.Value Me.txtWeiteres1.Text = Server.sServer_Weiteres_Bemerkung1.Value Me.txtWeiteres2.Text = Server.sServer_Weiteres_Bemerkung2.Value Me.txtWeiteres3.Text = Server.sServer_Weiteres_Bemerkung3.Value Me.txtWeiteres4.Text = Server.sServer_Weiteres_Bemerkung4.Value Me.txtWeiteres5.Text = Server.sServer_Weiteres_Bemerkung5.Value If Server.sRZ_Betreiber_Standort.IsNull Then Me.cbboxStandort.Text = "" Else Me.cbboxStandort.Text = Server.sRZ_Betreiber_Standort.Value.ToString End If Try Me.cbboxprovider.SelectedValue = Server.iServer_ProviderNr.Value Catch Me.cbboxprovider.SelectedValue = -1 End Try Me.txtmutierer.Text = Server.MutiererText Me.cbaktiv.Checked = Server.bAktiv.Value = True Me.txterstellt_am.Text = Server.daErstellt_am.Value Me.txtmutiert_am.Text = Server.daMutiert_am.Value 'ec.Set_Form_Security(Me) refresh_applikation(Servernr) If Me.cbboxDB.SelectedValue = 1 Then Me.GrpDB.Height = 42 Else Me.GrpDB.Height = 185 If Me.cbboxWeiteresTyp1.SelectedValue <> 1 Or Me.cbboxWeiteresTyp2.SelectedValue <> 1 Or Me.cbboxWeiteresTyp3.SelectedValue <> 1 Or Me.cbboxWeiteresTyp4.SelectedValue <> 1 Or Me.cbboxWeiteresTyp5.SelectedValue <> 1 Then Me.grpWeiteres.Height = 190 Else Me.grpWeiteres.Height = 42 End If Me.AddChanges(Me) Me.FormDataChanged = False Catch ex As Exception If Me.cbboxDB.SelectedValue = 1 Then Me.GrpDB.Height = 42 Else Me.GrpDB.Height = 185 If Me.cbboxWeiteresTyp1.SelectedValue <> 1 Or Me.cbboxWeiteresTyp2.SelectedValue <> 1 Or Me.cbboxWeiteresTyp3.SelectedValue <> 1 Or Me.cbboxWeiteresTyp4.SelectedValue <> 1 Or Me.cbboxWeiteresTyp5.SelectedValue <> 1 Then Me.grpWeiteres.Height = 190 Else Me.grpWeiteres.Height = 42 End If ' MsgBox(ex.Message) ' Try ' For Each ctl As ToolStripButton In Me.ToolStrip1.Items ' ctl.Enabled = False ' Next ' Catch ' End Try 'Me.TSBtnQuit.Enabled = True End Try Me.FormDataChanged = False End Sub Private Sub Set_Checkedlistbox(ByRef clb As CheckedListBox, ByRef data As DataTable) Dim i As Integer For i = 0 To clb.Items.Count - 1 clb.SetItemCheckState(i, CheckState.Unchecked) Next Dim chk As Integer = 0 Dim ii As Integer Dim oc As CheckedListBox.ObjectCollection = clb.Items For i = 0 To data.Rows.Count - 1 For ii = 0 To oc.Count - 1 If oc.Item(ii).item(0) = data.Rows(i).Item(2) Then clb.SetItemCheckState(ii, CheckState.Checked) End If Next Next End Sub ''' ''' Daten ab Form speichern ''' ''' Private Sub Save_data() Server.sBezeichnung = New SqlString(CType(Me.txtBezeichnung.Text, String)) Server.iServer_UmgebungNr = New SqlInt32(CType(Me.cbboxUmgebung.SelectedValue, Int32)) Server.iServer_OSNr = New SqlInt32(CType(Me.cbboxOS.SelectedValue, Int32)) Server.iServer_OSLevelNr = New SqlInt32(CType(Me.cbboxOSLevel.SelectedValue, Int32)) Server.sBeschreibung = New SqlString(CType(Me.txtBeschreibung.Text, String)) Server.iServer_Backup_LoesungNr = New SqlInt32(CType(Me.cbboxBackupLoesung.SelectedValue, Int32)) Server.iServer_Backup_RetentionNr = New SqlInt32(CType(Me.cbboxBackupRetention.SelectedValue, Int32)) Server.sServer_Backup_Bemerkung = New SqlString(CType(Me.txtBakup.Text, String)) Server.iServer_DBNr = New SqlInt32(CType(Me.cbboxDB.SelectedValue, Int32)) Server.sServer_DB_Bemerkung = New SqlString(CType(Me.txtDB.Text, String)) Server.iServer_DB_Backup_LoesungNr = New SqlInt32(CType(Me.cbboxDBBackupLoesung.SelectedValue, Int32)) Server.iServer_DB_Backup_RetentionNr = New SqlInt32(CType(Me.cbboxDBBackupRetention.SelectedValue, Int32)) Server.sServer_DB_Backup_Bemerkung = New SqlString(CType(Me.txtdbbackup.Text, String)) Server.iServer_StandortNr = New SqlInt32(CType(Me.cbboxStandort.SelectedValue, Int32)) Server.sServer_Stanmdort_Bemerkung = New SqlString(CType(Me.txtStandort.Text, String)) Server.iServer_KategorieNr = New SqlInt32(CType(Me.cbboxKategorie.SelectedValue, Int32)) Server.iServer_Weiteres_TypNr1 = New SqlInt32(CType(Me.cbboxWeiteresTyp1.SelectedValue, Int32)) Server.iServer_Weiteres_TypNr2 = New SqlInt32(CType(Me.cbboxWeiteresTyp2.SelectedValue, Int32)) Server.iServer_Weiteres_TypNr3 = New SqlInt32(CType(Me.cbboxWeiteresTyp3.SelectedValue, Int32)) Server.iServer_Weiteres_TypNr4 = New SqlInt32(CType(Me.cbboxWeiteresTyp4.SelectedValue, Int32)) Server.iServer_Weiteres_TypNr5 = New SqlInt32(CType(Me.cbboxWeiteresTyp5.SelectedValue, Int32)) Server.iServer_Weiteres_Backup_LoesungNr1 = New SqlInt32(CType(Me.cbboxWeiteresBackupLoesung1.SelectedValue, Int32)) Server.iServer_Weiteres_Backup_LoesungNr2 = New SqlInt32(CType(Me.cbboxWeiteresBackupLoesung2.SelectedValue, Int32)) Server.iServer_Weiteres_Backup_LoesungNr3 = New SqlInt32(CType(Me.cbboxWeiteresBackupLoesung3.SelectedValue, Int32)) Server.iServer_Weiteres_Backup_LoesungNr4 = New SqlInt32(CType(Me.cbboxWeiteresBackupLoesung4.SelectedValue, Int32)) Server.iServer_Weiteres_Backup_LoesungNr5 = New SqlInt32(CType(Me.cbboxWeiteresBackupLoesung5.SelectedValue, Int32)) Server.iServer_Weiteres_RetentionNr1 = New SqlInt32(CType(Me.cbboxWeiteresRetention1.SelectedValue, Int32)) Server.iServer_Weiteres_RetentionNr2 = New SqlInt32(CType(Me.cbboxWeiteresRetention2.SelectedValue, Int32)) Server.iServer_Weiteres_RetentionNr3 = New SqlInt32(CType(Me.cbboxWeiteresRetention3.SelectedValue, Int32)) Server.iServer_Weiteres_RetentionNr4 = New SqlInt32(CType(Me.cbboxWeiteresRetention4.SelectedValue, Int32)) Server.iServer_Weiteres_RetentionNr5 = New SqlInt32(CType(Me.cbboxWeiteresRetention5.SelectedValue, Int32)) Server.sServer_Weiteres_Bemerkung1 = New SqlString(CType(Me.txtWeiteres1.Text, String)) Server.sServer_Weiteres_Bemerkung2 = New SqlString(CType(Me.txtWeiteres2.Text, String)) Server.sServer_Weiteres_Bemerkung3 = New SqlString(CType(Me.txtWeiteres3.Text, String)) Server.sServer_Weiteres_Bemerkung4 = New SqlString(CType(Me.txtWeiteres4.Text, String)) Server.sServer_Weiteres_Bemerkung5 = New SqlString(CType(Me.txtWeiteres5.Text, String)) Server.bAktiv = New SqlBoolean(CType(Me.cbaktiv.Checked, Boolean)) Server.sRZ_Betreiber_Standort = New SqlString(CType(Me.cbboxStandort.Text, String)) Server.iServer_ProviderNr = New SqlInt32(CType(Me.cbboxprovider.SelectedValue, Int32)) Me.txtmutierer.Text = Server.MutiererText Me.cbaktiv.Checked = Server.bAktiv.Value = True Me.txterstellt_am.Text = Server.daErstellt_am.Value Me.txtmutiert_am.Text = Server.daMutiert_am.Value Server.Save_Data() Me.FormDataChanged = False End Sub Private Function Get_CheckedItems(ByRef clb As CheckedListBox) As String Dim i As Integer = 0 Dim s As String = "" For i = 1 To clb.CheckedItems.Count s = s + clb.CheckedItems(i).ToString Next Return s End Function Public Function Refresh_Application(ByRef applid As Integer) Init_Controls() Server.refresh_Server(applid, Me.TVServer) End Function #End Region #Region "Security" ''' ''' Laden der Securitylevel-Daten in die Combobox ''' ''' Private Sub Load_Securitylevel() Dim seclevel As New TKB.VV.DB.clsSecurityLevel Dim secleveldata As New DataTable seclevel.cpMainConnectionProvider = Globals.conn Globals.conn.OpenConnection() secleveldata = seclevel.SelectAll Globals.conn.CloseConnection(True) ' Me.cboxSecurityLevel.DataSource = secleveldata ' Me.cboxSecurityLevel.DisplayMember = "Bezeichnung" ' Me.cboxSecurityLevel.ValueMember = "SecurityLevelNr" seclevel.Dispose() End Sub #End Region #Region "Public Methoths" Public Sub Add_New() If Me.Check_Changes = False Then Exit Sub Me.Get_Data(Me.Server.Add_New) If iumgebung <> 0 Then Server.iServer_UmgebungNr = New SqlInt32(CType(iumgebung, Int32)) If ikategorie <> 0 Then Server.iServer_KategorieNr = New SqlInt32(CType(ikategorie, Int32)) Try Me.cbboxKategorie.SelectedValue = ikategorie Me.cbboxUmgebung.SelectedValue = iumgebung Catch ex As Exception End Try Me.Save_data() Dim sk As Integer = Server.iServerInventarNr.Value Me.isnewServer = True Me.Get_Data(sk) Server.Load_tree(Me.TVServer, Me.filter) Server.FindByTag(Me.TVServer, sk.ToString) 'Me.TVServer.SelectedNode = Server.FindNode(Me.TVServer.Nodes, Me.Server.iServerInventarNr.Value, "*** Neues Element ***") End Sub Public Sub Save() Dim tn As New TreeNode tn = TVServer.SelectedNode Me.Save_data() Server.Load_tree(Me.TVServer, Me.filter) Me.TVServer.ExpandAll() Me.TVServer.SelectedNode = Server.FindNode(Me.TVServer.Nodes, tn.Tag, tn.Text) End Sub Public Sub Delete() Dim sn As Integer Try sn = Me.TVServer.SelectedNode.Tag Catch End Try If msg.Show_MessageYesNo(7) = MsgBoxResult.Yes Then Server.Delete_Server_Applikation(Me.TVServer.SelectedNode.Tag, -1) Server.Delete_Server(Me.TVServer.SelectedNode.Tag) End If 'Me.Save_data() Try Me.TVServer.BeginUpdate() Server.Load_tree(Me.TVServer, Me.filter) Me.TVServer.ExpandAll() Server.Select_First_Datanode(Me.TVServer) If IntSearchstring <> "" Then Search_Server(IntSearchstring) Server.Select_First_Datanode(Me.TVServer) Exit Sub End If Catch Finally Me.TVServer.EndUpdate() Try Me.TVServer.SelectedNode = Server.FindNode(Me.TVServer.Nodes, sn, sn) Catch ex As Exception End Try End Try End Sub Public Sub Activate() Dim sn As Integer Try sn = Me.TVServer.SelectedNode.Tag Me.TVServer.BeginUpdate() Server.bAktiv = True Server.Save_Data() Server.Load_tree(Me.TVServer, Me.filter) Me.TVServer.ExpandAll() Server.Select_First_Datanode(Me.TVServer) If IntSearchstring <> "" Then Search_Server(IntSearchstring) Server.Select_First_Datanode(Me.TVServer) Exit Sub End If Catch ex As Exception Finally Try Me.TVServer.SelectedNode = Server.FindNode(Me.TVServer.Nodes, sn, sn) Catch ex As Exception End Try Me.TVServer.EndUpdate() End Try End Sub Private Sub TVServer_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles TVServer.AfterSelect Try Me.Init_Controls() If Me.TVServer.SelectedNode.Tag > 0 And Me.TVServer.SelectedNode.Tag < 10000 Then Me.RefreshData(Me.TVServer.SelectedNode.Tag) Me.GrpServerDetails.Enabled = True Me.GrpSystembackup.Enabled = True Me.grpWeiteres.Enabled = True Me.GrpDB.Enabled = True Me.GrpRZ.Enabled = True Me.GrpApplication.Enabled = True Else Me.GrpServerDetails.Enabled = False Me.GrpSystembackup.Enabled = False Me.grpWeiteres.Enabled = False Me.GrpDB.Enabled = False Me.GrpRZ.Enabled = False Me.GrpApplication.Enabled = False Me.FormDataChanged = False End If Catch ex As Exception End Try End Sub Private Sub RefreshData(id As Integer) Me.Get_Data(id) End Sub #End Region #Region "Treehandling" Private Sub TVApplikation_DragDrop(sender As Object, e As DragEventArgs) Handles TVApplikation.DragDrop If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", True) Then Dim SourceNode As TreeNode SourceNode = CType(e.Data.GetData("System.Windows.Forms.TreeNode"), TreeNode) Server.insert_server_applikation(Me.TVServer.SelectedNode.Tag, SourceNode.Tag) refresh_applikation(Me.TVServer.SelectedNode.Tag) evh.Fire_ServerInventar_Changed(SourceNode.Tag) End If End Sub Private Sub TVApplikation_DragEnter1(sender As Object, e As DragEventArgs) Handles TVApplikation.DragEnter If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", True) Then 'TreeNode found allow move effect e.Effect = DragDropEffects.Move Else 'No TreeNode found, prevent move e.Effect = DragDropEffects.None End If End Sub Private Sub TVApplikation_DragOver(sender As Object, e As DragEventArgs) Handles TVApplikation.DragOver If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", True) = False Then Exit Sub e.Effect = DragDropEffects.Move End Sub Sub refresh_applikation(ByVal servernr As Integer) Try Server.refresh_applikation(servernr, TVApplikation) Catch End Try End Sub Private Sub ApplikationAnzeigenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ApplikationAnzeigenToolStripMenuItem.Click Try Dim f As New frmApplikation(TVApplikation.SelectedNode.Tag, False) f.MdiParent = baseform.MdiParent f.Show() Catch ex As Exception End Try End Sub Private Sub EintragLöschenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles EintragLöschenToolStripMenuItem.Click If MsgBox("Eintrag wirklich löschen?", vbYesNo + MsgBoxStyle.Question) = MsgBoxResult.Yes Then Dim Applnr As Integer = Me.TVApplikation.SelectedNode.Tag Server.Delete_Server_Applikation(Me.TVServer.SelectedNode.Tag, Me.TVApplikation.SelectedNode.Tag) refresh_applikation(Me.TVServer.SelectedNode.Tag) evh.Fire_ServerInventar_Changed(Applnr) End If End Sub #End Region #Region "Open/Close Details" Private Sub btnDBOpen_Click(sender As Object, e As EventArgs) Handles btnDBOpen.Click Me.GrpDB.Height = 190 End Sub Private Sub btnDBClose_Click(sender As Object, e As EventArgs) Handles btnDBClose.Click Me.GrpDB.Height = 42 End Sub Private Sub btnWeitersClose_Click(sender As Object, e As EventArgs) Handles btnWeitersClose.Click Me.grpWeiteres.Height = 42 End Sub Private Sub btnWeiteresOpen_Click(sender As Object, e As EventArgs) Handles btnWeiteresOpen.Click Me.grpWeiteres.Height = 190 End Sub #End Region #Region "Mausevents" Private Sub TVServer_BeforeSelect(sender As Object, e As TreeViewCancelEventArgs) Handles TVServer.BeforeSelect If Me.Check_Changes = False Then e.Cancel = True End Sub Private Sub TVServer_MouseDown(sender As Object, e As MouseEventArgs) Handles TVServer.MouseDown Try Dim mouseEvents As MouseEventArgs mouseEvents = e selectPoint.Y = mouseEvents.Y selectPoint.X = mouseEvents.X Me.TVServer.SelectedNode = Me.TVServer.GetNodeAt(selectPoint) Catch ex As Exception 'MsgBox(ex.Message) End Try End Sub Private Sub TVApplikation_MouseDown(sender As Object, e As MouseEventArgs) Handles TVApplikation.MouseDown Try Dim mouseEvents As MouseEventArgs mouseEvents = e selectPoint.Y = mouseEvents.Y selectPoint.X = mouseEvents.X Me.TVApplikation.SelectedNode = Me.TVApplikation.GetNodeAt(selectPoint) Catch ex As Exception 'MsgBox(ex.Message) End Try End Sub #End Region Public Sub AktiveServerToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AktiveServerToolStripMenuItem.Click Try Me.TVServer.BeginUpdate() Me.filter = 0 Me.tsServerDropDown.Text = AktiveServerToolStripMenuItem.Text If IntSearchstring <> "" Then Search_Server(IntSearchstring) Server.Select_First_Datanode(Me.TVServer) Exit Sub End If Catch ex As Exception Finally Me.TVServer.EndUpdate() End Try End Sub Private Sub InaktiveServerToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles InaktiveServerToolStripMenuItem.Click Try Me.TVServer.BeginUpdate() Me.filter = 1 Me.tsServerDropDown.Text = InaktiveServerToolStripMenuItem.Text If IntSearchstring <> "" Then Search_Server(IntSearchstring) Server.Select_First_Datanode(Me.TVServer) Exit Sub End If Catch ex As Exception Finally Me.TVServer.EndUpdate() End Try End Sub Private Sub AlleServerToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AlleServerToolStripMenuItem.Click Try Me.TVServer.BeginUpdate() Me.filter = 2 Me.tsServerDropDown.Text = AlleServerToolStripMenuItem.Text If IntSearchstring <> "" Then Search_Server(IntSearchstring) Server.Select_First_Datanode(Me.TVServer) Exit Sub End If Catch ex As Exception Finally Me.TVServer.EndUpdate() End Try End Sub Private Sub tsApplAktivMenuItem_Click(sender As Object, e As EventArgs) Handles tsApplAktivMenuItem.Click Me.TSApplFilter.Text = Me.tsApplAktivMenuItem.Text Server.Applfilter = 0 refresh_applikation(Me.TVServer.SelectedNode.Tag) End Sub Private Sub TSApplInaktivMenuItem_Click(sender As Object, e As EventArgs) Handles TSApplInaktivMenuItem.Click Me.TSApplFilter.Text = Me.TSApplInaktivMenuItem.Text Server.Applfilter = 1 refresh_applikation(Me.TVServer.SelectedNode.Tag) End Sub Private Sub TSApplAlleApplMenuItem_Click(sender As Object, e As EventArgs) Handles TSApplAlleApplMenuItem.Click Me.TSApplFilter.Text = Me.TSApplAlleApplMenuItem.Text Server.Applfilter = 2 refresh_applikation(Me.TVServer.SelectedNode.Tag) End Sub Dim foundnode As Integer = 0 Public Treesearch As New TreeView Public Function Init_Search() FoundNode = 0 Me.Treesearch.Nodes.Clear() End Function Private Function SearchNode(ByRef tree As TreeView, ByVal SearchString As String) As TreeNode 'Return tree.FindNodeByCellText(SearchString) Me.Treesearch.Nodes.Clear() For Each dr As DataRow In Server.Tree_Data_For_Search.Rows 'InStr(UCase(SearchString), UCase(dr.Item("Bezeichnung"))) If InStr(UCase(dr.Item("Bezeichnung")), UCase(SearchString)) > 0 Then Dim tn As New TreeNode tn.Text = dr.Item("Bezeichnung") tn.Tag = dr.Item("mainkey") Treesearch.Nodes.Add(tn) End If Next Return FindFirst(tree) End Function Public Function Search_Server(ByVal Serachstring As String) Try Me.TVServer.BeginUpdate() IntSearchstring = Serachstring If Me.FilterSearch <> "Filter" Then Server.Load_tree(Me.TVServer, Me.filter) Me.TVServer.ExpandAll() End If If Me.FilterSearch = "Filter" Then Server.Load_tree(Me.TVServer, Me.filter) Set_Filterdata(Serachstring) Dim ds As New DataSet If defdata.Rows.Count >= Server.Tree_Data_For_Search.Rows.Count Then Server.Load_tree(Me.TVServer, Me.filter) Me.TVServer.ExpandAll() Me.TVServer.EndUpdate() Exit Function End If ds.Tables.Clear() ds.Tables.Add(defdata) Server.Load_tree_filter(TVServer, ds) Me.TVServer.ExpandAll() SearchNode(TVServer, Serachstring) Me.TVServer.EndUpdate() Exit Function End If Me.Init_Search() Me.TVServer.SelectedNode = SearchNode(Me.TVServer, Serachstring) Catch ex As Exception Finally Me.TVServer.EndUpdate() End Try End Function Dim filter_tree_data As New DataTable Dim defdata As New DataTable Public Function Set_Filterdata(ByVal Searchstring As String) filter_tree_data = Server.Tree_Data_For_Search.Copy filter_tree_data.Rows.Clear() Dim dv As New DataView(Server.Tree_Data_For_Search) dv.RowFilter = "Bezeichnung like '%" + Searchstring + "%'" For Each r As DataRowView In dv Dim nr As DataRow = filter_tree_data.NewRow nr(0) = r(0) nr(1) = r(1) nr(2) = r(2) nr(3) = r(3) nr(4) = r(4) filter_tree_data.Rows.Add(nr) Next Dim found As Boolean = False defdata = filter_tree_data.Copy Dim i As Integer Try For Each r As DataRow In filter_tree_data.Rows Dim pid As Integer = r(1) insert_parent(pid) Next Catch End Try Dim r1 As DataRow = defdata.NewRow r1(0) = 0 r1(1) = System.DBNull.Value r1(2) = "Root" defdata.Rows.Add(r1) End Function Sub insert_parent(pid As Integer) Dim found As Boolean = False While pid > 0 found = False For Each r As DataRow In Server.Tree_Data_For_Search.Rows If r(0) = pid Then For Each rr As DataRow In defdata.Rows If rr(0) = pid Then found = True pid = rr(1) Exit For End If Next If found = False Then Dim nr As DataRow = defdata.NewRow nr(0) = r(0) nr(1) = r(1) nr(2) = r(2) nr(3) = r(3) nr(4) = r(4) defdata.Rows.Add(nr) pid = r(1) Exit For End If End If Next End While End Sub Public Function FindFirst_Server() Me.TVServer.SelectedNode = FindFirst(Me.TVServer) End Function Public Function FindPrev_Server() Me.TVServer.SelectedNode = FindPrevNode(Me.TVServer) End Function Public Function FindNext_Server() Me.TVServer.SelectedNode = FindNextNode(Me.TVServer) End Function Public Function FindLast_Server() Me.TVServer.SelectedNode = FindLastNode(Me.TVServer) End Function Private Function FindFirst(ByRef Tree As TreeView) As TreeNode Try If Me.Treesearch.Nodes.Count > 0 Then Me.Treesearch.SelectedNode = Me.Treesearch.Nodes(0) Return FindNode(Tree.Nodes, Treesearch.SelectedNode.Tag, "") Catch End Try End Function Private Function FindNextNode(ByRef tree As TreeView) As TreeNode Try Treesearch.SelectedNode = Treesearch.SelectedNode.NextNode If Treesearch.SelectedNode Is Nothing Then Return FindFirst(tree) End If Return Me.FindNode(tree.Nodes, Treesearch.SelectedNode.Tag, "") Catch ex As Exception End Try End Function Private Function FindPrevNode(ByRef tree As TreeView) As TreeNode Try Treesearch.SelectedNode = Treesearch.SelectedNode.PrevNode If Treesearch.SelectedNode Is Nothing Then Return FindLastNode(tree) End If Return Me.FindNode(tree.Nodes, Treesearch.SelectedNode.Tag, "") Catch ex As Exception End Try End Function Private Function FindLastNode(ByRef tree As TreeView) As TreeNode Try Treesearch.SelectedNode = Treesearch.Nodes(Treesearch.Nodes.Count - 1) Return Me.FindNode(tree.Nodes, Treesearch.SelectedNode.Tag, "") Catch ex As Exception End Try End Function Private Function Update_Treesearch(ByVal Tag As Integer, ByVal ptag As Integer, ByVal Bezeichnung As String, ByVal Beschreibung As String) For Each r As DataRow In Server.Tree_Data_For_Search.Rows If r.Item(0) = Tag Then r.Item(1) = 1 = ptag r.Item(2) = Bezeichnung r.Item(4) = Beschreibung End If Next End Function Private Function FindNode(ByVal _nodeCollection As TreeNodeCollection, ByVal SearchVal As Integer, ByVal SearchString As String) As TreeNode Dim tmpNode As TreeNode For Each _child As TreeNode In _nodeCollection If _child.Tag = SearchVal Then Return _child End If 'If InStr(UCase(_child.Text), UCase(SearchString)) > 0 Then ' Return _child ' End If tmpNode = FindNode(_child.Nodes, SearchVal, SearchString) If Not tmpNode Is Nothing Then Return tmpNode End If Next Return Nothing End Function Private Function FindNode_string(ByVal _nodeCollection As TreeNodeCollection, ByVal SearchVal As Integer, ByVal SearchString As String) As TreeNode Dim tmpNode As TreeNode For Each _child As TreeNode In _nodeCollection 'If _child.Tag = SearchVal Then ' ' Return _child ' End If If UCase(_child.Text) = UCase(SearchString) Then Return _child End If tmpNode = FindNode_string(_child.Nodes, SearchVal, SearchString) If Not tmpNode Is Nothing Then Return tmpNode End If Next Return Nothing End Function Private Sub NeuerEintragToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NeuerEintragToolStripMenuItem.Click iumgebung = 0 ikategorie = 0 Try iumgebung = Me.cbboxUmgebung.SelectedValue Catch iumgebung = 0 End Try Try ikategorie = Me.cbboxKategorie.SelectedValue Catch ex As Exception ikategorie = 0 End Try Me.Add_New() End Sub Private Sub EintragLöschenToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles EintragLöschenToolStripMenuItem1.Click Me.Delete() End Sub Private Sub EintragAktivierenToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles EintragAktivierenToolStripMenuItem1.Click Me.Activate() End Sub Private Sub ctxmenuServer_Opening(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles ctxmenuServer.Opening If Me.TVServer.SelectedNode.Tag > 0 And Me.TVServer.SelectedNode.Tag < 10000 Then Else Me.EintragAktivierenToolStripMenuItem1.Enabled = False Me.EintragLöschenToolStripMenuItem1.Enabled = False Exit Sub End If If Me.TVServer.SelectedNode.ImageIndex = 4 Then Me.EintragAktivierenToolStripMenuItem1.Enabled = True Me.EintragLöschenToolStripMenuItem1.Enabled = False Else Me.EintragAktivierenToolStripMenuItem1.Enabled = False Me.EintragLöschenToolStripMenuItem1.Enabled = True End If End Sub Private Sub ctxMenuApplikation_Opening(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles ctxMenuApplikation.Opening Try If Me.TVApplikation.Nodes.Count < 1 Then Me.ApplikationAnzeigenToolStripMenuItem.Enabled = False Me.EintragLöschenToolStripMenuItem.Enabled = False Me.EintragAktivierenToolStripMenuItem.Enabled = False Exit Sub End If Me.ApplikationAnzeigenToolStripMenuItem.Enabled = True If Me.TVApplikation.SelectedNode.ImageIndex = 1 Then Me.EintragAktivierenToolStripMenuItem.Enabled = True Me.EintragLöschenToolStripMenuItem.Enabled = False Else Me.EintragAktivierenToolStripMenuItem.Enabled = False Me.EintragLöschenToolStripMenuItem.Enabled = True End If Catch End Try End Sub Private Sub EintragAktivierenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles EintragAktivierenToolStripMenuItem.Click Server.Activate_Server_Application(TVApplikation.SelectedNode.Tag) Me.TVApplikation.SelectedNode.ImageIndex = 0 evh.Fire_ServerInventar_Changed(TVApplikation.SelectedNode.Tag) End Sub Dim treedata_for_search As New DataTable Dim Allnodes As List(Of String) = New List(Of String) Dim subnodes As List(Of String) = New List(Of String) Public Function Init_search(ByRef treeview As DevComponents.AdvTree.AdvTree) Me.treedata_for_search.Clear() Me.treedata_for_search.Columns.Clear() Me.treedata_for_search.Columns.Add("key") Me.treedata_for_search.Columns.Add("Bez") Allnodes.Clear() subnodes.Clear() Dim i As Integer For Each n As DevComponents.AdvTree.Node In treeview.Nodes subnodes = GetChildren(n) For i = 0 To subnodes.Count - 1 Allnodes.Add(subnodes(i)) Next Dim r As DataRow = treedata_for_search.NewRow r.Item(0) = n.Tag.ToString r.Item(1) = n.Text treedata_for_search.Rows.Add(r) Allnodes.Add(n.Tag + n.Text) Next End Function Function GetChildren(parentNode As DevComponents.AdvTree.Node) As List(Of String) Dim nodes As List(Of String) = New List(Of String) GetAllChildren(parentNode, nodes) Return nodes End Function Sub GetAllChildren(parentNode As DevComponents.AdvTree.Node, nodes As List(Of String)) For Each childNode As DevComponents.AdvTree.Node In parentNode.Nodes nodes.Add(childNode.Tag.ToString + childNode.Text) Dim r As DataRow = treedata_for_search.NewRow r.Item(0) = childNode.Tag.ToString r.Item(1) = childNode.Text treedata_for_search.Rows.Add(r) GetAllChildren(childNode, nodes) Next End Sub Private Sub SecurityObjekteGenerierenToolStripMenuItem_Click(sender As Object, e As EventArgs) End Sub Private Sub tsbtnSecurityObjekteGenerieren_Click(sender As Object, e As EventArgs) Handles tsbtnSecurityObjekteGenerieren.Click If InputBox("Passwort:") <> "341211" Then Exit Sub sec.List_Class_Controls(Me, "clsServerInventar") sec.Print_Screen(Me) End Sub End Class