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.
ITSM/.svn/pristine/e2/e23c229ed6561c83ad9a595beed...

509 lines
19 KiB

Imports C1.Win.C1TrueDBGrid
Imports System.Data
Imports System.Data.SqlTypes
Imports System.Data.SqlClient
Public Class FrmReleaseLogbuch
#Region "Deklarationen"
Dim ApplikationLogbuch As New TKB.VV.Applikation.clsApplikationLogbuch
Dim sec As New TKB.VV.Utils.MySecurity
Dim msg As New TKB.VV.Utils.MyMessage
Dim FormReadonly As Boolean = False
Dim FormDataChanged As Boolean = False
Dim SpaltenTitel As New TKB.VV.Utils.Tabellenspalte
Private ApplikationLogbuchNr As Integer
Private Applikationsnr As Integer
Dim Neuer_Datensatz As Boolean = False
#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 CheckBox Then
Dim ctl As CheckBox = c
AddHandler ctl.CheckedChanged, evh
End If
If TypeOf c Is ListBox Then
Dim ctl As ListBox = c
AddHandler ctl.SelectedValueChanged, evh
End If
Next
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 "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
If Me.ApplikationLogbuch.Neuer_Datensatz = True Then Me.ApplikationLogbuch.Delete(Me.ApplikationLogbuch.iApplikationLogbuchNr.Value)
Globals.MyEventHanlder.ReleaseLobuchClosed()
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
Return True
End Select
Else
Return True
End If
End Function
#End Region
#Region "Formular"
Sub New()
InitializeComponent()
End Sub
Sub New(ByVal ApplikationLogbuchNr As Integer, ByVal Applikationsnr As Integer, Optional ByVal CreateNew As Boolean = False, Optional ByVal FormReadOnly As Boolean = False)
InitializeComponent()
Me.FormReadonly = FormReadOnly
If CreateNew = True Then
Me.ApplikationLogbuchNr = Me.ApplikationLogbuch.Add_New(Applikationsnr)
Me.Neuer_Datensatz = True
Else
Me.ApplikationLogbuchNr = ApplikationLogbuchNr
End If
Me.Applikationsnr = Applikationsnr
End Sub
Private Sub FrmReleaseLogbuch_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
sec.Set_Form_Security(Me)
If Me.FormReadonly = True Then Me.TSBtnSave.Enabled = False
If Me.TSBtnSave.Enabled = False Or Me.TSBtnSave.Visible = False Then
Me.FormReadonly = True
Me.TSBtnDelete.Enabled = False
Else
Me.FormReadonly = False
End If
Me.cboReleaseArt.DataSource = Me.ApplikationLogbuch.Releasearten
Me.cboReleaseArt.DisplayMember = "Bezeichnung"
Me.cboReleaseArt.ValueMember = "Releaseartnr"
Me.cboTecPerson.DataSource = Me.ApplikationLogbuch.Personen
Me.cboTecPerson.DisplayMember = "Bezeichnung"
Me.cboTecPerson.ValueMember = "Personnr"
Me.cboFachperson.DataSource = Me.ApplikationLogbuch.Personen1
Me.cboFachperson.DisplayMember = "Bezeichnung"
Me.cboFachperson.ValueMember = "Personnr"
Me.cboFreigabePerson.DataSource = Me.ApplikationLogbuch.Personen2
Me.cboFreigabePerson.DisplayMember = "Bezeichnung"
Me.cboFreigabePerson.ValueMember = "Personnr"
Me.AddChanges(Me)
Get_Data(Me.ApplikationLogbuchNr)
If Me.Neuer_Datensatz = True Then
Me.ApplikationLogbuch.Neuer_Datensatz = True
Me.Neuer_Datensatz = False
End If
If Me.FormReadonly = True Then
Me.TSBtnSave.Enabled = False
sec.Set_Form_Readonly(Me)
End If
Refresh_Dokumente()
Me.FormDataChanged = False
End Sub
''' <summary>
''' Handelt das Change-Ereignis eines Datetimepckers und stellt das ausgewählte Datum in das entsprechende Textfeld
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub DateTimePicker_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _
dtFachlicheAbnahme.ValueChanged, dtTechnischeAbnahme.ValueChanged, dtFreigabe.ValueChanged, DtReleaseDatum.ValueChanged
Dim s As String
Dim obj As DateTimePicker = sender
s = obj.Name
s = "txt" + s.Substring(2, s.Length - 2)
Dim l As New List(Of Control)
Dim txtb As MaskedTextBox
GetControl(Me, s, l)
For Each ctl As Control In l
txtb = CType(ctl, MaskedTextBox)
txtb.Text = obj.Value
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
#End Region
#Region "Buttons/Menu"
''' <summary>
''' Formular schliessen
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub TSBtnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnQuit.Click
Me.Close()
End Sub
''' <summary>
''' Sicherungs-Button betätigt
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub TSBtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnSave.Click
Me.Save_Data()
Me.FormDataChanged = False
End Sub
''' <summary>
''' Aktueller Datensatz inaktivieren
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub TSBtnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnDelete.Click
If msg.Show_MessageYesNo(101) = MsgBoxResult.Yes Then
Me.ApplikationLogbuch.Delete_ApplikationLogubuch(Me.ApplikationLogbuch.iApplikationLogbuchNr.Value)
Me.Close()
End If
End Sub
''' <summary>
''' Menu Beenden
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click
Me.TSBtnQuit_Click(sender, e)
End Sub
#End Region
#Region "Daten"
''' <summary>
''' Person laden und präsentieren
''' </summary>
''' <param name="Nr"></param>
''' <remarks></remarks>
Private Sub Get_Data(ByVal Nr As Integer)
Me.ApplikationLogbuch.Get_ApplikationLogbuch(Nr)
Me.txtReleaseDatum.Text = Me.ApplikationLogbuch.daReleasedatum.ToString
Me.cboReleaseArt.SelectedValue = Me.ApplikationLogbuch.iReleaseartnr.Value
Me.txtBezeichnung.Text = Me.ApplikationLogbuch.sBezeichnung.Value
Me.txtBemerkung.Text = Me.ApplikationLogbuch.sBemerkung.Value
Me.cboFachperson.SelectedValue = Me.ApplikationLogbuch.iAbnahmeFBPerson.Value
Me.txtFachlicheAbnahme.Text = Me.ApplikationLogbuch.daAbnahmeFBDatum.ToSqlString
Me.cboTecPerson.SelectedValue = Me.ApplikationLogbuch.iAbnahmeTecPerson.Value
Me.txtTechnischeAbnahme.Text = Me.ApplikationLogbuch.daAbnahmeTecDatum.ToString
Me.cboFreigabePerson.SelectedValue = Me.ApplikationLogbuch.iFreigabedurch.Value
Me.txtFreigabe.Text = Me.ApplikationLogbuch.daFreigabeDatum.ToString
Me.cbAktiv.Checked = Me.ApplikationLogbuch.bAktiv.Value = True
Me.FormDataChanged = False
End Sub
''' <summary>
''' Daten sichern, sofern Änderungen vorgenommen worden sind
''' </summary>
''' <remarks></remarks>
Private Sub Save_Data()
If Me.FormDataChanged Then
If IsDate(Me.txtReleaseDatum.Text) Then
Me.ApplikationLogbuch.daReleasedatum = New SqlDateTime(CType(Me.txtReleaseDatum.Text, SqlDateTime))
Else
Me.ApplikationLogbuch.daReleasedatum = New SqlDateTime(CType(SqlDateTime.Null, SqlDateTime))
End If
Me.ApplikationLogbuch.iReleaseartnr = New SqlInt32(CType(Me.cboReleaseArt.SelectedValue, Int32))
Me.ApplikationLogbuch.sBezeichnung = New SqlString(CType(Me.txtBezeichnung.Text, String))
Me.ApplikationLogbuch.sBemerkung = New SqlString(CType(Me.txtBemerkung.Text, String))
Me.ApplikationLogbuch.iAbnahmeFBPerson = New SqlInt32(CType(Me.cboFachperson.SelectedValue, Int32))
If IsDate(Me.txtFachlicheAbnahme.Text) Then
Me.ApplikationLogbuch.daAbnahmeFBDatum = New SqlDateTime(CType(Me.txtFachlicheAbnahme.Text, SqlDateTime))
Else
Me.ApplikationLogbuch.daAbnahmeFBDatum = New SqlDateTime(CType(SqlDateTime.Null, SqlDateTime))
End If
Me.ApplikationLogbuch.iAbnahmeTecPerson = New SqlInt32(CType(Me.cboTecPerson.SelectedValue, Int32))
If IsDate(Me.txtTechnischeAbnahme.Text) Then
Me.ApplikationLogbuch.daAbnahmeTecDatum = New SqlDateTime(CType(Me.txtTechnischeAbnahme.Text, SqlDateTime))
Else
Me.ApplikationLogbuch.daAbnahmeTecDatum = New SqlDateTime(CType(SqlDateTime.Null, SqlDateTime))
End If
Me.ApplikationLogbuch.iFreigabedurch = New SqlInt32(CType(Me.cboFreigabePerson.SelectedValue, Int32))
If IsDate(Me.txtFreigabe.Text) Then
Me.ApplikationLogbuch.daFreigabeDatum = New SqlDateTime(CType(Me.txtFreigabe.Text, SqlDateTime))
Else
Me.ApplikationLogbuch.daFreigabeDatum = New SqlDateTime(CType(SqlDateTime.Null, SqlDateTime))
End If
Me.ApplikationLogbuch.bAktiv = New SqlBoolean(CType(Me.cbAktiv.Checked, Boolean))
Get_Data(Me.ApplikationLogbuch.Save_Data)
Me.FormDataChanged = False
End If
End Sub
#End Region
Private Sub DokumentAnzeigenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DokumentAnzeigenToolStripMenuItem.Click
Try
Dim f As New frmDokument(Me.C1Dokumente.Columns("Dokumentnr").Value, 4, Me.ApplikationLogbuchNr, Me.FormReadonly, False)
f.ShowDialog()
Refresh_Dokumente()
Catch ex As Exception
End Try
End Sub
Private Sub DokumentNeuToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DokumentNeuToolStripMenuItem.Click
Try
Dim f As New frmDokument(0, 4, Me.ApplikationLogbuchNr, Me.FormReadonly, True)
' f.MdiParent = Me.MdiParent
f.ShowDialog()
Refresh_Dokumente()
Catch ex As Exception
End Try
End Sub
Private Sub DokumentLöschenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DokumentLöschenToolStripMenuItem.Click
Try
If msg.Show_MessageYesNo(275) = MsgBoxResult.Yes Then
Me.ApplikationLogbuch.Dokument.Delete_Dokument(Me.C1Dokumente.Columns("Dokumentnr").Value)
Me.Refresh_Dokumente()
End If
Catch
End Try
End Sub
Private Sub Dokument_Anzeigen_Dokument_ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Dokument_Anzeigen_Dokument_ToolStripMenuItem.Click
Try
Me.ApplikationLogbuch.Dokument.Show_Doc(Me.C1Dokumente.Columns("Dokumentnr").Value)
Catch
End Try
End Sub
''' <summary>
''' Enabling bzw. Disabling der Menu-Einträge aufgrund der angezeigten Rows im Truedbgrind
''' </summary>
''' <param name="menu">Zu bearbeitendes Menu</param>
''' <param name="c1data">Betroffenes Grid</param>
''' <returns></returns>
''' <remarks>Nach dem Setzen der Submenus wird sec.form_Security durchlaufen, damit allfällig standardmössig aktivierte Menueinträge
''' aufgrund der Security-Einstellung wieder deaktiviert werden</remarks>
Private Function Disable_Enable_Menu(ByRef menu As ContextMenuStrip, ByRef c1data As C1TrueDBGrid)
If Me.FormReadonly Then
For Each obj As Object In menu.Items
Dim objtype As System.Type = obj.GetType
If LCase(objtype.Name) = "toolstripmenuitem" Then
Dim mnu As ToolStripMenuItem = obj
If (mnu.Text.IndexOf("Anzeigen") > 0 Or mnu.Text.IndexOf("anzeigen") > 0) And c1data.Splits(0).Rows.Count > 0 Then
mnu.Enabled = True
Else
mnu.Enabled = False
End If
End If
Next
sec.Set_Form_Security(Me)
Exit Function
End If
If c1data.Splits(0).Rows.Count = 0 Then
For Each obj As Object In menu.Items
Dim objtype As System.Type = obj.GetType
If LCase(objtype.Name) = "toolstripmenuitem" Then
Dim mnu As ToolStripMenuItem = obj
If mnu.Text.IndexOf("Neu") > 0 Then
mnu.Enabled = True
Else
mnu.Enabled = False
End If
End If
Next
Else
For Each obj As Object In menu.Items
Dim objtype As System.Type = obj.GetType
If LCase(objtype.Name) = "toolstripmenuitem" Then
Dim mnu As ToolStripMenuItem = obj
mnu.Enabled = True
End If
Next
End If
sec.Set_Form_Security(Me)
End Function
''' <summary>
''' Dokumetne_Aktualisieren
''' </summary>
''' <remarks></remarks>
Private Sub Refresh_Dokumente()
Try
If Check_Changes() = False Then Exit Sub
Catch ex As Exception
End Try
Dim filtertext As String = "none"
Try
filtertext = Me.C1Dokumente.Columns("Aktiv").FilterText
Catch ex As Exception
End Try
Dim bm As Integer = 0
bm = Me.C1Dokumente.Bookmark
Me.C1Dokumente.Enabled = False
Me.ApplikationLogbuch.Get_Dokumente(Me.C1Dokumente, Me.ImageListeDocIcon)
Me.SpaltenTitel.Spaltentitel_aktualisieren(Me.C1Dokumente, "Dokument", Me.ApplikationLogbuch.dokumente)
If filtertext <> "none" Then Me.C1Dokumente.Columns("Aktiv").FilterText = filtertext
sec.Set_Form_Security(Me)
Try
Me.C1Dokumente.Bookmark = bm
Catch ex As Exception
End Try
Me.C1Dokumente.Enabled = True
End Sub
Private Sub C1Dokumente_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles C1Dokumente.DoubleClick
Try
Me.Dokument_Anzeigen_Dokument_ToolStripMenuItem_Click(sender, e)
Catch ex As Exception
End Try
End Sub
Private Sub DokumentMenuStrip_Opening(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles DokumentMenuStrip.Opening
Me.Disable_Enable_Menu(sender, Me.C1Dokumente)
End Sub
End Class