Public Class frmPruefplanDetail #Region "Deklarationen" Dim m_pruefplanhandler As Integer Property PruefplanHandler As Integer Get Return m_pruefplanhandler End Get Set(value As Integer) m_pruefplanhandler = value End Set End Property Dim m_Pruefplannr As Integer Property Pruefplannr As Integer Get Return m_Pruefplannr End Get Set(value As Integer) m_Pruefplannr = value End Set End Property Dim m_readonly As Boolean Property IsReadonly As Boolean Get Return m_readonly End Get Set(value As Boolean) m_readonly = value End Set End Property Dim WithEvents evh As MyGenericEventHandler = Globals.MyEventHanlder Dim sec As New Utils.MySecurity Dim msg As New Utils.MyMessage Dim FormReadonly As Boolean = False Dim FormDataChanged As Boolean = False Dim Pruefplan As New clspruefplan Dim PruefPlanStruktur As New clsPlanTree #End Region #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 Me.TSBtnSave.Visible = False Or Me.TSBtnSave.Enabled = False Then Exit Sub If Check_Changes() = False Then e.Cancel = True Else Pruefplan.dispose() evh.Pruefplandetail_close(Me.PruefplanHandler, Me.Pruefplannr) 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 If TypeOf c Is DateTimePicker Then Dim ctl As DateTimePicker = c AddHandler ctl.ValueChanged, evh 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 Private Sub generalhandler() 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" Sub New() ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() Me.DokumenteAllgemein.ConnectionString = Globals.sConnectionString Me.ImageList1 = Globals.GueltigImages Me.TreeStruktur.ImageList = Globals.GueltigImages Me.TreeZuordnung.ImageList = Globals.GueltigImages ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. End Sub Private Sub frmPruefplanDetail_Load(sender As Object, e As EventArgs) Handles MyBase.Load If Me.IsReadonly Then Me.TSBtnSave.Visible = False Me.DokumenteAllgemein.Show_Toolbar = False Me.FormReadonly = True End If Me.DokumenteAllgemein.ConnectionString = Globals.sConnectionString Me.DokumenteAllgemein.Mitarbeiternr = Globals.clsmitarbeiter.iMitarbeiternr.Value Me.DokumenteAllgemein.Doktype = 3 Me.DokumenteAllgemein.ThemaNr = Me.Pruefplannr Me.DokumenteAllgemein.TempFilePath = Globals.clsapplication.sTmp_filepath.Value Me.DokumenteAllgemein.Refresh() Me.cbboxPrioritaet.DataSource = Pruefplan.Prioritaet Me.cbboxPrioritaet.DisplayMember = "Bezeichnung" Me.cbboxPrioritaet.ValueMember = "Prioritaetnr" Me.cbboxPeriodizitaet.DataSource = Pruefplan.Periodizitaet Me.cbboxPeriodizitaet.DisplayMember = "Bezeichnung" Me.cbboxPeriodizitaet.ValueMember = "PeriodizitaetNr" Me.cbboxZeitpunkt.DataSource = Pruefplan.Zeitpunkt Me.cbboxZeitpunkt.DisplayMember = "Bezeichnung" Me.cbboxZeitpunkt.ValueMember = "Zeitpunktnr" Me.cbboxVerantwortungKontrolle.DataSource = Pruefplan.VerantwortungISI Me.cbboxVerantwortungKontrolle.DisplayMember = "Bezeichnung" Me.cbboxVerantwortungKontrolle.ValueMember = "VerantwortungISINr" Me.cbboxVerantwortungPlan.DataSource = Pruefplan.VerantwortungPlan Me.cbboxVerantwortungPlan.DisplayMember = "Bezeichnung" Me.cbboxVerantwortungPlan.ValueMember = "VerantwortungISINr" Me.cbboxVerantwortungDurchführung.DataSource = Pruefplan.Verantwortung Me.cbboxVerantwortungDurchführung.DisplayMember = "Bezeichnung" Me.cbboxVerantwortungDurchführung.ValueMember = "Verantwortungnr" Me.cbboxTerminierung.DataSource = Pruefplan.Terminierung Me.cbboxTerminierung.DisplayMember = "Bezeichnung" Me.cbboxTerminierung.ValueMember = "id" If Pruefplannr > 0 Then Pruefplan.Get_Definition_Pruefplan(Me.Pruefplannr, Me.TreeZuordnung) get_data() Else Pruefplan.Get_Definition_Pruefplan(Me.Pruefplannr, Me.TreeZuordnung) Me.dtGueltigBis.Value = "31.12.2099" End If Me.txtBezeichnung.SelectAll() Me.txtBezeichnung.Focus() AddChanges(Me) sec.Set_Form_Security(Me) If Me.TSBtnSave.Visible = False Or Me.TSBtnSave.Enabled = False Then Me.DokumenteAllgemein.Show_Toolbar = False Me.FormReadonly = True End If End Sub Private Sub get_data() Pruefplan.Get_Data(Me.Pruefplannr) Me.cbboxPeriodizitaet.SelectedValue = Pruefplan.iPeriodizitaetNr.Value Me.cbboxPrioritaet.SelectedValue = Pruefplan.iPrioritaetNr.Value Me.cbboxZeitpunkt.SelectedValue = Pruefplan.iZeitpunktNr.Value Me.dtErstmalsam.Value = Pruefplan.daErstmals_am.Value Me.cbboxVerantwortungDurchführung.SelectedValue = Pruefplan.iVerantwortlichNr.Value Me.cbboxVerantwortungKontrolle.SelectedValue = Pruefplan.iVerantwortungISINr.Value Me.cbboxVerantwortungPlan.SelectedValue = Pruefplan.iverantwortungplannr.value Me.txtBeschreibung.Text = Pruefplan.sBeschreibung.Value Me.txtBezeichnung.Text = Pruefplan.sBezeichnung.Value Me.txtHilfsmittel.Text = Pruefplan.sHilfsmittel.Value 'Me.txtBezeichnung.Text = Pruefplan.sBezeichnung.Value 'Me.txtBeschreibung.Text = Pruefplan.sBezeichnung.Value Me.txtPruefgegenstand.Text = Pruefplan.sPruefgegenstand.Value Me.txtEreignisse.Text = Pruefplan.sErgebnisse.Value Me.txtMassnahmen.Text = Pruefplan.sMassnahmen.Value Me.txtErstelltam.Text = Pruefplan.daErstellt_am.ToSqlString Me.txtMutiertam.Text = Pruefplan.daMutiert_am Me.txtMutierer.Text = Pruefplan.MutiererText Me.cbAktiv.Checked = Pruefplan.bAktiv.Value Me.dtGueltigBis.Value = Pruefplan.daGueltig_Bis.Value Me.cbAktiv.Checked = Pruefplan.bAktiv.Value = True Me.cbboxTerminierung.SelectedValue = Pruefplan.iTerminierungID.Value Me.cbSelbstkontrolle.Checked = Pruefplan.bSelbstkontrolle.Value = True Me.cbKeinEMail.Checked = Pruefplan.bKein_Mailversand.Value = True Me.rbAssessmentTyp_Anzahl.Checked = False Me.rbAssessmentTyp_Massen.Checked = False Me.rbAssessmenttyp_Normal.Checked = False Select Case Pruefplan.iAssessmentType.Value Case 1 Me.rbAssessmenttyp_Normal.Checked = True Case 2 Me.rbAssessmentTyp_Anzahl.Checked = True Case 3 Me.rbAssessmentTyp_Massen.Checked = True End Select Me.cbDurchfuerhung_ISI.Checked = Pruefplan.bDurchfuehrung_ISI.Value = True End Sub Private Sub Update_Data() Pruefplan.iPeriodizitaetNr = New SqlTypes.SqlInt32(CType(Me.cbboxPeriodizitaet.SelectedValue, Int32)) Pruefplan.iPrioritaetNr = New SqlTypes.SqlInt32(CType(Me.cbboxPrioritaet.SelectedValue, Int32)) Pruefplan.iZeitpunktNr = New SqlTypes.SqlInt32(CType(Me.cbboxZeitpunkt.SelectedValue, Int32)) Pruefplan.iVerantwortlichNr = New SqlTypes.SqlInt32(CType(Me.cbboxVerantwortungDurchführung.SelectedValue, Int32)) Pruefplan.iVerantwortungISINr = New SqlTypes.SqlInt32(CType(Me.cbboxVerantwortungKontrolle.SelectedValue, Int32)) Pruefplan.iverantwortungplannr = New SqlTypes.SqlInt64(CType(Me.cbboxVerantwortungPlan.SelectedValue, Int32)) Pruefplan.daErstmals_am = New SqlTypes.SqlDateTime(CType(Me.dtErstmalsam.Value, DateTime)) Pruefplan.sBeschreibung = New SqlTypes.SqlString(CType(Me.txtBeschreibung.Text, String)) Pruefplan.sPruefgegenstand = New SqlTypes.SqlString(CType(Me.txtPruefgegenstand.Text, String)) Pruefplan.sMassnahmen = New SqlTypes.SqlString(CType(Me.txtMassnahmen.Text, String)) Pruefplan.sErgebnisse = New SqlTypes.SqlString(CType(Me.txtEreignisse.Text, String)) Pruefplan.sHilfsmittel = New SqlTypes.SqlString(CType(Me.txtHilfsmittel.Text, String)) Pruefplan.bAktiv = New SqlTypes.SqlBoolean(CType(Me.cbAktiv.Checked = True, Boolean)) Pruefplan.sBezeichnung = New SqlTypes.SqlString(CType(Me.txtBezeichnung.Text, String)) Pruefplan.bAktiv = New SqlTypes.SqlBoolean(CType(Me.cbAktiv.Checked = True, Boolean)) Pruefplan.daGueltig_Bis = New SqlTypes.SqlDateTime(CType(Me.dtGueltigBis.Value, DateTime)) Pruefplan.iTerminierungID = New SqlTypes.SqlInt32(CType(Me.cbboxTerminierung.SelectedValue, Int32)) Pruefplan.bSelbstkontrolle = New SqlTypes.SqlBoolean(CType(Me.cbSelbstkontrolle.Checked, Boolean)) Pruefplan.bKein_Mailversand = New SqlTypes.SqlBoolean(CType(Me.cbKeinEMail.Checked, Boolean)) If rbAssessmenttyp_Normal.Checked Then Pruefplan.iAssessmentType = New SqlTypes.SqlInt32(CType(1, Int32)) If rbAssessmentTyp_Anzahl.Checked Then Pruefplan.iAssessmentType = New SqlTypes.SqlInt32(CType(2, Int32)) If rbAssessmentTyp_Massen.Checked Then Pruefplan.iAssessmentType = New SqlTypes.SqlInt32(CType(3, Int32)) Pruefplan.bDurchfuehrung_ISI = New SqlTypes.SqlBoolean(CType(Me.cbDurchfuerhung_ISI.Checked, Boolean)) Pruefplan.Save_Data() Pruefplan.Save_Definition_Pruefplan(Me.TreeZuordnung) Pruefplan.Get_Definition_Pruefplan(Me.Pruefplannr, Me.TreeZuordnung) End Sub #End Region #Region "Toolbar" Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles TSBtnSave.Click Save_data() End Sub Sub Save_data() DialogResult = Windows.Forms.DialogResult.OK If Me.Pruefplannr = 0 Then Dim newkey As Integer = Pruefplan.Add_New() Me.Pruefplannr = newkey Pruefplan.Get_Data(newkey) Me.cbAktiv.Checked = True Else Pruefplan.Get_Data(Me.Pruefplannr) End If Update_Data() evh.Pruefplandetails_save(Me.PruefplanHandler, Me.Pruefplannr) FormDataChanged = False End Sub Private Sub TSBtnQuit_Click(sender As Object, e As EventArgs) Handles TSBtnQuit.Click Me.Close() End Sub Private Sub tsCbxFilter_SelectedIndexChanged(sender As Object, e As EventArgs) Handles tsCbxFilter.SelectedIndexChanged PruefPlanStruktur.Load_Treeview(Me.TreeStruktur) If tsCbxFilter.Text = "-- Alle --" Then Exit Sub Try For Each n As DevComponents.AdvTree.Node In Me.TreeStruktur.Nodes If Trim(n.Text) <> Trim(tsCbxFilter.Text) Then n.Remove() End If Next Catch End Try End Sub #End Region #Region "Zuordnung" Private Sub btnNeueZuordnung_Click(sender As Object, e As EventArgs) Handles btnNeueZuordnung.Click If Me.FormDataChanged = True And Me.TSBtnSave.Visible = True And Me.TSBtnSave.Enabled = True Then Me.Save_data() If Me.Pruefplannr = 0 Then Me.Save_data() If Me.GrpStruktur.Visible = False Then Me.GrpStruktur.Visible = True Me.GrpStruktur.Dock = DockStyle.Fill PruefPlanStruktur.Load_Treeview(TreeStruktur) PruefPlanStruktur.Refresh_Filter(Me.tsCbxFilter) Me.btnNeueZuordnung.Text = "Struktur verbergen" Else Me.GrpStruktur.Visible = False End If End Sub #End Region #Region "Tree" Private Sub TreeStruktur_DoubleClick(sender As Object, e As EventArgs) Handles TreeStruktur.DoubleClick If Me.TSBtnSave.Visible = False Or Me.TSBtnSave.Enabled = False Then Exit Sub Try If TreeStruktur.SelectedNode.Nodes.Count > 0 Then MsgBox("Für die Zuordnung können nur Elemente der untersten Stufe (Definitionen) verwendet werden.", vbExclamation) Exit Sub End If Dim key As Integer = Me.TreeStruktur.SelectedNode.Tag / 1000000 ' Pruefplan.Add_new_Zuordnung(Me.Pruefplannr, key, Me.TreeStruktur.SelectedNode.Text, Me.chklbDefinitionZuordnung) Pruefplan.Add_new_Zuordnung(Me.Pruefplannr, key, Me.TreeStruktur.SelectedNode.Text, Me.TreeZuordnung) Me.FormDataChanged = True Catch End Try End Sub Private Sub TreeZuordnung_DoubleClick(sender As Object, e As EventArgs) Handles TreeZuordnung.DoubleClick If Me.TSBtnSave.Enabled = False Or Me.TSBtnSave.Visible = False Then Exit Sub If IsDate(Me.TreeZuordnung.SelectedNode.Text) Then TreeZuordnung.SelectedNode = Me.TreeZuordnung.SelectedNode.Parent End If Dim f As New FrmDefinition_Pruefplan f.Aktiv = TreeZuordnung.SelectedNode.Nodes(0).Tag f.Gueltig_Bis = TreeZuordnung.SelectedNode.Nodes(0).Text f.ShowDialog() Dim save_date As String = TreeZuordnung.SelectedNode.Nodes(0).Text Dim save_aktiv As String = TreeZuordnung.SelectedNode.Nodes(0).Tag Dim TN As New DevComponents.AdvTree.Node Dim DoSave As Boolean = True TN = Me.TreeZuordnung.SelectedNode TreeZuordnung.SelectedNode.Nodes(0).Tag = f.Aktiv TreeZuordnung.SelectedNode.Nodes(0).Text = f.Gueltig_Bis TreeZuordnung.SelectedNode.ImageIndex = 0 For Each n As DevComponents.AdvTree.Node In Me.TreeZuordnung.Nodes If n.Tag <> Me.TreeZuordnung.SelectedNode.Tag Then If n.Text = Me.TreeZuordnung.SelectedNode.Text Then If (TreeZuordnung.SelectedNode.ImageIndex = 0 Or TreeZuordnung.SelectedNode.ImageIndex = 3) And n.ImageIndex <> 2 And n.ImageIndex <> 1 Then MsgBox("Es können nicht 2 aktive Verbindungen hergestellt werden") TreeZuordnung.SelectedNode.Nodes(0).Text = save_date TreeZuordnung.SelectedNode.Nodes(0).Tag = save_aktiv DoSave = False Exit For End If End If End If Next If TreeZuordnung.SelectedNode.Nodes(0).Text < "31.12.2099" And TreeZuordnung.SelectedNode.Text > Now.ToString Then TreeZuordnung.SelectedNode.ImageIndex = 3 If TreeZuordnung.SelectedNode.Nodes(0).Text < Now Then TreeZuordnung.SelectedNode.ImageIndex = 2 If TreeZuordnung.SelectedNode.Nodes(0).Tag = False Then TreeZuordnung.SelectedNode.ImageIndex = 1 If DoSave Then Pruefplan.Update_Zuordnung(Me.TreeZuordnung.SelectedNode.Tag, f.Aktiv, f.Gueltig_Bis) Me.FormDataChanged = True End If End Sub Private Sub TSBtnSuche_Click(sender As Object, e As EventArgs) Handles TSBtnSuche.Click Me.PruefPlanStruktur.Init_Search() Me.TreeStruktur.SelectedNode = PruefPlanStruktur.SearchNode(Me.TreeStruktur, Trim(Me.tstxtSuche.Text)) Me.TreeStruktur.SelectedNode.EnsureVisible() End Sub Private Sub TSBtnFilterAufheben_Click(sender As Object, e As EventArgs) Handles TSBtnFilterAufheben.Click Me.tstxtSuche.Text = "" Me.PruefPlanStruktur.Init_Search() End Sub Private Sub TSBtnFirst_Click(sender As Object, e As EventArgs) Handles TSBtnFirst.Click Me.TreeStruktur.SelectedNode = PruefPlanStruktur.FindFirst(Me.TreeStruktur) End Sub Private Sub TSBtnPrevious_Click(sender As Object, e As EventArgs) Handles TSBtnPrevious.Click Me.TreeStruktur.SelectedNode = PruefPlanStruktur.FindPrevNode(Me.TreeStruktur) End Sub Private Sub TSBtnNext_Click(sender As Object, e As EventArgs) Handles TSBtnNext.Click Me.TreeStruktur.SelectedNode = PruefPlanStruktur.FindNextNode(Me.TreeStruktur) End Sub Private Sub TSBtnLast_Click(sender As Object, e As EventArgs) Handles TSBtnLast.Click Me.TreeStruktur.SelectedNode = PruefPlanStruktur.FindLastNode(Me.TreeStruktur) End Sub Private Sub EintragBearbeitenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles EintragBearbeitenToolStripMenuItem.Click Try Me.TreeZuordnung_DoubleClick(sender, e) Catch ex As Exception End Try End Sub Private Sub NeuerEintragHinzufügenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NeuerEintragHinzufügenToolStripMenuItem.Click If btnNeueZuordnung.Text <> "Struktur verbergen" Then Me.btnNeueZuordnung_Click(sender, e) End Sub Private Sub MenuStrip1_ItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles MenuStrip1.ItemClicked End Sub Private Sub BeendenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles BeendenToolStripMenuItem.Click Me.Close() End Sub Private Sub cbSelbstkontrolle_CheckedChanged(sender As Object, e As EventArgs) Handles cbSelbstkontrolle.CheckedChanged Dim SaveKontrolle As Integer If Me.cbSelbstkontrolle.Checked Then SaveKontrolle = Me.cbboxVerantwortungKontrolle.SelectedValue End If Select Case Me.cbSelbstkontrolle.CheckState Case CheckState.Checked Me.cbboxVerantwortungKontrolle.SelectedValue = Me.cbboxVerantwortungDurchführung.SelectedValue Me.cbboxVerantwortungKontrolle.Enabled = False Try If Me.cbboxVerantwortungKontrolle.SelectedValue Is Nothing Then MsgBox("Selbstkontrolle kann nur gewählt werden, sofern Verantworung-Durchführung ein ISI-Mitarbeiter ist.", vbExclamation) Me.cbboxVerantwortungKontrolle.SelectedValue = SaveKontrolle Me.cbSelbstkontrolle.Checked = False End If Catch ex As Exception End Try Case CheckState.Unchecked Me.cbboxVerantwortungKontrolle.Enabled = True End Select End Sub #End Region End Class