Public Class MassnahmeDetailBearbeitung
#Region "Deklarationen"
Dim OnRefresh_Findings As Boolean = False
Dim m_MassnahmeNr As Integer
Property Massnahmenr As Integer
Get
Return m_MassnahmeNr
End Get
Set(value As Integer)
m_MassnahmeNr = value
End Set
End Property
Dim m_handler As Integer
Property Handler As Integer
Get
Return m_handler
End Get
Set(value As Integer)
m_handler = 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 status As New clsStatus
Dim massnahme As New clsMassnahme
#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
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)
If UCase(sender.name) = "TXTFINDINGBEZEICHNUNG" Or UCase(sender.NAME) = "TXTFINDINGBESCHREIBUNG" Then Exit Sub
If UCase(sender.name) = "TXTMASSNAHMEBEZEICHNUNG" Or UCase(sender.NAME) = "TXTMASSNAHMEBESCHREIBUNG" Then Exit Sub
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
Private Sub MassnahmeDetailBearbeitung_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.massnahme.Get_Data(Me.Massnahmenr)
If massnahme.iAktueller_Verantwortlicher.Value <> Globals.clsmitarbeiter.iMitarbeiternr.Value Then Me.IsReadonly = True
Refresh_Details()
status.Get_Mögliche_Status(massnahme.iStatusNr, cbboxStatus)
AddChanges(Me)
If Me.IsReadonly = True Then
sec.Set_Form_Readonly(Me)
Me.DokumenteAllgemein.Show_Toolbar = False
End If
Me.DokumenteAllgemein.ConnectionString = Globals.sConnectionString
Me.DokumenteAllgemein.Mitarbeiternr = Globals.clsmitarbeiter.iMitarbeiternr.Value
Me.DokumenteAllgemein.Doktype = 8
Me.DokumenteAllgemein.ThemaNr = Me.Massnahmenr
Me.DokumenteAllgemein.TempFilePath = Globals.clsapplication.sTmp_filepath.Value
Me.DokumenteAllgemein.Refresh()
End Sub
Private Sub Refresh_Details()
Me.txtBeschreibung.Text = Me.massnahme.sMassnahmeResultat.Value
Me.DokumenteAllgemein.Refresh_Dokumente()
End Sub
Private Sub TSBtnSave_Click(sender As Object, e As EventArgs) Handles TSBtnSave.Click
save_data
End Sub
Private Sub Save_Data()
Me.massnahme.sMassnahmeResultat = New SqlTypes.SqlString(CType(Me.txtBeschreibung.Text, String))
Me.massnahme.Save_Data()
massnahme.Get_Data(Me.Massnahmenr)
If massnahme.iStatusNr.Value <> 2 Then
massnahme.iStatusNr = New SqlTypes.SqlInt32(CType(2, Int32))
massnahme.iAktueller_Verantwortlicher = New SqlTypes.SqlInt32(CType(Globals.clsmitarbeiter.iMitarbeiternr.Value, Int32))
massnahme.Save_Data()
End If
Me.FormDataChanged = False
End Sub
Private Sub TSBtnQuit_Click(sender As Object, e As EventArgs) Handles TSBtnQuit.Click
Me.Close()
End Sub
Private Sub btnPruefungabgeschlossen_Click(sender As Object, e As EventArgs) Handles btnPruefungabgeschlossen.Click
If MsgBox("Haben Sie die Prüfung abgeschlossen und das Resultat festgehlaten?", vbYesNo + vbQuestion) = vbYes Then
massnahme.Get_Data(Me.Massnahmenr)
massnahme.iStatusNr = New SqlTypes.SqlInt32(CType(8, Int32))
massnahme.Save_Data()
If massnahme.iVerantwortlichNr.Value = massnahme.iAktueller_Verantwortlicher.Value Then
massnahme.iStatusNr = New SqlTypes.SqlInt32(CType(3, Int32))
Else
massnahme.iAktueller_Verantwortlicher = New SqlTypes.SqlInt32(CType(massnahme.iVerantwortlichNr.Value, Int32))
massnahme.iStatusNr = New SqlTypes.SqlInt32(CType(3, Int32))
End If
massnahme.Save_Data()
Me.Close()
End If
End Sub
#End Region
End Class