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"
'''
''' 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 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
'''
''' 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 "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
If Me.ApplikationLogbuch.Neuer_Datensatz = True Then Me.ApplikationLogbuch.Delete(Me.ApplikationLogbuch.iApplikationLogbuchNr.Value)
Globals.MyEventHanlder.ReleaseLobuchClosed()
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
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
'''
''' Handelt das Change-Ereignis eines Datetimepckers und stellt das ausgewählte Datum in das entsprechende Textfeld
'''
'''
'''
'''
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
'''
''' 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
#End Region
#Region "Buttons/Menu"
'''
''' Formular schliessen
'''
'''
'''
'''
Private Sub TSBtnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnQuit.Click
Me.Close()
End Sub
'''
''' Sicherungs-Button betätigt
'''
'''
'''
'''
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
'''
''' Aktueller Datensatz inaktivieren
'''
'''
'''
'''
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
'''
''' Menu Beenden
'''
'''
'''
'''
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"
'''
''' Person laden und präsentieren
'''
'''
'''
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
'''
''' Daten sichern, sofern Änderungen vorgenommen worden sind
'''
'''
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
'''
''' Enabling bzw. Disabling der Menu-Einträge aufgrund der angezeigten Rows im Truedbgrind
'''
''' Zu bearbeitendes Menu
''' Betroffenes Grid
'''
''' 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
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
'''
''' Dokumetne_Aktualisieren
'''
'''
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