Imports System.Data.SqlTypes Public Class frmLizenzkauf #Region "Deklarationen" Dim Lizenztyp As New DataTable Dim clsLizenztyp As New TKB.VV.DB.clsLizenztyp Dim cLizenzkauf As New TKB.VV.Lizenz.clsLizenzkauf Dim Lizenznr As Integer Dim key As Integer Dim Lizenzveapplnr As Integer Dim Formdatachanged As Boolean = False Dim FormReadonly As Boolean = False Dim msg As New TKB.VV.Utils.MyMessage #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 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 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 Private Sub ChecketListBoxChange(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs) Me.FormDataChanged = True 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 cLizenzkauf.Dispose() 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 Me.FormDataChanged = False Return True End Select Else Return True End If End Function #End Region Sub New(ByVal Lizenznr As Integer, ByVal bezeichnung As String, ByVal Lizenzkaufnr As Integer, ByVal lizenzveapplnr As Integer) InitializeComponent() Me.Lizenznr = Lizenznr Me.Text = Me.Text + " - " + bezeichnung key = Lizenzkaufnr Me.Lizenzveapplnr = lizenzveapplnr End Sub Private Sub frmLizenzkauf_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.clsLizenztyp.cpMainConnectionProvider = Globals.conn Me.Lizenztyp = clsLizenztyp.SelectAll Me.cbboxLizenztyp.DataSource = Me.Lizenztyp Me.cbboxLizenztyp.DisplayMember = "Bezeichnung" Me.cbboxLizenztyp.ValueMember = "Lizenztypnr" If key > 0 Then Get_Data() Else Me.cbaktiv.Checked = True End If AddChanges(Me) 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 BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click Me.Close() End Sub Private Sub Get_Data() Me.cLizenzkauf.Get_Data(key) Me.cbboxLizenztyp.SelectedValue = Me.cLizenzkauf.iLizenztypnr.Value Me.txtAnzahl.Text = Me.cLizenzkauf.iAnzahl.Value Me.txtKGNummer.Text = Me.cLizenzkauf.sKGNummer.ToString Me.txtSAPNummer.Text = Me.cLizenzkauf.sSAPNummer.ToString Me.txtBemerkung.Text = Me.cLizenzkauf.sBemerkung.ToString Me.txtKaufdatum.Text = Me.cLizenzkauf.daKaufdatum.ToString Me.txtGültigbis.Text = Me.cLizenzkauf.daGueltigbis.ToString Me.cbaktiv.Checked = Me.cLizenzkauf.bAktiv.Value = True End Sub Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click save_data() Me.Close() End Sub Private Sub save_data() If key = 0 Then key = Me.cLizenzkauf.Add_New(Me.Lizenznr) Me.cLizenzkauf.iVertragselementapplikationnr = New SqlInt32(CType(Me.Lizenzveapplnr, Int32)) Else Me.cLizenzkauf.Get_Data(key) End If Me.cLizenzkauf.iLizenztypnr = New SqlInt32(CType(Me.cbboxLizenztyp.SelectedValue, Int32)) Me.cLizenzkauf.iLizenznr = New SqlInt32(CType(Me.Lizenznr, Int32)) If Me.txtAnzahl.Text = "" Then Me.cLizenzkauf.iAnzahl = New SqlInt32(CType(0, Int32)) Else Me.cLizenzkauf.iAnzahl = New SqlInt32(CType(Me.txtAnzahl.Text, Int32)) End If Me.cLizenzkauf.sBemerkung = New SqlString(CType(Me.txtBemerkung.Text, String)) Me.cLizenzkauf.sKGNummer = New SqlString(CType(Me.txtKGNummer.Text, String)) Me.cLizenzkauf.sSAPNummer = New SqlString(CType(Me.txtSAPNummer.Text, String)) If IsDate(Me.txtKaufdatum.Text) Then Me.cLizenzkauf.daKaufdatum = New SqlDateTime(CType(Me.txtKaufdatum.Text, DateTime)) Else Me.cLizenzkauf.daKaufdatum = New SqlDateTime(CType(SqlDateTime.Null, DateTime)) End If If IsDate(Me.txtGültigbis.Text) Then Me.cLizenzkauf.daGueltigbis = New SqlDateTime(CType(Me.txtGültigbis.Text, DateTime)) Else Me.cLizenzkauf.daGueltigbis = New SqlDateTime(CType(SqlDateTime.Null, DateTime)) End If Me.cLizenzkauf.bAktiv = New SqlBoolean(CType(Me.cbaktiv.Checked, Boolean)) Me.cLizenzkauf.Save_Data() End Sub Private Sub dtPickerKaufdatum_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dtPickerKaufdatum.ValueChanged Me.txtKaufdatum.Text = Me.dtPickerKaufdatum.Value End Sub Private Sub dtPickerGültigbis_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dtPickerGültigbis.ValueChanged Me.txtGültigbis.Text = Me.dtPickerGültigbis.Value End Sub Private Sub txtAnzahl_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtAnzahl.KeyDown End Sub Private Sub txtAnzahl_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtAnzahl.KeyPress If (e.KeyChar < "0" OrElse e.KeyChar > "9") AndAlso e.KeyChar <> ControlChars.Back AndAlso e.KeyChar <> "." AndAlso e.KeyChar <> "-" Then e.Handled = True End If End Sub Private Sub TSBtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnSave.Click save_data() End Sub Private Sub txtKaufdatum_MaskInputRejected(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MaskInputRejectedEventArgs) Handles txtKaufdatum.MaskInputRejected End Sub Private Sub txtGültigbis_MaskInputRejected(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MaskInputRejectedEventArgs) Handles txtGültigbis.MaskInputRejected End Sub Private Sub txtKaufdatum_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtKaufdatum.TextChanged If txtKaufdatum.Text = "01.01.1900" Then txtKaufdatum.Text = " . . " End Sub Private Sub txtGültigbis_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtGültigbis.TextChanged If txtGültigbis.Text = "01.01.1900" Then txtGültigbis.Text = " . . " End Sub End Class