Imports C1.Win.C1TrueDBGrid Imports System Imports System.Data Imports System.Data.SqlTypes Imports System.Data.SqlClient Public Class frmProfilVerwaltung #Region "Deklarationen" Dim profil As New TKB.VV.Utils.clsProfile Dim docmgmt As New TKB.VV.Utils.MyDocMgmt Dim msg As New TKB.VV.Utils.MyMessage Dim C1Data As C1TrueDBGrid Dim Profilnr As Integer Dim Tabctl As TabControl Dim FormdataChanged 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 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 Check_Changes() = False Then e.Cancel = True Else Me.dispose() End If End Sub ''' ''' Prüfung, ob Datenänderungen vorgenommen wurden. ''' ''' Private Function Check_Changes() As Boolean 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" ''' ''' Initialisierung des Formulares ''' ''' Betroffenes Truedbgrid ''' Aktuelle ProfilNr ''' TabControl ''' Public Sub New(ByRef c1data As C1TrueDBGrid, ByVal profilnr As Integer, Optional ByRef tabctl As TabControl = Nothing) InitializeComponent() Me.C1Data = c1data Me.Profilnr = profilnr Me.Tabctl = tabctl End Sub ''' ''' Formular-Dispose ''' ''' Overloads Sub dispose() Me.profil.Dispose() Me.msg.dispose() MyBase.Dispose() End Sub ''' ''' Formular Load ''' ''' ''' ''' Private Sub frmProfilVerwaltung_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Get_data(Profilnr) Grid_Spalten() Sortierung() TabControl_Pages() Me.AddChanges(Me) End Sub ''' ''' Bereich Registerlaschen initialisieren ''' ''' Private Sub TabControl_Pages() Me.lbRegister.Items.Clear() For Each page As TabPage In Me.Tabctl.TabPages Me.lbRegister.Items.Add(page.Text) Next End Sub ''' ''' Berech Spalten aus TrueDbGrid initialisieren ''' ''' Private Sub Grid_Spalten() Me.lbVorhandeneSpalten.Items.Clear() Me.lbVerwendeteSpalten.Items.Clear() Dim i As Integer For i = 0 To C1Data.Columns.Count - 1 Try If C1Data.Splits(0).DisplayColumns(i).Visible = False Then If C1Data.Splits(0).DisplayColumns(i).Name().ToString <> "" Then Me.lbVorhandeneSpalten.Items.Add(C1Data.Splits(0).DisplayColumns(i).Name()) End If Else Me.lbVerwendeteSpalten.Items.Add(Me.C1Data.Splits(0).DisplayColumns(i).Name()) End If Catch End Try Next End Sub ''' ''' Bereich Sortierung initialisieren ''' ''' Private Sub Sortierung() Me.lbSort.Items.Clear() Dim i As Integer For i = 0 To C1Data.Columns.Count - 1 Me.lbSort.Items.Add(Me.C1Data.Columns(i).Caption) Next Try Dim sorts() As String sorts = Me.profil.sV_Sort.Value.Split(", ") For Each s As String In sorts s = s.Replace(" asc", " | Aufsteigend") s = s.Replace(" desc", " | Absteigend") Me.lbSortKriterien.Items.Add(s) Next Catch ex As Exception End Try Try Me.lbSort.SelectedIndex = 0 Me.lbSortDirection.SelectedIndex = 0 Me.lbSortKriterien.SelectedIndex = 0 Catch ex As Exception End Try 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() End Sub ''' ''' Menu Beenden ''' ''' ''' ''' Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStipMenuItem.Click Me.TSBtnQuit_Click(sender, e) End Sub #End Region #Region "Daten" ''' ''' Profildaten lesen ''' ''' ''' Private Sub Get_data(ByVal profilnr As Integer) profil.Get_Profil(profilnr) Me.txtBezeichnung.Text = profil.sBezeichnung.Value Me.cbStandard.Checked = profil.bStandard.Value = True If profil.bV_Aktiv_Vertragspartner.Value = True Then Me.rbAktiveVertragspartner.Checked = True Me.rbAlleVertragspartner.Checked = False Else Me.rbAktiveVertragspartner.Checked = False Me.rbAlleVertragspartner.Checked = True End If Select Case profil.sV_Aktiv_Vertragselemente.Value Case "True" Me.rbAktiveVertragselemente.Checked = True Me.rbAlleVertragselemente.Checked = False Me.rbInaktiveVertragselemente.Checked = False Case "False" Me.rbAktiveVertragselemente.Checked = False Me.rbAlleVertragselemente.Checked = False Me.rbInaktiveVertragselemente.Checked = True Case "" Me.rbAktiveVertragselemente.Checked = False Me.rbAlleVertragselemente.Checked = True Me.rbInaktiveVertragselemente.Checked = False Case Else Me.rbAktiveVertragselemente.Checked = False Me.rbAlleVertragselemente.Checked = False Me.rbInaktiveVertragselemente.Checked = False End Select Select Case profil.bV_Struktur_Details.Value Case True Me.cboxAlleElemente.Checked = True Case Else Me.cboxAlleElemente.Checked = False End Select End Sub ''' ''' Profildaten speichern ''' ''' ''' ''' Nach dem Speichern wird das Layout-File des Grids im Profil gespeichert Private Sub Save_Data() C1Data.Enabled = False Me.profil.sBezeichnung = New SqlString(CType(Me.txtBezeichnung.Text, String)) If Me.rbAktiveVertragspartner.Checked Then Me.profil.bV_Aktiv_Vertragspartner = New SqlBoolean(CType(True, Boolean)) Else Me.profil.bV_Aktiv_Vertragspartner = New SqlBoolean(CType(False, Boolean)) End If If Me.rbAktiveVertragselemente.Checked Then Me.profil.sV_Aktiv_Vertragselemente = New SqlString(CType("True", String)) If Me.rbAlleVertragselemente.Checked Then Me.profil.sV_Aktiv_Vertragselemente = New SqlString(CType("", String)) If Me.rbInaktiveVertragselemente.Checked Then Me.profil.sV_Aktiv_Vertragselemente = New SqlString(CType("False", String)) If Me.cboxAlleElemente.Checked Then Me.profil.bV_Struktur_Details = New SqlBoolean(CType(True, Boolean)) Else Me.profil.bV_Struktur_Details = New SqlBoolean(CType(False, Boolean)) If Me.cbStandard.Checked = True Then Me.profil.bStandard = New SqlBoolean(CType(True, Boolean)) Else Me.profil.bStandard = New SqlBoolean(CType(False, Boolean)) Dim i As Integer = 0 Dim s As String = "" Dim sort As String = "" 'Sortierung sichern For i = 0 To Me.lbSortKriterien.Items.Count - 1 s = Me.lbSortKriterien.Items(i) s = s.Replace(" | Aufsteigend", " asc") s = s.Replace(" | Absteigend", " desc") If sort <> "" Then sort = sort + ", " sort = sort + s Next Me.profil.sV_Sort = New SqlString(CType(sort, String)) 'Register sichern s = "" For i = 0 To Me.lbRegister.Items.Count - 1 s = s + Me.lbRegister.Items(i) & ";" Next Me.profil.sV_Register = New SqlString(CType(s, String)) Me.profil.Save_Data() 'Spalten sichern For i = 0 To Me.lbVorhandeneSpalten.Items.Count - 1 Try Dim xx As Integer For xx = 0 To Me.C1Data.Columns.Count - 1 If Me.C1Data.Splits(0).DisplayColumns(xx).Name = Me.lbVorhandeneSpalten.Items(i) Then Me.C1Data.Splits(0).DisplayColumns(xx).Visible = False End If Next ' Me.DokList.Splits(0).DisplayColumns(F.ListBox1.Items(i)).Visible = False Catch End Try Next For i = 0 To Me.lbVerwendeteSpalten.Items.Count - 1 Try Dim xx As Integer For xx = 0 To Me.C1Data.Columns.Count - 1 If Me.C1Data.Splits(0).DisplayColumns(xx).Name = Me.lbVerwendeteSpalten.Items(i) Then Me.C1Data.Splits(0).DisplayColumns(xx).Visible = True End If Next Catch End Try Next C1Data.Enabled = True Me.profil.Save_Data() Me.docmgmt.Save_LayoutFile(C1Data, 1, Me.profil.iProfilnr.Value) Me.FormdataChanged = False End Sub #End Region #Region "Allgemein" Private Sub lbVerwendeteSpalten_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles lbVerwendeteSpalten.DoubleClick Dim i As Integer For i = 0 To Me.lbVerwendeteSpalten.SelectedItems.Count - 1 Me.lbVorhandeneSpalten.Items.Add(Me.lbVerwendeteSpalten.SelectedItems(i)) Next For i = 0 To Me.lbVerwendeteSpalten.SelectedItems.Count - 1 Me.lbVerwendeteSpalten.Items.Remove(Me.lbVerwendeteSpalten.SelectedItems(0)) Next End Sub Private Sub lbVorhandeneSpalten_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles lbVorhandeneSpalten.DoubleClick Dim i As Integer For i = 0 To Me.lbVorhandeneSpalten.SelectedItems.Count - 1 Me.lbVerwendeteSpalten.Items.Add(Me.lbVorhandeneSpalten.SelectedItems(i)) Next For i = 0 To Me.lbVorhandeneSpalten.SelectedItems.Count - 1 Me.lbVorhandeneSpalten.Items.Remove(Me.lbVorhandeneSpalten.SelectedItems(0)) Next End Sub Private Sub btnUnselectColumn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUnselectColumn.Click Me.lbVorhandeneSpalten_DoubleClick(sender, e) End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.lbVerwendeteSpalten_DoubleClick(sender, e) End Sub #End Region Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim i As Integer = 0 Dim s As Object Try i = Me.lbRegister.SelectedIndex If i > 0 Then s = Me.lbRegister.SelectedItem Me.lbRegister.Items.Remove(s) i = i - 1 Me.lbRegister.Items.Insert(i, s) Me.lbRegister.SelectedIndex = i End If Catch End Try End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim i As Integer = 0 Dim s As Object Try i = Me.lbRegister.SelectedIndex If i < Me.lbRegister.Items.Count - 1 Then s = Me.lbRegister.SelectedItem Me.lbRegister.Items.Remove(s) i = i + 1 Me.lbRegister.Items.Insert(i, s) Me.lbRegister.SelectedIndex = i End If Catch End Try End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click Dim s As String = Me.lbSort.SelectedItem + " | " Try If Me.lbSortDirection.SelectedIndex = 0 Then s = s + "Absteigend" Else s = s + "Aufsteigend" Catch ex As Exception s = s + "Absteigend" End Try Me.lbSortKriterien.Items.Add(s) End Sub Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click Try Me.lbSortKriterien.Items.Remove(Me.lbSortKriterien.SelectedItem) Me.lbSortKriterien.SelectedIndex = 0 Catch ex As Exception End Try End Sub End Class