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/05/0527a1f2bae1f067dae729faf34...

489 lines
20 KiB

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"
''' <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
evh.massnahmeplandetail_close(Me.massnahmeplanHandler, Me.massnahmeplannr)
massnahmeplan.dispose()
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)
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
#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