You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
AssesmentMgmt/.svn/pristine/8e/8e07442355757ebc1b17a3593fd...

280 lines
10 KiB

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"
''' <summary>
''' Schliessen des Formulars
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
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
''' <summary>
''' Prüfung, ob Datenänderungen vorgenommen wurden.
''' </summary>
''' <remarks></remarks>
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"
''' <summary>
''' Allg Eventhandler für Chanage-Ereignise festlegen
''' </summary>
''' <param name="Container"></param>
''' <remarks></remarks>
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
''' <summary>
''' Envent-Handler für Change-Ereignisse
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
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
''' <summary>
''' 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
''' </summary>
''' <param name="BaseControl">Base-Contrlo (z.B. aktuelles Formular</param>
''' <param name="Key">Schlüssel welcher gesucht werden soll</param>
''' <param name="L">Liste der gefundenen Objekte</param>
''' <returns>True wenn eines oder mehr Controls gefunden wurden, false wenn kein Control gefunden wurde.
''' </returns>
''' <remarks></remarks>
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