Imports C1.Win.C1TrueDBGrid Imports System Imports System.Data Imports System.Data.SqlTypes Imports System.Data.SqlClient Public Class frmVertragselementApplikationZuweisen #Region "Deklarationen" 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 ApplikationNr As Integer Dim ApplikationBezeichnung As String Dim VertragselementNr As Integer Dim VertragselementApplikationnr As Integer Dim Version As String Dim dt As New DataTable Dim NewElement As Boolean = False Dim LizenzenVorhanden As Boolean Dim Lizenzumteilen As Boolean = False Dim VertrasgelementApplikation As New TKB.VV.Vertrag.clsVertragselementApplikation #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 ''' ''' Envent-Handler für Change-Ereignisse ''' ''' ''' ''' Private Sub ChangesMade(ByVal sender As Object, ByVal e As System.EventArgs) 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 Globals.MyEventHanlder.Vertragsapplikation_Closed() Me.Dispose() End If End Sub ''' ''' Prüfung, ob Datenänderungen vorgenommen wurden. ''' ''' Private Function Check_Changes() As Boolean If Me.FormReadonly Then Exit Function 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 Sub New() ' Dieser Aufruf ist für den Windows Form-Designer erforderlich. InitializeComponent() ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. End Sub Sub New(ByVal applikationnr As Integer, ByVal applikationbezeichnung As String, ByVal Vertragselementnr As Integer, ByVal vertragselementapplikationnr As Integer, ByVal version As String, ByVal formreadonly As Boolean, ByVal LizenzenVorhanden As Boolean) InitializeComponent() Me.FormReadonly = formreadonly Me.ApplikationNr = applikationnr Me.ApplikationBezeichnung = applikationbezeichnung Me.VertragselementNr = Vertragselementnr Me.VertragselementApplikationnr = vertragselementapplikationnr Me.Version = version Me.LizenzenVorhanden = LizenzenVorhanden If Me.ApplikationNr = -1 Then Me.NewElement = True End Sub Private Sub frmVertragselementApplikationZuweisen_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load sec.Set_Form_Security(Me) Me.txtApplikation.Text = Me.ApplikationBezeichnung Me.refresh_applikationen() If Me.NewElement = True Then Me.cbAktiv.Checked = True Else Me.VertrasgelementApplikation.Get_VertragselementApplikation(Me.VertragselementApplikationnr) Me.cbaktiv.Checked = Me.VertrasgelementApplikation.bAktiv.Value = True Me.txtErstelltam.Text = VertrasgelementApplikation.daErstellt_am.ToString Me.txtMutiertam.Text = VertrasgelementApplikation.daMutiert_am.ToString Me.txtMutierer.Text = VertrasgelementApplikation.iMutierer.ToString End If Me.AddChanges(Me) If Me.FormReadonly = True Then sec.Set_Form_Readonly(Me) If Me.LizenzenVorhanden = True Then sec.Set_Form_Readonly(Me) End If If Me.ApplikationNr = -1 Then Me.btnNeueVersion.Enabled = False If Me.FormReadonly Then sec.Set_Form_Readonly(Me) Me.TSBtnSave.Enabled = False End If End Sub Private Sub btnNeueVersion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNeueVersion.Click Dim f As New frmVersion(0, Me.applikationnr, True, False) f.ShowDialog() Me.refresh_applikationen() End Sub Public Function Get_Versionen(ByVal applikationnr As Integer) As DataTable Dim scmCmdToExecute As SqlCommand = New SqlCommand() Dim dtToReturn As DataTable = New DataTable() Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute) scmCmdToExecute.CommandText = "dbo.sp_get_versionen" scmCmdToExecute.CommandType = CommandType.StoredProcedure scmCmdToExecute.Connection = conn.scoDBConnection Try scmCmdToExecute.Parameters.Add(New SqlParameter("@applikationnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, applikationnr)) scmCmdToExecute.Parameters.Add(New SqlParameter("@mitarbeiternr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Globals.clsmitarbeiter.iMitarbeiternr.Value)) Try conn.OpenConnection() Catch End Try sdaAdapter.Fill(dtToReturn) conn.CloseConnection(True) Return dtToReturn Catch ex As Exception Throw New Exception("clsApplikation::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex) Finally scmCmdToExecute.Dispose() sdaAdapter.Dispose() End Try End Function Private Sub refresh_applikationen() dt = Get_Versionen(Me.applikationnr) Me.lbVersionen.Items.Clear() Me.lbVersionen.Items.Add("-") Dim i As Integer = 0 i = 0 For Each r As DataRow In dt.Rows Me.lbVersionen.Items.Add(r.Item("Version")) If r.Item("Version") = Version Then Me.lbVersionen.SelectedIndex = i + 1 i = i + 1 Next If Version = "" Then Me.lbVersionen.SelectedIndex = 0 End Sub Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Me.Close() End Sub Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Save_Data() Me.Close() End Sub Private Sub Save_Data() If Me.ApplikationNr = -1 Then msg.show_standardmessage(858, MsgBoxStyle.Critical) Exit Sub End If If Me.NewElement = True Then Me.VertrasgelementApplikation.Add_New(Me.VertragselementNr) Else Me.VertrasgelementApplikation.Get_VertragselementApplikation(Me.VertragselementApplikationnr) End If Me.VertrasgelementApplikation.iApplikationnr = New SqlInt32(CType(Me.ApplikationNr, Int32)) Dim versionnr As Integer = 0 For Each r As DataRow In dt.Rows If r.Item("Version") = Me.lbVersionen.Text Then versionnr = r.Item("ApplikationVersionnr") End If Next Me.VertrasgelementApplikation.bAktiv = New SqlBoolean(CType(Me.cbAktiv.Checked, Boolean)) Me.VertrasgelementApplikation.iApplikationVersionNr = New SqlInt32(CType(versionnr, Int32)) 'Me.VertrasgelementApplikation.daErstellt_am = New SqlDateTime(CType(Now, DateTime)) Me.VertrasgelementApplikation.daMutiert_am = New SqlDateTime(CType(Now, DateTime)) Me.VertrasgelementApplikation.iMutierer = New SqlInt32(CType(Globals.clsmitarbeiter.iMitarbeiternr.Value, Int32)) Me.VertrasgelementApplikation.sBezeichnungLizenverwaltung = New SqlString(CType(Me.txtBezeichnungLizenzverwaltung.Text, String)) Me.VertrasgelementApplikation.Save_Data() If Me.Lizenzumteilen = True Then End If Me.FormDataChanged = False End Sub Private Sub btnApplikationSelect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnApplikationSelect.Click Dim f As New frmVertragselementApplikation(Me.VertragselementNr, True) f.ShowDialog() If f.SelectedApplication <> Me.ApplikationNr And f.SelectedApplication > 0 Then Me.ApplikationNr = f.SelectedApplication Me.txtApplikation.Text = f.SelectedApplicationnName End If If Me.ApplikationNr = -1 Then Me.btnApplikationSelect.Enabled = False Else Me.btnApplikationSelect.Enabled = True End If If Me.txtApplikation.Text <> "" Then Me.btnNeueVersion.Enabled = True Me.refresh_applikationen() End Sub Private Sub TSBtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnSave.Click Me.Save_Data() Me.Close() 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 TSBtnQuit_Click(sender, e) End Sub End Class