Imports System.Data.SqlTypes Public Class frmServerInventar Dim Server As New TKB.VV.Server.clsServerinventar Dim sec As New TKB.VV.Utils.MySecurity Dim msg As New 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 #Region "Closing / Check_Changes" ''' ''' Schliessen des Formulars ''' ''' ''' ''' Private Sub FormularClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing 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 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" Private Sub frmServerInventar_Load(sender As Object, e As EventArgs) Handles MyBase.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.cbboxStandort.DataSource = Server.Kategorie Me.cbboxStandort.DisplayMember = "Bezeichnung" Me.cbboxStandort.ValueMember = "Server_KategorieNr" Server.Load_tree(Me.TVServer, 0) Me.TVServer.ExpandAll() Me.TVServer.SelectedNode = Me.TVServer.Nodes(0).Nodes(0) End Sub Private Sub TSBtnQuit_Click(sender As Object, e As EventArgs) Handles TSBtnQuit.Click Me.Close() End Sub #End Region #Region "Daten" ''' ''' Daten ab DB laden uns ins Form befüllen ''' ''' ''' Private Sub Get_Data(ByVal Servernr As Integer) Try 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.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 sec.Set_Form_Security(Me) refresh_applikation(Servernr) If Me.cbboxDB.SelectedValue = 1 Then Me.GrpDB.Height = 42 Else Me.GrpDB.Height = 185 Me.FormDataChanged = False Catch ex As Exception 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)) 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 #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 Private Sub TSBtnNew_Click(sender As Object, e As EventArgs) Handles TSBtnNew.Click If Me.Check_Changes = False Then Exit Sub Me.Get_Data(Me.Server.Add_New) Me.isnewServer = True End Sub Private Sub TSBtnSave_Click(sender As Object, e As EventArgs) Handles TSBtnSave.Click Me.Save_data() Server.Load_tree(Me.TVServer, 0) Me.TVServer.ExpandAll() Me.TVServer.SelectedNode = Me.TVServer.Nodes(0).Nodes(0) End Sub Private Sub TVServer_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles TVServer.AfterSelect Try If Me.TVServer.SelectedNode.Tag > 0 And Me.TVServer.SelectedNode.Tag < 10000 Then Me.RefreshData(Me.TVServer.SelectedNode.Tag) Catch ex As Exception End Try End Sub Private Sub RefreshData(id As Integer) Me.Get_Data(id) End Sub 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) 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 = Me.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 Server.Delete_Server_Applikation(Me.TVServer.SelectedNode.Tag, Me.TVApplikation.SelectedNode.Tag) refresh_applikation(Me.TVServer.SelectedNode.Tag) End If End Sub Private Sub btnDBOpen_Click(sender As Object, e As EventArgs) Handles btnDBOpen.Click Me.GrpDB.Height = 185 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 = 200 End Sub Private Sub SuchenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SuchenToolStripMenuItem.Click Me.tsSucheFilter.Text = "Suchen" End Sub Private Sub FilterToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles FilterToolStripMenuItem.Click Me.tsSucheFilter.Text = "Filter" End Sub Private Sub TSBtnNext_Click(sender As Object, e As EventArgs) Handles TSBtnNext.Click End Sub End Class