You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

484 lines
17 KiB

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"
''' <summary>
''' Allg Eventhandler für Chanage-Ereignise festlegen
''' </summary>
''' <param name="Container"></param>
''' <remarks></remarks>
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
''' <summary>
''' Envent-Handler für Change-Ereignisse
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub ChangesMade(ByVal sender As Object, ByVal e As System.EventArgs)
Me.FormDataChanged = True
End Sub
''' <summary>
''' 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
''' </summary>
''' <param name="BaseControl">Base-Contrlo (z.B. aktuelles Formular</param>
''' <param name="Key">Schlüssel welcher gesucht werden soll</param>
''' <param name="L">Liste der gefundenen Objekte</param>
''' <returns>True wenn eines oder mehr Controls gefunden wurden, false wenn kein Control gefunden wurde.
''' </returns>
''' <remarks></remarks>
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"
''' <summary>
''' Schliessen des Formulars
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
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
''' <summary>
''' Prüfung, ob Datenänderungen vorgenommen wurden.
''' </summary>
''' <remarks></remarks>
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"
''' <summary>
''' Initialisierung des Formulares
''' </summary>
''' <param name="c1data">Betroffenes Truedbgrid</param>
''' <param name="profilnr">Aktuelle ProfilNr</param>
''' <param name="tabctl">TabControl</param>
''' <remarks></remarks>
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
''' <summary>
''' Formular-Dispose
''' </summary>
''' <remarks></remarks>
Overloads Sub dispose()
Me.profil.Dispose()
Me.msg.dispose()
MyBase.Dispose()
End Sub
''' <summary>
''' Formular Load
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
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
''' <summary>
''' Bereich Registerlaschen initialisieren
''' </summary>
''' <remarks></remarks>
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
''' <summary>
''' Berech Spalten aus TrueDbGrid initialisieren
''' </summary>
''' <remarks></remarks>
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
''' <summary>
''' Bereich Sortierung initialisieren
''' </summary>
''' <remarks></remarks>
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"
''' <summary>
''' Formular schliessen
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub TSBtnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnQuit.Click
Me.Close()
End Sub
''' <summary>
''' Sicherungs-Button betätigt
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub TSBtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnSave.Click
Me.Save_Data()
End Sub
''' <summary>
''' Menu Beenden
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
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"
''' <summary>
''' Profildaten lesen
''' </summary>
''' <param name="profilnr"></param>
''' <remarks></remarks>
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
''' <summary>
''' Profildaten speichern
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks>Nach dem Speichern wird das Layout-File des Grids im Profil gespeichert</remarks>
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