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.
400 lines
13 KiB
400 lines
13 KiB
Imports System
|
|
Imports System.Data
|
|
Imports System.Data.SqlTypes
|
|
Imports System.Data.SqlClien
|
|
Imports C1.Win.C1TrueDBGrid
|
|
Imports Syncfusion.WinForms.DataGrid
|
|
|
|
|
|
Public Class Tabellenspalte
|
|
Private m_table As String
|
|
Private m_field As String
|
|
Private m_spaltenname As String
|
|
Private m_locked As Boolean
|
|
Private m_Width As Integer
|
|
Private m_Order As Integer
|
|
Private m_alsHacken As Boolean
|
|
Private m_tiptext As String
|
|
Private m_numberformat As String
|
|
|
|
Property ColWith() As Integer
|
|
Get
|
|
Return m_Width
|
|
End Get
|
|
Set(ByVal Value As Integer)
|
|
m_Width = Value
|
|
End Set
|
|
End Property
|
|
Property Order() As Integer
|
|
Get
|
|
Return m_Order
|
|
End Get
|
|
Set(ByVal Value As Integer)
|
|
m_Order = Value
|
|
End Set
|
|
End Property
|
|
Property Tabelle() As String
|
|
Get
|
|
Return m_table
|
|
End Get
|
|
Set(ByVal Value As String)
|
|
m_table = Value
|
|
End Set
|
|
End Property
|
|
Property Feld() As String
|
|
Get
|
|
Return m_field
|
|
End Get
|
|
Set(ByVal Value As String)
|
|
m_field = Value
|
|
End Set
|
|
End Property
|
|
Property spaltenname() As String
|
|
Get
|
|
Return m_spaltenname
|
|
End Get
|
|
Set(ByVal Value As String)
|
|
m_spaltenname = Value
|
|
End Set
|
|
End Property
|
|
Property locked() As Boolean
|
|
Get
|
|
Return m_locked
|
|
End Get
|
|
Set(ByVal Value As Boolean)
|
|
m_locked = Value
|
|
End Set
|
|
End Property
|
|
Property AlsHacken() As Boolean
|
|
Get
|
|
Return m_alsHacken
|
|
End Get
|
|
Set(ByVal Value As Boolean)
|
|
m_alsHacken = Value
|
|
End Set
|
|
End Property
|
|
Property TipText() As String
|
|
Get
|
|
Return m_tiptext
|
|
End Get
|
|
Set(ByVal Value As String)
|
|
m_tiptext = Value
|
|
End Set
|
|
End Property
|
|
Property Numberformat() As String
|
|
Get
|
|
Return m_numberformat
|
|
End Get
|
|
Set(ByVal value As String)
|
|
m_numberformat = value
|
|
End Set
|
|
End Property
|
|
Public Sub New()
|
|
|
|
End Sub
|
|
Public Sub New(ByRef daten As Object, ByRef tablename As String, ByRef ds As DataSet)
|
|
Spaltentitel_aktualisieren(daten, tablename, ds)
|
|
End Sub
|
|
Public Function getspalte()
|
|
Try
|
|
Dim myspalten As New MySpaltenTitel()
|
|
myspalten.getspalte(Me.Tabelle, Me.Feld, Me.spaltenname, Me.locked, Me.ColWith, Me.Order, Me.AlsHacken, Me.TipText, Me.Numberformat)
|
|
Catch ex As Exception
|
|
End Try
|
|
End Function
|
|
|
|
Public Function Spaltentitel_aktualisieren(ByRef daten As Object, ByRef tablename As String, ByRef ds As DataSet)
|
|
Dim anzcols As Integer
|
|
Dim i As Integer
|
|
Dim s As String
|
|
anzcols = daten.Splits(0).DisplayColumns.Count
|
|
Me.Tabelle = tablename
|
|
For i = 0 To daten.Columns.Count - 1
|
|
s = daten.Columns(i).DataField
|
|
Me.Feld = s
|
|
Me.getspalte()
|
|
daten.Columns(i).Caption = Me.spaltenname
|
|
|
|
If Me.ColWith = 0 Then
|
|
daten.Splits(0).DisplayColumns(i).Width = 0
|
|
daten.Splits(0).DisplayColumns(i).Visible = False
|
|
Else
|
|
daten.Splits(0).DisplayColumns(i).Width = Me.ColWith
|
|
End If
|
|
|
|
If Me.locked Then
|
|
daten.Splits(0).DisplayColumns(i).Locked = True
|
|
End If
|
|
|
|
If Me.AlsHacken Then
|
|
daten.Columns(i).ValueItems.Presentation = C1.Win.C1TrueDBGrid.PresentationEnum.CheckBox
|
|
End If
|
|
|
|
'Präsentation von aktiv
|
|
If LCase(daten.Columns(i).DataField) = "aktiv" Then
|
|
daten.Columns(i).ValueItems.Presentation = C1.Win.C1TrueDBGrid.PresentationEnum.CheckBox
|
|
daten.Columns(i).ValueItems.DefaultItem = True
|
|
daten.Columns(i).DefaultValue = True
|
|
daten.Columns(i).FilterText = True
|
|
|
|
|
|
End If
|
|
Select Case LCase(daten.Columns(i).DataField)
|
|
Case "erstellt_am", "erstelltam"
|
|
daten.Columns(i).DefaultValue = Now
|
|
End Select
|
|
If daten.Columns(i).DataType.Name = "DateTime" Then
|
|
daten.Columns(i).NumberFormat = "dd.MM.yyyy HH:mm:ss"
|
|
End If
|
|
If Me.Numberformat <> "" Then
|
|
daten.columns(i).numberformat = Me.Numberformat
|
|
End If
|
|
Next
|
|
ColumnOrder(tablename, daten)
|
|
daten.HeadingStyle.WrapText = False
|
|
End Function
|
|
|
|
Public Function Spaltentitel_aktualisieren(ByRef daten As Object, ByVal tablename As String, ByRef dt As DataTable, Optional ByVal Aktiv_Spalte_True_Setzen As Boolean = True)
|
|
Dim anzcols As Integer
|
|
Dim i As Integer
|
|
Dim t As New DataTable()
|
|
Dim s As String
|
|
Dim IsSfDatagrid As Boolean = False
|
|
If daten.GetType.Name = "SfDataGrid" Then IsSfDatagrid = True
|
|
If IsSfDatagrid Then
|
|
anzcols = daten.columns.count
|
|
Else
|
|
anzcols = daten.Splits(0).DisplayColumns.Count
|
|
|
|
End If
|
|
|
|
t = dt
|
|
Me.Tabelle = tablename
|
|
Dim st As New MySpaltenTitel
|
|
If st.Check_Table_Has_Spaltendata(tablename) = False Then Exit Function
|
|
|
|
|
|
For i = 0 To daten.Columns.Count - 1
|
|
If IsSfDatagrid Then
|
|
s = daten.columns(i).MappingName
|
|
Else
|
|
s = daten.Columns(i).DataField
|
|
End If
|
|
'If s = "ApplikationNr" Then
|
|
' MsgBox("Hallo")
|
|
|
|
'End If
|
|
Me.Feld = s
|
|
Me.getspalte()
|
|
If Me.spaltenname <> "" Then
|
|
If IsSfDatagrid Then
|
|
daten.columns(i).headertext = Me.spaltenname
|
|
Else
|
|
daten.Columns(i).Caption = Me.spaltenname
|
|
|
|
End If
|
|
|
|
If Me.ColWith = 0 Then
|
|
If IsSfDatagrid Then
|
|
daten.columns(i).width = 0
|
|
daten.columns(i).visible = 0
|
|
Else
|
|
daten.Splits(0).DisplayColumns(i).Width = 0
|
|
daten.Splits(0).DisplayColumns(i).Visible = False
|
|
|
|
End If
|
|
Else
|
|
If IsSfDatagrid Then
|
|
daten.columns(i).Width = Me.ColWith
|
|
Else
|
|
daten.Splits(0).DisplayColumns(i).Width = Me.ColWith
|
|
End If
|
|
End If
|
|
|
|
If Me.locked Then
|
|
If IsSfDatagrid Then
|
|
daten.columns(i).style.readonly = True
|
|
Else
|
|
daten.Splits(0).DisplayColumns(i).Locked = True
|
|
End If
|
|
|
|
End If
|
|
|
|
If Me.AlsHacken Then
|
|
If Not IsSfDatagrid Then
|
|
daten.Columns(i).ValueItems.Presentation = C1.Win.C1TrueDBGrid.PresentationEnum.CheckBox
|
|
End If
|
|
|
|
End If
|
|
|
|
If Not IsSfDatagrid Then 'Präsentation von aktiv
|
|
If LCase(daten.Columns(i).DataField) = "aktiv" And Aktiv_Spalte_True_Setzen = True Then
|
|
daten.Columns(i).ValueItems.Presentation = C1.Win.C1TrueDBGrid.PresentationEnum.CheckBox
|
|
daten.Columns(i).ValueItems.DefaultItem = True
|
|
daten.Columns(i).DefaultValue = True
|
|
daten.Columns(i).FilterText = True
|
|
End If
|
|
|
|
End If
|
|
If Not IsSfDatagrid Then
|
|
Select Case LCase(daten.Columns(i).DataField)
|
|
Case "erstellt_am", "erstelltam"
|
|
daten.Columns(i).DefaultValue = Now
|
|
End Select
|
|
If daten.Columns(i).DataType.Name = "DateTime" Then
|
|
daten.Columns(i).NumberFormat = "dd.MM.yyyy HH:mm:ss"
|
|
End If
|
|
If Me.Numberformat <> "" Then
|
|
daten.columns(i).numberformat = Me.Numberformat
|
|
End If
|
|
End If
|
|
End If
|
|
Next
|
|
If Not IsSfDatagrid Then
|
|
ColumnOrder(tablename, daten)
|
|
|
|
daten.HeadingStyle.WrapText = False
|
|
End If
|
|
|
|
End Function
|
|
|
|
Public Function Spaltentitel_aktualisieren_Optionaler_Aktiv_Filer(ByRef daten As Object, ByRef tablename As String, ByRef dt As DataTable, Optional ByVal Aktiv_Filter As String = "")
|
|
Dim anzcols As Integer
|
|
Dim i As Integer
|
|
Dim t As New DataTable()
|
|
Dim s As String
|
|
anzcols = daten.Splits(0).DisplayColumns.Count
|
|
t = dt
|
|
Me.Tabelle = tablename
|
|
For i = 0 To daten.Columns.Count - 1
|
|
s = daten.Columns(i).DataField
|
|
|
|
Me.Feld = s
|
|
Me.getspalte()
|
|
If Me.spaltenname = "" Then
|
|
daten.Splits(0).DisplayColumns(i).Width = 0
|
|
Else
|
|
daten.Columns(i).Caption = Me.spaltenname
|
|
|
|
If Me.ColWith = 0 Then
|
|
daten.Splits(0).DisplayColumns(i).Width = 0
|
|
daten.Splits(0).DisplayColumns(i).Visible = False
|
|
Else
|
|
daten.Splits(0).DisplayColumns(i).Width = Me.ColWith
|
|
End If
|
|
|
|
If Me.locked Then
|
|
daten.Splits(0).DisplayColumns(i).Locked = True
|
|
End If
|
|
|
|
If Me.AlsHacken Then
|
|
daten.Columns(i).ValueItems.Presentation = C1.Win.C1TrueDBGrid.PresentationEnum.CheckBox
|
|
End If
|
|
|
|
'Präsentation von aktiv
|
|
If LCase(daten.Columns(i).DataField) = "aktiv" And Aktiv_Filter <> "" Then
|
|
daten.Columns(i).ValueItems.Presentation = C1.Win.C1TrueDBGrid.PresentationEnum.CheckBox
|
|
daten.Columns(i).ValueItems.DefaultItem = True
|
|
daten.Columns(i).DefaultValue = True
|
|
daten.Columns(i).FilterText = Aktiv_Filter
|
|
End If
|
|
Select Case LCase(daten.Columns(i).DataField)
|
|
Case "erstellt_am", "erstelltam"
|
|
daten.Columns(i).DefaultValue = Now
|
|
End Select
|
|
If daten.Columns(i).DataType.Name = "DateTime" Then
|
|
daten.Columns(i).NumberFormat = "dd.MM.yyyy HH:mm:ss"
|
|
End If
|
|
If Me.Numberformat <> "" Then
|
|
daten.columns(i).numberformat = Me.Numberformat
|
|
End If
|
|
End If
|
|
Next
|
|
ColumnOrder(tablename, daten)
|
|
daten.HeadingStyle.WrapText = False
|
|
End Function
|
|
|
|
|
|
Public Function ColumnOrder(ByVal Tablename As String, ByRef Data As C1TrueDBGrid)
|
|
Dim spaltendata As DataTable = Globals.Spaltendaten
|
|
Dim dv() As System.Data.DataRow
|
|
Dim dr As System.Data.DataRow
|
|
Dim dc As New Collection
|
|
dv = spaltendata.Select("Tabelle='" & Tablename & "'", "Reihenfolge desc, spaltenr")
|
|
For Each c As C1DisplayColumn In Data.Splits(0).DisplayColumns
|
|
dc.Add(c)
|
|
Next
|
|
While Data.Splits(0).DisplayColumns.Count > 0
|
|
Data.Splits(0).DisplayColumns.RemoveAt(0)
|
|
End While
|
|
|
|
For Each dr In dv
|
|
For Each e As C1DisplayColumn In dc
|
|
If e.Name = dr.Item(3) Then
|
|
Data.Splits(0).DisplayColumns.Insert(0, e)
|
|
End If
|
|
Next
|
|
Next
|
|
|
|
End Function
|
|
End Class
|
|
|
|
Public Class MySpaltenTitel
|
|
Private spaltendata As DataTable = Globals.Spaltendaten
|
|
Sub New()
|
|
load_data()
|
|
End Sub
|
|
|
|
Sub dispose()
|
|
spaltendata.Dispose()
|
|
Me.dispose()
|
|
End Sub
|
|
Public Function Check_Table_Has_Spaltendata(ByVal tab As String) As Boolean
|
|
If spaltendata.Rows.Count = 0 Then load_data()
|
|
Dim dv() As System.Data.DataRow
|
|
dv = spaltendata.Select("Tabelle='" & tab + "'")
|
|
If dv.Length = 0 Then Return False Else Return True
|
|
|
|
End Function
|
|
Public Function getspalte(ByVal tabelle As String, ByVal feld As String, ByRef spaltenname As String, ByRef locked As Boolean, _
|
|
ByRef colwidth As Integer, ByRef order As Integer, ByRef alshacken As Boolean, ByRef tiptext As String, ByRef numberformat As String)
|
|
If spaltendata.Rows.Count = 0 Then load_data()
|
|
|
|
Dim dv() As System.Data.DataRow
|
|
Dim dr As System.Data.DataRow
|
|
dv = spaltendata.Select("Tabelle='" & tabelle & "' and tabellenspalte='" & feld & "'", "Reihenfolge, Spaltenr")
|
|
If dv.Length = 0 Then
|
|
spaltenname = ""
|
|
locked = True
|
|
colwidth = 0
|
|
order = 0
|
|
alshacken = False
|
|
tiptext = ""
|
|
numberformat = ""
|
|
End If
|
|
For Each dr In dv
|
|
spaltenname = dr.Item(3)
|
|
locked = dr.Item(12)
|
|
colwidth = dr.Item(4)
|
|
order = dr.Item(5)
|
|
alshacken = dr.Item(13)
|
|
tiptext = dr.Item(6)
|
|
numberformat = dr.Item(7).ToString
|
|
Next
|
|
|
|
|
|
End Function
|
|
|
|
Public Sub load_data()
|
|
|
|
If Me.spaltendata.Rows.Count > 0 Then Exit Sub
|
|
Dim db As New clsDB
|
|
spaltendata.Rows.Clear()
|
|
db.Get_Spaltendata()
|
|
spaltendata = db.dsDaten.Tables(0)
|
|
Globals.Spaltendaten = spaltendata
|
|
End Sub
|
|
End Class
|
|
|
|
|