Public Class frmMassnahmeplanDetail
#Region "Deklarationen"
Dim m_massnahmeplanhandler As Integer
Property massnahmeplanHandler As Integer
Get
Return m_massnahmeplanhandler
End Get
Set(value As Integer)
m_massnahmeplanhandler = value
End Set
End Property
Dim m_massnahmeplannr As Integer
Property massnahmeplannr As Integer
Get
Return m_massnahmeplannr
End Get
Set(value As Integer)
m_massnahmeplannr = 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 massnahmeplan As New clsMassnahmeplan
Dim massnahmeplanStruktur 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 Check_Changes() = False Then
e.Cancel = True
Else
evh.massnahmeplandetail_close(Me.massnahmeplanHandler, Me.massnahmeplannr)
massnahmeplan.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
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 frmMassnahmeplanDetail_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.DokumenteAllgemein.ConnectionString = Globals.sConnectionString
Me.DokumenteAllgemein.Mitarbeiternr = Globals.clsmitarbeiter.iMitarbeiternr.Value
Me.DokumenteAllgemein.Doktype = 7
Me.DokumenteAllgemein.ThemaNr = Me.massnahmeplannr
Me.DokumenteAllgemein.TempFilePath = Globals.clsapplication.sTmp_filepath.Value
Me.DokumenteAllgemein.Refresh()
Me.cbboxPrioritaet.DataSource = massnahmeplan.Prioritaet
Me.cbboxPrioritaet.DisplayMember = "Bezeichnung"
Me.cbboxPrioritaet.ValueMember = "Prioritaetnr"
Me.cbboxPeriodizitaet.DataSource = massnahmeplan.Periodizitaet
Me.cbboxPeriodizitaet.DisplayMember = "Bezeichnung"
Me.cbboxPeriodizitaet.ValueMember = "PeriodizitaetNr"
Me.cbboxZeitpunkt.DataSource = massnahmeplan.Zeitpunkt
Me.cbboxZeitpunkt.DisplayMember = "Bezeichnung"
Me.cbboxZeitpunkt.ValueMember = "Zeitpunktnr"
Me.cbboxVerantwortungISI.DataSource = massnahmeplan.VerantwortungISI
Me.cbboxVerantwortungISI.DisplayMember = "Bezeichnung"
Me.cbboxVerantwortungISI.ValueMember = "VerantwortungISINr"
Me.cbboxVerantwortlich.DataSource = massnahmeplan.Verantwortung
Me.cbboxVerantwortlich.DisplayMember = "Bezeichnung"
Me.cbboxVerantwortlich.ValueMember = "Verantwortungnr"
Me.cbboxTerminierung.DataSource = massnahmeplan.Terminierung
Me.cbboxTerminierung.DisplayMember = "Bezeichnung"
Me.cbboxTerminierung.ValueMember = "id"
If massnahmeplannr > 0 Then
massnahmeplan.Get_Definition_massnahmeplan(Me.massnahmeplannr, Me.TreeZuordnung)
get_data()
Else
massnahmeplan.Get_Definition_massnahmeplan(Me.massnahmeplannr, Me.TreeZuordnung)
Me.dtGueltigBis.Value = "31.12.2099"
End If
Me.txtBezeichnung.SelectAll()
Me.txtBezeichnung.Focus()
AddChanges(Me)
End Sub
Private Sub get_data()
massnahmeplan.Get_Data(Me.massnahmeplannr)
Me.cbboxPeriodizitaet.SelectedValue = massnahmeplan.iPeriodizitaetNr.Value
Me.cbboxPrioritaet.SelectedValue = massnahmeplan.iPrioritaetNr.Value
Me.cbboxZeitpunkt.SelectedValue = massnahmeplan.iZeitpunktNr.Value
Me.dtErstmalsam.Value = massnahmeplan.daErstmals_am.Value
Me.cbboxVerantwortlich.SelectedValue = massnahmeplan.iVerantwortlichNr.Value
Me.cbboxVerantwortungISI.SelectedValue = massnahmeplan.iVerantwortungISINr.Value
Me.txtBeschreibung.Text = massnahmeplan.sBeschreibung.Value
Me.txtBezeichnung.Text = massnahmeplan.sBezeichnung.Value
Me.txtHilfsmittel.Text = massnahmeplan.sHilfsmittel.Value
'Me.txtBezeichnung.Text = massnahmeplan.sBezeichnung.Value
'Me.txtBeschreibung.Text = massnahmeplan.sBezeichnung.Value
Me.txtPruefgegenstand.Text = massnahmeplan.sPruefgegenstand.Value
Me.txtEreignisse.Text = massnahmeplan.sErgebnisse.Value
Me.txtMassnahmen.Text = massnahmeplan.sMassnahmen.Value
Me.txtErstelltam.Text = massnahmeplan.daErstellt_am.ToSqlString
Me.txtMutiertam.Text = massnahmeplan.daMutiert_am
Me.txtMutierer.Text = massnahmeplan.MutiererText
Me.cbAktiv.Checked = massnahmeplan.bAktiv.Value
Me.dtGueltigBis.Value = massnahmeplan.daGueltig_Bis.Value
Me.cbAktiv.Checked = massnahmeplan.bAktiv.Value = True
Me.cbboxTerminierung.SelectedValue = massnahmeplan.iTerminierungID.Value
End Sub
Private Sub Update_Data()
massnahmeplan.iPeriodizitaetNr = New SqlTypes.SqlInt32(CType(Me.cbboxPeriodizitaet.SelectedValue, Int32))
massnahmeplan.iPrioritaetNr = New SqlTypes.SqlInt32(CType(Me.cbboxPrioritaet.SelectedValue, Int32))
massnahmeplan.iZeitpunktNr = New SqlTypes.SqlInt32(CType(Me.cbboxZeitpunkt.SelectedValue, Int32))
massnahmeplan.iVerantwortlichNr = New SqlTypes.SqlInt32(CType(Me.cbboxVerantwortlich.SelectedValue, Int32))
massnahmeplan.iVerantwortungISINr = New SqlTypes.SqlInt32(CType(Me.cbboxVerantwortungISI.SelectedValue, Int32))
massnahmeplan.daErstmals_am = New SqlTypes.SqlDateTime(CType(Me.dtErstmalsam.Value, DateTime))
massnahmeplan.sBeschreibung = New SqlTypes.SqlString(CType(Me.txtBeschreibung.Text, String))
massnahmeplan.sPruefgegenstand = New SqlTypes.SqlString(CType(Me.txtPruefgegenstand.Text, String))
massnahmeplan.sMassnahmen = New SqlTypes.SqlString(CType(Me.txtMassnahmen.Text, String))
massnahmeplan.sErgebnisse = New SqlTypes.SqlString(CType(Me.txtEreignisse.Text, String))
massnahmeplan.sHilfsmittel = New SqlTypes.SqlString(CType(Me.txtHilfsmittel.Text, String))
massnahmeplan.bAktiv = New SqlTypes.SqlBoolean(CType(Me.cbAktiv.Checked = True, Boolean))
massnahmeplan.sBezeichnung = New SqlTypes.SqlString(CType(Me.txtBezeichnung.Text, String))
massnahmeplan.bAktiv = New SqlTypes.SqlBoolean(CType(Me.cbAktiv.Checked = True, Boolean))
massnahmeplan.daGueltig_Bis = New SqlTypes.SqlDateTime(CType(Me.dtGueltigBis.Value, DateTime))
massnahmeplan.iTerminierungID = New SqlTypes.SqlInt32(CType(Me.cbboxTerminierung.SelectedValue, Int32))
massnahmeplan.Save_Data()
massnahmeplan.Save_Definition_massnahmeplan(Me.TreeZuordnung)
massnahmeplan.Get_Definition_massnahmeplan(Me.massnahmeplannr, 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.massnahmeplannr = 0 Then
Dim newkey As Integer = massnahmeplan.Add_New()
Me.massnahmeplannr = newkey
massnahmeplan.Get_Data(newkey)
Me.cbAktiv.Checked = True
Else
massnahmeplan.Get_Data(Me.massnahmeplannr)
End If
Update_Data()
evh.massnahmeplandetail_save(Me.massnahmeplanHandler, Me.massnahmeplannr)
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
massnahmeplanStruktur.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 Then Me.Save_data()
If Me.massnahmeplannr = 0 Then Me.Save_data()
If Me.GrpStruktur.Visible = False Then
Me.GrpStruktur.Visible = True
Me.GrpStruktur.Dock = DockStyle.Fill
massnahmeplanStruktur.Load_Treeview(TreeStruktur)
massnahmeplanStruktur.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
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
' massnahmeplan.Add_new_Zuordnung(Me.massnahmeplannr, key, Me.TreeStruktur.SelectedNode.Text, Me.chklbDefinitionZuordnung)
massnahmeplan.Add_new_Zuordnung(Me.massnahmeplannr, 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 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
massnahmeplan.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.massnahmeplanStruktur.Init_Search()
Me.TreeStruktur.SelectedNode = massnahmeplanStruktur.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.massnahmeplanStruktur.Init_Search()
End Sub
Private Sub TSBtnFirst_Click(sender As Object, e As EventArgs) Handles TSBtnFirst.Click
Me.TreeStruktur.SelectedNode = massnahmeplanStruktur.FindFirst(Me.TreeStruktur)
End Sub
Private Sub TSBtnPrevious_Click(sender As Object, e As EventArgs) Handles TSBtnPrevious.Click
Me.TreeStruktur.SelectedNode = massnahmeplanStruktur.FindPrevNode(Me.TreeStruktur)
End Sub
Private Sub TSBtnNext_Click(sender As Object, e As EventArgs) Handles TSBtnNext.Click
Me.TreeStruktur.SelectedNode = massnahmeplanStruktur.FindNextNode(Me.TreeStruktur)
End Sub
Private Sub TSBtnLast_Click(sender As Object, e As EventArgs) Handles TSBtnLast.Click
Me.TreeStruktur.SelectedNode = massnahmeplanStruktur.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
#End Region
End Class