Imports C1.Win.C1TrueDBGrid Imports System.Data Imports System.Data.SqlTypes Imports System.Data.SqlClient Public Class frmIKVTest #Region "Deklarationen" Dim ApplikationIKVTest As New TKB.VV.Applikation.clsApplikationIKVTest 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 ApplikationIKVTestNr 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.ApplikationIKVTest.Neuer_Datensatz = True Then Me.ApplikationIKVTest.Delete(Me.ApplikationIKVTest.iApplikation_IKV_TestNr.Value) Globals.MyEventHanlder.IKVDetailsClosed() 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 ApplikationIKVTestNr 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.ApplikationIKVTestNr = Me.ApplikationIKVTest.Add_New(Applikationsnr) Me.Neuer_Datensatz = True Else Me.ApplikationIKVTestNr = ApplikationIKVTestNr End If Me.Applikationsnr = Applikationsnr End Sub Private Sub frmIKVTest_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 Dim i As Integer = Year(Now) - 2 Dim i1 As Integer = 0 For i1 = i To i + 5 Me.cbboxJahr.Items.Add(i1) Next Me.cbboxResultat.DataSource = Me.ApplikationIKVTest.IKVTestresultate Me.cbboxResultat.DisplayMember = "Bezeichnung" Me.cbboxResultat.ValueMember = "IKVTestResultatnr" Me.AddChanges(Me) Get_Data(Me.Applikationikvtestnr) If Me.Neuer_Datensatz = True Then Me.ApplikationIKVTest.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 _ dtDurchgefuehrt.ValueChanged, dtGeplant.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 "Daten" ''' ''' Person laden und präsentieren ''' ''' ''' Private Sub Get_Data(ByVal Nr As Integer) Me.ApplikationIKVTest.Get_ApplikationIKVTest(Nr) Me.cbboxJahr.Text = Me.ApplikationIKVTest.iJahr.Value.ToString Me.cbboxResultat.SelectedValue = Me.ApplikationIKVTest.iApplikation_IKV_TestResultatNr.Value Me.txtgeplant.Text = Me.ApplikationIKVTest.daGeplant.ToString Me.txtdurchgefuehrt.Text = Me.ApplikationIKVTest.daDurchgeführt.ToString Me.txtBemerkung.Text = Me.ApplikationIKVTest.sBemerkung.Value Me.cbaktiv.Checked = Me.ApplikationIKVTest.bAktiv.Value = True Me.FormDataChanged = False End Sub ''' ''' Daten sichern, sofern Änderungen vorgenommen worden sind ''' ''' Private Sub Save_Data() If Me.FormDataChanged Then If IsNumeric(Me.cbboxJahr.Text) Then Me.ApplikationIKVTest.iJahr = New SqlInt32(CType(Me.cbboxJahr.Text, Int32)) If IsDate(Me.txtgeplant.Text) Then Me.ApplikationIKVTest.daGeplant = New SqlDateTime(CType(Me.txtgeplant.Text, SqlDateTime)) Else Me.ApplikationIKVTest.daGeplant = New SqlDateTime(CType(SqlDateTime.Null, SqlDateTime)) End If If IsDate(Me.txtdurchgefuehrt.Text) Then Me.ApplikationIKVTest.daDurchgeführt = New SqlDateTime(CType(Me.txtdurchgefuehrt.Text, SqlDateTime)) Else Me.ApplikationIKVTest.daDurchgeführt = New SqlDateTime(CType(SqlDateTime.Null, SqlDateTime)) End If Me.ApplikationIKVTest.sBemerkung = New SqlString(CType(Me.txtBemerkung.Text, String)) Me.ApplikationIKVTest.iApplikation_IKV_TestResultatNr = New SqlInt32(CType(Me.cbboxResultat.SelectedValue, Int32)) Me.ApplikationIKVTest.bAktiv = New SqlBoolean(CType(Me.cbaktiv.Checked, Boolean)) Get_Data(Me.ApplikationIKVTest.Save_Data) Me.FormDataChanged = False End If End Sub Private Sub TSBtnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnQuit.Click Me.Close() End Sub 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 Private Sub TSBtnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnDelete.Click If msg.Show_MessageYesNo(881) = MsgBoxResult.Yes Then Me.ApplikationIKVTest.Delete_ApplikationIKVTest(Me.ApplikationIKVTest.iApplikation_IKV_TestNr.Value) Me.Close() End If End Sub Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click Me.TSBtnQuit_Click(sender, e) End Sub ''' ''' 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.ApplikationIKVTest.Get_Dokumente(Me.C1Dokumente, Me.ImageListeDocIcon) Me.SpaltenTitel.Spaltentitel_aktualisieren(Me.C1Dokumente, "Dokument", Me.ApplikationIKVTest.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 #End Region Private Sub DokumentNeuToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DokumentNeuToolStripMenuItem.Click Try Dim f As New frmDokument(0, 5, Me.ApplikationIKVTestNr, Me.FormReadonly, True) ' f.MdiParent = Me.MdiParent f.ShowDialog() Refresh_Dokumente() Catch ex As Exception End Try End Sub 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, 5, Me.ApplikationIKVTestNr, Me.FormReadonly, False) 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.ApplikationIKVTest.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.ApplikationIKVTest.Dokument.Show_Doc(Me.C1Dokumente.Columns("Dokumentnr").Value) Catch End Try 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 End Class