Initial commit

This commit is contained in:
2020-10-21 10:44:38 +02:00
commit 039adbbadf
1125 changed files with 854026 additions and 0 deletions

View File

@@ -0,0 +1,178 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class FrmToolTipEditor
Inherits System.Windows.Forms.Form
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Wird vom Windows Form-Designer benötigt.
Private components As System.ComponentModel.IContainer
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(FrmToolTipEditor))
Me.MenuStrip1 = New System.Windows.Forms.MenuStrip
Me.DateiToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.BeendenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.ToolStrip1 = New System.Windows.Forms.ToolStrip
Me.TSBtnQuit = New System.Windows.Forms.ToolStripButton
Me.lblFormular = New System.Windows.Forms.Label
Me.txtFormularname = New System.Windows.Forms.TextBox
Me.txtControlname = New System.Windows.Forms.TextBox
Me.lblControl = New System.Windows.Forms.Label
Me.lblToolTip = New System.Windows.Forms.Label
Me.txtToolTip = New System.Windows.Forms.TextBox
Me.btnSave = New System.Windows.Forms.Button
Me.MenuStrip1.SuspendLayout()
Me.ToolStrip1.SuspendLayout()
Me.SuspendLayout()
'
'MenuStrip1
'
Me.MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.DateiToolStripMenuItem})
Me.MenuStrip1.Location = New System.Drawing.Point(0, 0)
Me.MenuStrip1.Name = "MenuStrip1"
Me.MenuStrip1.Size = New System.Drawing.Size(587, 24)
Me.MenuStrip1.TabIndex = 1
Me.MenuStrip1.Text = "MenuStrip1"
'
'DateiToolStripMenuItem
'
Me.DateiToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BeendenToolStripMenuItem})
Me.DateiToolStripMenuItem.Name = "DateiToolStripMenuItem"
Me.DateiToolStripMenuItem.Size = New System.Drawing.Size(44, 20)
Me.DateiToolStripMenuItem.Text = "&Datei"
'
'BeendenToolStripMenuItem
'
Me.BeendenToolStripMenuItem.Name = "BeendenToolStripMenuItem"
Me.BeendenToolStripMenuItem.Size = New System.Drawing.Size(152, 22)
Me.BeendenToolStripMenuItem.Text = "&Beenden"
'
'ToolStrip1
'
Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TSBtnQuit})
Me.ToolStrip1.Location = New System.Drawing.Point(0, 24)
Me.ToolStrip1.Name = "ToolStrip1"
Me.ToolStrip1.Size = New System.Drawing.Size(587, 25)
Me.ToolStrip1.TabIndex = 2
Me.ToolStrip1.Text = "ToolStrip1"
'
'TSBtnQuit
'
Me.TSBtnQuit.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
Me.TSBtnQuit.Image = CType(resources.GetObject("TSBtnQuit.Image"), System.Drawing.Image)
Me.TSBtnQuit.ImageTransparentColor = System.Drawing.Color.Magenta
Me.TSBtnQuit.Name = "TSBtnQuit"
Me.TSBtnQuit.Size = New System.Drawing.Size(23, 22)
Me.TSBtnQuit.Text = "Fenster schliessen"
Me.TSBtnQuit.ToolTipText = "Fenster schliessen"
'
'lblFormular
'
Me.lblFormular.AutoSize = True
Me.lblFormular.Location = New System.Drawing.Point(12, 61)
Me.lblFormular.Name = "lblFormular"
Me.lblFormular.Size = New System.Drawing.Size(73, 13)
Me.lblFormular.TabIndex = 3
Me.lblFormular.Text = "Formularname"
'
'txtFormularname
'
Me.txtFormularname.Location = New System.Drawing.Point(91, 61)
Me.txtFormularname.Name = "txtFormularname"
Me.txtFormularname.Size = New System.Drawing.Size(210, 20)
Me.txtFormularname.TabIndex = 4
'
'txtControlname
'
Me.txtControlname.Location = New System.Drawing.Point(91, 87)
Me.txtControlname.Name = "txtControlname"
Me.txtControlname.Size = New System.Drawing.Size(210, 20)
Me.txtControlname.TabIndex = 5
'
'lblControl
'
Me.lblControl.AutoSize = True
Me.lblControl.Location = New System.Drawing.Point(12, 90)
Me.lblControl.Name = "lblControl"
Me.lblControl.Size = New System.Drawing.Size(40, 13)
Me.lblControl.TabIndex = 6
Me.lblControl.Text = "Control"
'
'lblToolTip
'
Me.lblToolTip.AutoSize = True
Me.lblToolTip.Location = New System.Drawing.Point(12, 126)
Me.lblToolTip.Name = "lblToolTip"
Me.lblToolTip.Size = New System.Drawing.Size(43, 13)
Me.lblToolTip.TabIndex = 7
Me.lblToolTip.Text = "ToolTip"
'
'txtToolTip
'
Me.txtToolTip.Location = New System.Drawing.Point(91, 119)
Me.txtToolTip.Multiline = True
Me.txtToolTip.Name = "txtToolTip"
Me.txtToolTip.Size = New System.Drawing.Size(474, 75)
Me.txtToolTip.TabIndex = 8
'
'btnSave
'
Me.btnSave.Location = New System.Drawing.Point(91, 220)
Me.btnSave.Name = "btnSave"
Me.btnSave.Size = New System.Drawing.Size(75, 23)
Me.btnSave.TabIndex = 9
Me.btnSave.Text = "Speichern"
Me.btnSave.UseVisualStyleBackColor = True
'
'FrmToolTipEditor
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(587, 262)
Me.Controls.Add(Me.btnSave)
Me.Controls.Add(Me.txtToolTip)
Me.Controls.Add(Me.lblToolTip)
Me.Controls.Add(Me.lblControl)
Me.Controls.Add(Me.txtControlname)
Me.Controls.Add(Me.txtFormularname)
Me.Controls.Add(Me.lblFormular)
Me.Controls.Add(Me.ToolStrip1)
Me.Controls.Add(Me.MenuStrip1)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.Name = "FrmToolTipEditor"
Me.Text = "ToolTipEditor"
Me.MenuStrip1.ResumeLayout(False)
Me.MenuStrip1.PerformLayout()
Me.ToolStrip1.ResumeLayout(False)
Me.ToolStrip1.PerformLayout()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents MenuStrip1 As System.Windows.Forms.MenuStrip
Friend WithEvents DateiToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents BeendenToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents ToolStrip1 As System.Windows.Forms.ToolStrip
Friend WithEvents TSBtnQuit As System.Windows.Forms.ToolStripButton
Friend WithEvents lblFormular As System.Windows.Forms.Label
Friend WithEvents txtFormularname As System.Windows.Forms.TextBox
Friend WithEvents txtControlname As System.Windows.Forms.TextBox
Friend WithEvents lblControl As System.Windows.Forms.Label
Friend WithEvents lblToolTip As System.Windows.Forms.Label
Friend WithEvents txtToolTip As System.Windows.Forms.TextBox
Friend WithEvents btnSave As System.Windows.Forms.Button
End Class

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,95 @@
Imports C1.Win.C1TrueDBGrid
Imports System
Imports System.Data
Imports System.Data.SqlTypes
Imports System.Data.SqlClient
Public Class FrmToolTipEditor
Dim WithEvents evh As MyGenericEventHandler = Globals.MyEventHanlder
Private Sub FrmToolTipEditor_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
Globals.Set_ToolTips = False
Globals.ToolTipDaten.Tables.Clear()
End Sub
Private Sub FrmToolTipEditor_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Globals.Set_ToolTips = False
Globals.ToolTipDaten.Tables.Clear()
End Sub
Private Sub FrmToolTipEditor_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Globals.Set_ToolTips = True
End Sub
Private Sub evh_Set_ToolTip(ByVal formname As String, ByVal ctlname As String) Handles evh.Set_ToolTip
Me.txtFormularname.Text = formname
Me.txtControlname.Text = ctlname
Me.txtToolTip.Text = ""
Get_Data()
End Sub
Private Function Get_Data()
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
scmCmdToExecute.CommandText = "dbo.sp_tooltips"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn.scoDBConnection
Try
scmCmdToExecute.Parameters.Add(New SqlParameter("@fnkt", SqlDbType.Int, 4, ParameterDirection.Input, True, 0, 0, "", DataRowVersion.Proposed, 1))
scmCmdToExecute.Parameters.Add(New SqlParameter("@formname", SqlDbType.VarChar, 50, ParameterDirection.Input, True, 0, 0, "", DataRowVersion.Proposed, Me.txtFormularname.Text))
scmCmdToExecute.Parameters.Add(New SqlParameter("@controlname", SqlDbType.VarChar, 50, ParameterDirection.Input, True, 0, 0, "", DataRowVersion.Proposed, Me.txtControlname.Text))
scmCmdToExecute.Parameters.Add(New SqlParameter("@Tooltip", SqlDbType.VarChar, 1024, ParameterDirection.Input, True, 0, 0, "", DataRowVersion.Proposed, ""))
scmCmdToExecute.Parameters.Add(New SqlParameter("@mitarbeiternr", SqlDbType.Int, 4, ParameterDirection.Input, True, 0, 0, "", DataRowVersion.Proposed, Globals.clsmitarbeiter.iMitarbeiternr.Value))
scmCmdToExecute.Parameters.Add(New SqlParameter("@outToolTipNr", SqlDbType.Int, 4, ParameterDirection.Output, True, 0, 0, "", DataRowVersion.Proposed, 0))
scmCmdToExecute.Parameters.Add(New SqlParameter("@outformname", SqlDbType.VarChar, 50, ParameterDirection.Output, True, 0, 0, "", DataRowVersion.Proposed, ""))
scmCmdToExecute.Parameters.Add(New SqlParameter("@outcontrolname", SqlDbType.VarChar, 50, ParameterDirection.Output, True, 0, 0, "", DataRowVersion.Proposed, ""))
scmCmdToExecute.Parameters.Add(New SqlParameter("@outtooltip", SqlDbType.VarChar, 1024, ParameterDirection.Output, True, 0, 0, "", DataRowVersion.Proposed, ""))
scmCmdToExecute.Connection.Open()
scmCmdToExecute.ExecuteNonQuery()
If scmCmdToExecute.Parameters("@outtooltip").Value <> "" Then
Me.txtToolTip.Text = scmCmdToExecute.Parameters("@outtooltip").Value
Return True
Else
Return False
End If
Catch ex As Exception
Finally
scmCmdToExecute.Connection.Close()
End Try
End Function
Private Function Save_Data()
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
scmCmdToExecute.CommandText = "dbo.sp_tooltips"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn.scoDBConnection
Try
scmCmdToExecute.Parameters.Add(New SqlParameter("@fnkt", SqlDbType.Int, 4, ParameterDirection.Input, True, 0, 0, "", DataRowVersion.Proposed, 2))
scmCmdToExecute.Parameters.Add(New SqlParameter("@formname", SqlDbType.VarChar, 50, ParameterDirection.Input, True, 0, 0, "", DataRowVersion.Proposed, Me.txtFormularname.Text))
scmCmdToExecute.Parameters.Add(New SqlParameter("@controlname", SqlDbType.VarChar, 50, ParameterDirection.Input, True, 0, 0, "", DataRowVersion.Proposed, Me.txtControlname.Text))
scmCmdToExecute.Parameters.Add(New SqlParameter("@Tooltip", SqlDbType.VarChar, 1024, ParameterDirection.Input, True, 0, 0, "", DataRowVersion.Proposed, Me.txtToolTip.Text))
scmCmdToExecute.Parameters.Add(New SqlParameter("@mitarbeiternr", SqlDbType.Int, 4, ParameterDirection.Input, True, 0, 0, "", DataRowVersion.Proposed, Globals.clsmitarbeiter.iMitarbeiternr.Value))
scmCmdToExecute.Parameters.Add(New SqlParameter("@outToolTipNr", SqlDbType.Int, 4, ParameterDirection.Output, True, 0, 0, "", DataRowVersion.Proposed, 0))
scmCmdToExecute.Parameters.Add(New SqlParameter("@outformname", SqlDbType.VarChar, 50, ParameterDirection.Output, True, 0, 0, "", DataRowVersion.Proposed, ""))
scmCmdToExecute.Parameters.Add(New SqlParameter("@outcontrolname", SqlDbType.VarChar, 50, ParameterDirection.Output, True, 0, 0, "", DataRowVersion.Proposed, ""))
scmCmdToExecute.Parameters.Add(New SqlParameter("@outtooltip", SqlDbType.VarChar, 1024, ParameterDirection.Output, True, 0, 0, "", DataRowVersion.Proposed, ""))
scmCmdToExecute.Connection.Open()
scmCmdToExecute.ExecuteNonQuery()
Return True
Catch ex As Exception
Finally
scmCmdToExecute.Connection.Close()
End Try
End Function
Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click
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 btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
Me.Save_Data()
End Sub
End Class

View File

@@ -0,0 +1,491 @@
Imports System
Imports System.Data
Imports System.Data.SqlTypes
Imports System.Data.SqlClient
Namespace Sysadmin
Public Class DomainTable
#Region "Deklarationen"
Dim UpdateCommand As New SqlCommand
Dim InsertCommand As New SqlCommand
Dim selectcommand As New SqlCommand
Dim BaseData As New DataSet
Dim connection As New SqlConnection()
Dim da As New SqlDataAdapter("", connection)
Dim m_tablename As String
Property Tablename() As String
Get
Return m_tablename
End Get
Set(ByVal value As String)
m_tablename = value
End Set
End Property
Dim m_selectproc As String
Property Select_Proc() As String
Get
Return "pr_" & Tablename & "_selectall"
End Get
Set(ByVal value As String)
m_selectproc = "pr_" & Tablename & "_selectall"
End Set
End Property
Property Update_Proc() As String
Get
Return "pr_" & Tablename & "_Update"
End Get
Set(ByVal value As String)
m_selectproc = "pr_" & Tablename & "_Update"
End Set
End Property
Property Insert_Proc() As String
Get
Return "pr_" & Tablename & "_Insert"
End Get
Set(ByVal value As String)
m_selectproc = "pr_" & Tablename & "_Update"
End Set
End Property
Property Select_Proc_Bottomtable() As String
Get
Return "pr_" & Tablename & "_selectall_bottomtable"
End Get
Set(ByVal value As String)
m_selectproc = "pr_" & Tablename & "_selectall_bottomtable"
End Set
End Property
Property Select_Proc_Bottomtable2() As String
Get
Return "pr_" & Tablename & "_selectall_bottomtable2"
End Get
Set(ByVal value As String)
m_selectproc = "pr_" & Tablename & "_selectall_bottomtable2"
End Set
End Property
Property Update_Proc_Bottomtable() As String
Get
Return "pr_" & Tablename & "_Update_bottomtable"
End Get
Set(ByVal value As String)
m_selectproc = "pr_" & Tablename & "_Update_bottomtable"
End Set
End Property
Property Insert_Proc_Bottomtable() As String
Get
Return "pr_" & Tablename & "_Insert_bottomtable"
End Get
Set(ByVal value As String)
m_selectproc = "pr_" & Tablename & "_Update_bottomtable"
End Set
End Property
Dim m_Tabledata As New DataSet
Property Tabledata() As DataSet
Get
Return m_Tabledata
End Get
Set(ByVal value As DataSet)
m_Tabledata = value
End Set
End Property
#End Region
''' <summary>
''' Tabellenname übernehmen und Daten ab DB laden
''' </summary>
''' <param name="tablename"></param>
''' <remarks></remarks>
Sub New(ByVal tablename As String, Optional ByVal Fokus As Integer = 0, Optional ByVal Keyvalue As String = "")
Me.Tablename = tablename
If Keyvalue = "" Then
Load_Data()
Else
Load_Bootom_Table(tablename, Fokus, Keyvalue)
End If
End Sub
Sub New(ByVal tablename As String, ByVal Fokus As Integer, ByVal Keyvalue As String, ByVal mitarbeiternr As Integer)
Me.Tablename = tablename
If Keyvalue = "" Then
Load_Data()
Else
Load_Data_MA_Fokus(tablename, Fokus, Keyvalue, mitarbeiternr)
End If
End Sub
Sub New(ByVal tablename As String, ByVal keyvalue As String, ByVal mitarbeiternr As Integer)
Me.Tablename = tablename
Load_Data_MA(tablename, keyvalue, mitarbeiternr)
End Sub
Sub New(ByVal tablename As String, ByVal Focus As Integer, ByVal keyvalue As String, ByVal mitarbeiternr As Integer, ByVal Key2 As String)
Me.Tablename = tablename
Load_Data_2Key(tablename, keyvalue, mitarbeiternr, Key2)
End Sub
Public Sub Load_Data_MA(ByVal tablename As String, ByVal KeyValue As String, ByVal mitarbeiternr As Integer)
Tabledata.Tables.Clear()
Dim sqlcmd As New SqlCommand
sqlcmd.CommandText = Me.Select_Proc_Bottomtable
sqlcmd.Parameters.Add("@iErrorCode", SqlDbType.Int, 4)
sqlcmd.Parameters.Add("@Fokus", SqlDbType.Int, 4)
sqlcmd.Parameters.Add("@KeyValue", SqlDbType.VarChar, 255)
sqlcmd.Parameters.Add("@mitarbeiternr", SqlDbType.VarChar, 255)
sqlcmd.Parameters(0).Value = 0
sqlcmd.Parameters(1).Value = 0
sqlcmd.Parameters(2).Value = KeyValue
sqlcmd.Parameters(3).Value = Globals.clsmitarbeiter.iMitarbeiternr.Value
sqlcmd.CommandType = CommandType.StoredProcedure
sqlcmd.Connection = connection
Try
connection.ConnectionString = Globals.sConnectionString
connection.Open()
da.SelectCommand = sqlcmd
da.Fill(Tabledata, "Domaintable")
Catch ex As Exception
Finally
connection.Close()
da.Dispose()
sqlcmd.Dispose()
End Try
End Sub
Public Sub Load_Data_2Key(ByVal tablename As String, ByVal KeyValue As String, ByVal mitarbeiternr As Integer, ByVal KeyValue2 As String)
Tabledata.Tables.Clear()
Dim sqlcmd As New SqlCommand
sqlcmd.CommandText = Me.Select_Proc_Bottomtable2
sqlcmd.Parameters.Add("@iErrorCode", SqlDbType.Int, 4)
sqlcmd.Parameters.Add("@Fokus", SqlDbType.Int, 4)
sqlcmd.Parameters.Add("@KeyValue", SqlDbType.VarChar, 255)
sqlcmd.Parameters.Add("@KeyValue2", SqlDbType.VarChar, 255)
sqlcmd.Parameters.Add("@mitarbeiternr", SqlDbType.VarChar, 255)
sqlcmd.Parameters(0).Value = 0
sqlcmd.Parameters(1).Value = 0
sqlcmd.Parameters(2).Value = KeyValue
sqlcmd.Parameters(3).Value = KeyValue2
sqlcmd.Parameters(4).Value = Globals.clsmitarbeiter.iMitarbeiternr.Value
sqlcmd.CommandType = CommandType.StoredProcedure
sqlcmd.Connection = connection
Try
connection.ConnectionString = Globals.sConnectionString
connection.Open()
da.SelectCommand = sqlcmd
da.Fill(Tabledata, "Domaintable")
Catch ex As Exception
Finally
connection.Close()
da.Dispose()
sqlcmd.Dispose()
End Try
End Sub
Public Sub Load_Data_MA_Fokus(ByVal tablename As String, ByVal Fokus As Integer, ByVal KeyValue As String, ByVal mitarbeiternr As Integer)
Tabledata.Tables.Clear()
Dim sqlcmd As New SqlCommand
sqlcmd.CommandText = Me.Select_Proc_Bottomtable
sqlcmd.Parameters.Add("@iErrorCode", SqlDbType.Int, 4)
sqlcmd.Parameters.Add("@Fokus", SqlDbType.Int, 4)
sqlcmd.Parameters.Add("@KeyValue", SqlDbType.VarChar, 255)
sqlcmd.Parameters.Add("@mitarbeiternr", SqlDbType.VarChar, 255)
sqlcmd.Parameters(0).Value = 0
sqlcmd.Parameters(1).Value = Fokus
sqlcmd.Parameters(2).Value = KeyValue
sqlcmd.Parameters(3).Value = Globals.clsmitarbeiter.iMitarbeiternr.Value
sqlcmd.CommandType = CommandType.StoredProcedure
sqlcmd.Connection = connection
Try
connection.ConnectionString = Globals.sConnectionString
connection.Open()
da.SelectCommand = sqlcmd
da.Fill(Tabledata, "Domaintable")
Catch ex As Exception
Finally
connection.Close()
da.Dispose()
sqlcmd.Dispose()
End Try
End Sub
'Sub New()
'End Sub
''' <summary>
''' Daten ab Datenbank laden
''' </summary>
''' <remarks></remarks>
Public Overridable Sub Load_Data()
Tabledata.Tables.Clear()
selectcommand.CommandText = Me.Select_Proc
selectcommand.Parameters.Add("@iErrorCode", SqlDbType.Int, 4)
selectcommand.Parameters(0).Value = 0
selectcommand.CommandType = CommandType.StoredProcedure
selectcommand.Connection = connection
Try
connection.ConnectionString = Globals.sConnectionString
connection.Open()
da.SelectCommand = selectcommand
da.Fill(Tabledata, "Domaintable")
Catch ex As Exception
Finally
connection.Close()
da.Dispose()
selectcommand.Dispose()
End Try
End Sub
''' <summary>
''' Basis-Datentabelle laden. Diese wird für die dynamische Generierung der Insert- und Update-Statements benötigt
''' </summary>
''' <remarks></remarks>
Private Sub Load_BaseData()
BaseData.Tables.Clear()
Dim sqlcmd As New SqlCommand
sqlcmd.CommandText = Me.Select_Proc
sqlcmd.Parameters.Add("@iErrorCode", SqlDbType.Int, 4)
sqlcmd.Parameters(0).Value = 0
sqlcmd.CommandType = CommandType.StoredProcedure
sqlcmd.Connection = connection
Try
connection.ConnectionString = Globals.sConnectionString
connection.Open()
da.SelectCommand = sqlcmd
da.Fill(BaseData, "Basedata")
Catch ex As Exception
Finally
connection.Close()
da.Dispose()
sqlcmd.Dispose()
End Try
End Sub
''' <summary>
''' Update-Statement dynamisch für das UpdateCommand generieren
''' </summary>
''' <remarks></remarks>
Private Sub Generate_Update_Statement()
Dim col As DataColumn
Dim col1 As DataColumn
Dim UseCol As Boolean = False
UpdateCommand.CommandText = Me.Update_Proc
UpdateCommand.CommandType = System.Data.CommandType.StoredProcedure
UpdateCommand.Connection = connection
UpdateCommand.Parameters.Clear()
For Each col In Me.Tabledata.Tables(0).Columns
UseCol = False
For Each col1 In Me.BaseData.Tables(0).Columns
If col.ColumnName = col1.ColumnName Then
UseCol = True
Exit For
End If
Next
If UseCol Then UpdateCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter(Get_Prefix(col) & col.ColumnName, Get_SqlDBType(col), Get_Data_Fieldlen(col), col.ColumnName))
Next
UpdateCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter("@iErrorcode", SqlDbType.Int, 4))
UpdateCommand.Parameters("@iErrorcode").Value = 0
da.UpdateCommand = UpdateCommand
End Sub
''' <summary>
''' Insert-Statement dynamisch für das InsertCommand generieren
''' </summary>
''' <remarks></remarks>
Private Sub Generate_Insert_Statement()
Dim col As DataColumn
Dim col1 As DataColumn
Dim UseCol As Boolean = False
InsertCommand.CommandText = Me.Insert_Proc
InsertCommand.CommandType = System.Data.CommandType.StoredProcedure
InsertCommand.Connection = connection
InsertCommand.Parameters.Clear()
For Each col In Me.Tabledata.Tables(0).Columns
UseCol = False
For Each col1 In Me.BaseData.Tables(0).Columns
If col.ColumnName = col1.ColumnName Then
UseCol = True
Exit For
End If
Next
If UseCol Then InsertCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter(Get_Prefix(col) & col.ColumnName, Get_SqlDBType(col), Get_Data_Fieldlen(col), col.ColumnName))
Next
InsertCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter("@iErrorcode", SqlDbType.Int, 4))
InsertCommand.Parameters("@iErrorcode").Value = 0
da.InsertCommand = InsertCommand
End Sub
''' <summary>
''' Prefixt für den SP-Übergabeparameter generieren
''' </summary>
''' <param name="col">Aktuelle Columnt</param>
''' <returns>Prefis für SP-Übergabeparameter</returns>
''' <remarks></remarks>
Private Function Get_Prefix(ByVal col As DataColumn) As String
If col.DataType.Name = "DateTime" Then Return "@da"
If col.DataType.Name = "Double" Then Return "@f"
Return "@" & col.DataType.Name.Substring(0, 1)
End Function
''' <summary>
''' SQL-DB-Type für den SP-Übergabeparameter festlegen
''' </summary>
''' <param name="col">Aktuelle Column</param>
''' <returns>SQLDBType</returns>
''' <remarks></remarks>
Private Function Get_SqlDBType(ByVal col As DataColumn) As SqlDbType
If col.DataType.Name = "Integer" Then Return SqlDbType.Int
If col.DataType.Name = "Int32" Then Return SqlDbType.Int
If col.DataType.Name = "String" Then Return SqlDbType.VarChar
If col.DataType.Name = "Boolean" Then Return SqlDbType.Bit
If col.DataType.Name = "DateTime" Then Return SqlDbType.DateTime
If col.DataType.Name = "Double" Then Return SqlDbType.Float
MsgBox(col.DataType.Name)
End Function
''' <summary>
''' Feldlänge für den SP-Übergabeparemter festlegen
''' </summary>
''' <param name="col">Aktulle Column</param>
''' <returns>Feldlänge</returns>
''' <remarks></remarks>
Private Function Get_Data_Fieldlen(ByVal col As DataColumn) As Integer
Return col.MaxLength
End Function
''' <summary>
''' Datesichern. Dabei wird das Update- sowie das Insert-Statement dynamisch generiert
''' </summary>
''' <remarks></remarks>
Public Sub Save_Data()
Load_BaseData()
Generate_Update_Statement()
Generate_Insert_Statement()
Try
da.Update(Me.Tabledata, Me.Tabledata.Tables(0).TableName)
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
''' <summary>
''' Dispose von Tabledata
''' </summary>
''' <remarks></remarks>
Public Sub dispose()
Me.Tabledata.Dispose()
End Sub
#Region "Verknüpfungseditor"
''' <summary>
''' Load der Verbindungstabelle
''' </summary>
''' <param name="tablename"></param>
''' <param name="Fokus"></param>
''' <param name="KeyValue"></param>
''' <remarks></remarks>
Public Sub Load_Bootom_Table(ByVal tablename As String, ByVal Fokus As Integer, ByVal KeyValue As String)
Tabledata.Tables.Clear()
Dim sqlcmd As New SqlCommand
sqlcmd.CommandText = Me.Select_Proc_Bottomtable
sqlcmd.Parameters.Add("@iErrorCode", SqlDbType.Int, 4)
sqlcmd.Parameters.Add("@Fokus", SqlDbType.Int, 4)
sqlcmd.Parameters.Add("@KeyValue", SqlDbType.VarChar, 255)
sqlcmd.Parameters(0).Value = 0
sqlcmd.Parameters(1).Value = Fokus
sqlcmd.Parameters(2).Value = KeyValue
sqlcmd.CommandType = CommandType.StoredProcedure
sqlcmd.Connection = connection
Try
connection.ConnectionString = Globals.sConnectionString
connection.Open()
da.SelectCommand = sqlcmd
da.Fill(Tabledata, "Domaintable")
Catch ex As Exception
Finally
connection.Close()
da.Dispose()
sqlcmd.Dispose()
End Try
End Sub
''' <summary>
''' Neuer Eintrag in der Tabelle eintragen. Sind neben den Defaultwerten weitere Attribute vorhanden, werde diese abhängig vom Datentype mit Defaultwerten befüllt.
''' </summary>
''' <param name="key1"></param>
''' <param name="keyvalue1"></param>
''' <param name="key2"></param>
''' <param name="keyvalue2"></param>
''' <remarks></remarks>
Public Sub Insert_Bottom_Table(ByVal key1 As String, ByVal keyvalue1 As Integer, ByVal key2 As String, ByVal keyvalue2 As String)
Dim dbkey As New db.clsMyKey_Tabelle
dbkey.cpMainConnectionProvider = Globals.conn
conn.OpenConnection()
Dim newkey As Integer = dbkey.get_dbkey(Me.Tablename)
conn.CloseConnection(True)
dbkey.Dispose()
Dim dr As DataRow
dr = Me.Tabledata.Tables(0).NewRow
dr.Item(0) = newkey
Dim i As Integer
For i = 1 To Me.Tabledata.Tables(0).Columns.Count - 1
Select Case UCase(Me.Tabledata.Tables(0).Columns(i).ColumnName)
Case "AKTIV"
dr.Item(i) = 1
Case "ERSTELLT_AM"
dr.Item(i) = Now
Case "MUTIERT_AM"
dr.Item(i) = Now
Case "MUTIERER"
dr.Item(i) = Globals.clsmitarbeiter.iMitarbeiternr.Value
Case "MANDANTNR"
dr.Item(i) = Globals.clsmitarbeiter.iMandantnr.Value
Case "MANDANT"
dr.Item(i) = Globals.clsmitarbeiter.iMandantnr.Value
Case UCase(key1)
dr.Item(i) = keyvalue1
Case UCase(key2)
dr.Item(i) = keyvalue2
Case Else
Select Case Type.GetTypeCode(Me.Tabledata.Tables(0).Columns(i).DataType)
Case TypeCode.DateTime
dr.Item(i) = Now
Case TypeCode.Double
dr.Item(i) = 0
Case TypeCode.String
dr.Item(i) = ""
Case TypeCode.Int32
dr.Item(i) = 0
Case TypeCode.Boolean
dr.Item(i) = True
Case TypeCode.Int16
dr.Item(i) = 0
Case TypeCode.Int32
dr.Item(i) = 0
Case TypeCode.Int64
dr.Item(i) = 0
End Select
End Select
Next
Me.Tabledata.Tables(0).Rows.Add(dr)
End Sub
#End Region
End Class
End Namespace

View File

@@ -0,0 +1,113 @@
Imports System
Imports System.Data
Imports System.Data.SqlTypes
Imports System.Data.SqlClient
Namespace db
Public Class clsMySysadminfunkion
Inherits clsSysadminfunktion
#Region "Select Hierarchy"
Public Function SelectHierarchy() As DataTable
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
'scmCmdToExecute.CommandText = "dbo.[sp_sysadminfunktion_hierarchie]"
scmCmdToExecute.CommandText = "dbo.[sp_get_sysadmin_tree]"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
Dim dtToReturn As DataTable = New DataTable("sysadminfunktion")
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
' // Use base class' connection object
scmCmdToExecute.Connection = m_scoMainConnection
Try
scmCmdToExecute.Parameters.Add(New SqlParameter("@imitarbeiternr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Globals.clsmitarbeiter.iMitarbeiternr.Value))
scmCmdToExecute.Parameters.Add(New SqlParameter("@iroot", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0))
scmCmdToExecute.Parameters.Add(New SqlParameter("@isprache", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 1))
scmCmdToExecute.Parameters.Add(New SqlParameter("@imandant", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Globals.clsmitarbeiter.iMandantnr.Value))
scmCmdToExecute.Parameters.Add(New SqlParameter("@iErrorCode", SqlDbType.Int, 4, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, m_iErrorCode))
If m_bMainConnectionIsCreatedLocal Then
' // Open connection.
m_scoMainConnection.Open()
Else
If m_cpMainConnectionProvider.bIsTransactionPending Then
scmCmdToExecute.Transaction = m_cpMainConnectionProvider.stCurrentTransaction
End If
End If
' // Execute query.
sdaAdapter.Fill(dtToReturn)
m_iErrorCode = New SqlInt32(CType(scmCmdToExecute.Parameters.Item("@iErrorCode").Value, SqlInt32))
If Not m_iErrorCode.Equals(New SqlInt32(db.LLBLError.AllOk)) Then
' // Throw error.
Throw New Exception("Stored Procedure 'pr_sysadminfunktion_SelectAll' reported the ErrorCode: " & m_iErrorCode.ToString())
End If
Return dtToReturn
Catch ex As Exception
' // some error occured. Bubble it to caller and encapsulate Exception object
Throw New Exception("clsSysadminfunktion::SelectAll::Error occured." + ex.Message, ex)
Finally
If m_bMainConnectionIsCreatedLocal Then
' // Close connection.
m_scoMainConnection.Close()
End If
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
End Try
End Function
#End Region
#Region "LoadTreeMenu"
Public Sub LoadTreeMenu(ByVal otv As TreeView)
Dim menueintraege As New clsMySysadminfunkion()
Dim menudata As DataTable
Dim i As Integer
Dim m_collDeletedNodes As Collection
Dim collNodeKeys As New Collection()
Dim tnNew As TreeNode
Dim tnParent As TreeNode
m_collDeletedNodes = Nothing
m_collDeletedNodes = New Collection()
menueintraege.cpMainConnectionProvider = conn
menudata = menueintraege.SelectHierarchy
For i = 0 To menudata.Rows.Count - 1
If menudata.Rows(i).Item("ParentID") = 0 Then
tnNew = otv.Nodes.Add(menudata.Rows(i).Item("bezeichnung"))
With tnNew
.Tag() = menudata.Rows(i).Item("sysadminfnktnr")
.ImageIndex() = menudata.Rows(i).Item("ImageIndex")
.SelectedImageIndex() = menudata.Rows(i).Item("ImageIndexOpen")
End With
Try
collNodeKeys.Add(tnNew, CType(menudata.Rows(i).Item("sysadminfnktnr"), String))
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
End Try
Else
Try
tnParent = CType(collNodeKeys.Item(CType(menudata.Rows(i).Item("ParentID"), String)), TreeNode)
tnNew = tnParent.Nodes.Add(CType(menudata.Rows(i).Item("bezeichnung"), String))
With tnNew
.Tag() = CType(menudata.Rows(i).Item("sysadminfnktnr"), String)
.ImageIndex() = menudata.Rows(i).Item("ImageIndex")
.SelectedImageIndex() = menudata.Rows(i).Item("ImageIndexOpen")
End With
collNodeKeys.Add(tnNew, CType(menudata.Rows(i).Item("sysadminfnktnr"), String))
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
End Try
End If
Next
End Sub
#End Region
End Class
End Namespace

View File

@@ -0,0 +1,174 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class frmDomainEditor
Inherits System.Windows.Forms.Form
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Wird vom Windows Form-Designer benötigt.
Private components As System.ComponentModel.IContainer
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmDomainEditor))
Me.MenuStrip1 = New System.Windows.Forms.MenuStrip()
Me.DateiToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.BeendenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.ToolStrip1 = New System.Windows.Forms.ToolStrip()
Me.TSBtnQuit = New System.Windows.Forms.ToolStripButton()
Me.TSBtnSave = New System.Windows.Forms.ToolStripButton()
Me.C1Daten = New C1.Win.C1TrueDBGrid.C1TrueDBGrid()
Me.ContextMenuStripAuswertung = New System.Windows.Forms.ContextMenuStrip(Me.components)
Me.ReportdateiDBToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.ReportdateiFilesystemToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.OpenFileDialog1 = New System.Windows.Forms.OpenFileDialog()
Me.SaveFileDialog1 = New System.Windows.Forms.SaveFileDialog()
Me.MenuStrip1.SuspendLayout()
Me.ToolStrip1.SuspendLayout()
CType(Me.C1Daten, System.ComponentModel.ISupportInitialize).BeginInit()
Me.ContextMenuStripAuswertung.SuspendLayout()
Me.SuspendLayout()
'
'MenuStrip1
'
Me.MenuStrip1.AllowMerge = False
Me.MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.DateiToolStripMenuItem})
Me.MenuStrip1.Location = New System.Drawing.Point(0, 0)
Me.MenuStrip1.Name = "MenuStrip1"
Me.MenuStrip1.Size = New System.Drawing.Size(556, 24)
Me.MenuStrip1.TabIndex = 0
Me.MenuStrip1.Text = "MenuStrip1"
'
'DateiToolStripMenuItem
'
Me.DateiToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BeendenToolStripMenuItem})
Me.DateiToolStripMenuItem.Name = "DateiToolStripMenuItem"
Me.DateiToolStripMenuItem.Size = New System.Drawing.Size(46, 20)
Me.DateiToolStripMenuItem.Text = "&Datei"
'
'BeendenToolStripMenuItem
'
Me.BeendenToolStripMenuItem.Name = "BeendenToolStripMenuItem"
Me.BeendenToolStripMenuItem.Size = New System.Drawing.Size(120, 22)
Me.BeendenToolStripMenuItem.Text = "&Beenden"
'
'ToolStrip1
'
Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TSBtnQuit, Me.TSBtnSave})
Me.ToolStrip1.Location = New System.Drawing.Point(0, 24)
Me.ToolStrip1.Name = "ToolStrip1"
Me.ToolStrip1.Size = New System.Drawing.Size(556, 25)
Me.ToolStrip1.TabIndex = 1
Me.ToolStrip1.Text = "ToolStrip1"
'
'TSBtnQuit
'
Me.TSBtnQuit.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
Me.TSBtnQuit.Image = CType(resources.GetObject("TSBtnQuit.Image"), System.Drawing.Image)
Me.TSBtnQuit.ImageTransparentColor = System.Drawing.Color.Magenta
Me.TSBtnQuit.Name = "TSBtnQuit"
Me.TSBtnQuit.Size = New System.Drawing.Size(23, 22)
Me.TSBtnQuit.Text = "ToolStripButton1"
Me.TSBtnQuit.ToolTipText = "Fenster schliessen"
'
'TSBtnSave
'
Me.TSBtnSave.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
Me.TSBtnSave.Image = CType(resources.GetObject("TSBtnSave.Image"), System.Drawing.Image)
Me.TSBtnSave.ImageTransparentColor = System.Drawing.Color.Magenta
Me.TSBtnSave.Name = "TSBtnSave"
Me.TSBtnSave.Size = New System.Drawing.Size(23, 22)
Me.TSBtnSave.Text = "ToolStripButton1"
Me.TSBtnSave.ToolTipText = "Daten speichern"
'
'C1Daten
'
Me.C1Daten.AllowAddNew = True
Me.C1Daten.AlternatingRows = True
Me.C1Daten.CellTips = C1.Win.C1TrueDBGrid.CellTipEnum.Floating
Me.C1Daten.Dock = System.Windows.Forms.DockStyle.Fill
Me.C1Daten.FilterBar = True
Me.C1Daten.GroupByCaption = "Drag a column header here to group by that column"
Me.C1Daten.Images.Add(CType(resources.GetObject("C1Daten.Images"), System.Drawing.Image))
Me.C1Daten.Location = New System.Drawing.Point(0, 49)
Me.C1Daten.Name = "C1Daten"
Me.C1Daten.PreviewInfo.Location = New System.Drawing.Point(0, 0)
Me.C1Daten.PreviewInfo.Size = New System.Drawing.Size(0, 0)
Me.C1Daten.PreviewInfo.ZoomFactor = 75.0R
Me.C1Daten.PrintInfo.PageSettings = CType(resources.GetObject("C1Daten.PrintInfo.PageSettings"), System.Drawing.Printing.PageSettings)
Me.C1Daten.Size = New System.Drawing.Size(556, 270)
Me.C1Daten.TabAction = C1.Win.C1TrueDBGrid.TabActionEnum.ColumnNavigation
Me.C1Daten.TabIndex = 4
Me.C1Daten.Text = "C1TrueDBGrid1"
Me.C1Daten.PropBag = resources.GetString("C1Daten.PropBag")
'
'ContextMenuStripAuswertung
'
Me.ContextMenuStripAuswertung.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ReportdateiDBToolStripMenuItem, Me.ReportdateiFilesystemToolStripMenuItem})
Me.ContextMenuStripAuswertung.Name = "ContextMenuStripAuswertung"
Me.ContextMenuStripAuswertung.Size = New System.Drawing.Size(210, 48)
'
'ReportdateiDBToolStripMenuItem
'
Me.ReportdateiDBToolStripMenuItem.Name = "ReportdateiDBToolStripMenuItem"
Me.ReportdateiDBToolStripMenuItem.Size = New System.Drawing.Size(209, 22)
Me.ReportdateiDBToolStripMenuItem.Text = "Reportdatei -> DB"
'
'ReportdateiFilesystemToolStripMenuItem
'
Me.ReportdateiFilesystemToolStripMenuItem.Name = "ReportdateiFilesystemToolStripMenuItem"
Me.ReportdateiFilesystemToolStripMenuItem.Size = New System.Drawing.Size(209, 22)
Me.ReportdateiFilesystemToolStripMenuItem.Text = "Reportdatei -> Filesystem"
'
'OpenFileDialog1
'
Me.OpenFileDialog1.FileName = "OpenFileDialog1"
'
'frmDomainEditor
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(556, 319)
Me.Controls.Add(Me.C1Daten)
Me.Controls.Add(Me.ToolStrip1)
Me.Controls.Add(Me.MenuStrip1)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.MainMenuStrip = Me.MenuStrip1
Me.Name = "frmDomainEditor"
Me.Text = "frmDomainEditor"
Me.MenuStrip1.ResumeLayout(False)
Me.MenuStrip1.PerformLayout()
Me.ToolStrip1.ResumeLayout(False)
Me.ToolStrip1.PerformLayout()
CType(Me.C1Daten, System.ComponentModel.ISupportInitialize).EndInit()
Me.ContextMenuStripAuswertung.ResumeLayout(False)
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents MenuStrip1 As System.Windows.Forms.MenuStrip
Friend WithEvents ToolStrip1 As System.Windows.Forms.ToolStrip
Friend WithEvents DateiToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents BeendenToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents TSBtnQuit As System.Windows.Forms.ToolStripButton
Friend WithEvents TSBtnSave As System.Windows.Forms.ToolStripButton
Friend WithEvents C1Daten As C1.Win.C1TrueDBGrid.C1TrueDBGrid
Friend WithEvents ContextMenuStripAuswertung As System.Windows.Forms.ContextMenuStrip
Friend WithEvents ReportdateiDBToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents ReportdateiFilesystemToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents OpenFileDialog1 As System.Windows.Forms.OpenFileDialog
Friend WithEvents SaveFileDialog1 As System.Windows.Forms.SaveFileDialog
End Class

View File

@@ -0,0 +1,209 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="MenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="ToolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>125, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="TSBtnQuit.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACkSURBVDhPlZOBDoAgCET9dD7NPyNPgpAIzY21oTzPg1rL
F4/0aaQEJqJXAIo8Vu9dL9gDYiGRgG6VCwBJLDvgbxRVsodvBPiEASDXF3mIB3AbBzPjBLDeHBVIcRbj
KScKuMGQElArmKZNSNJ7VYC2Ib48EIjE0gX1QPerLigkATytqxT4gQht3HsQx9H8+OpCeHL+R+FQnIPT
QiXaHPwtNMCu8ALckGXYKNsEDQAAAABJRU5ErkJggg==
</value>
</data>
<data name="TSBtnSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABeSURBVDhPYzhw4MB/SjADSDMDAwNZGKwXZkBDA8QQQq6B
qYHT5BgAczHZLkB2LVleGMQGwJyGL1pBanB6ASZJDI01GolxAUgjXhfgcj4sgQ1SA8jNUPCkTCgD4ZMH
ADk0Kh+zxKF0AAAAAElFTkSuQmCC
</value>
</data>
<data name="C1Daten.Images" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAA3SURBVChTY2DABP+xiIGFkCVwsVEUwhThNREkiaEAJoiP
RnEmskKs7kd3C1YrYTrx+g6bIrAYAKCqHOQvFu6BAAAAAElFTkSuQmCC
</value>
</data>
<data name="C1Daten.PrintInfo.PageSettings" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACRTeXN0ZW0uRHJh
d2luZy5QcmludGluZy5QYWdlU2V0dGluZ3MHAAAAD3ByaW50ZXJTZXR0aW5ncwVjb2xvcglwYXBlclNp
emULcGFwZXJTb3VyY2URcHJpbnRlclJlc29sdXRpb24JbGFuZHNjYXBlB21hcmdpbnMEBAQEBAQEJ1N5
c3RlbS5EcmF3aW5nLlByaW50aW5nLlByaW50ZXJTZXR0aW5ncwIAAAAgU3lzdGVtLkRyYXdpbmcuUHJp
bnRpbmcuVHJpU3RhdGUCAAAAIVN5c3RlbS5EcmF3aW5nLlByaW50aW5nLlBhcGVyU2l6ZQIAAAAjU3lz
dGVtLkRyYXdpbmcuUHJpbnRpbmcuUGFwZXJTb3VyY2UCAAAAKVN5c3RlbS5EcmF3aW5nLlByaW50aW5n
LlByaW50ZXJSZXNvbHV0aW9uAgAAACBTeXN0ZW0uRHJhd2luZy5QcmludGluZy5UcmlTdGF0ZQIAAAAf
U3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuTWFyZ2lucwIAAAACAAAACQMAAAAF/P///yBTeXN0ZW0uRHJh
d2luZy5QcmludGluZy5UcmlTdGF0ZQEAAAAFdmFsdWUAAgIAAAAACgoKAfv////8////AAkGAAAABQMA
AAAnU3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuUHJpbnRlclNldHRpbmdzEgAAAAtwcmludGVyTmFtZQpk
cml2ZXJOYW1lCm91dHB1dFBvcnQLcHJpbnRUb0ZpbGUUcHJpbnREaWFsb2dEaXNwbGF5ZWQKZXh0cmFi
eXRlcwlleHRyYWluZm8GY29waWVzBmR1cGxleAdjb2xsYXRlE2RlZmF1bHRQYWdlU2V0dGluZ3MIZnJv
bVBhZ2UGdG9QYWdlB21heFBhZ2UHbWluUGFnZQpwcmludFJhbmdlDGRldm1vZGVieXRlcw1jYWNoZWRE
ZXZtb2RlAQEBAAAABwAEBAQAAAAABAAHAQEHAgceU3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuRHVwbGV4
AgAAACBTeXN0ZW0uRHJhd2luZy5QcmludGluZy5UcmlTdGF0ZQIAAAAkU3lzdGVtLkRyYXdpbmcuUHJp
bnRpbmcuUGFnZVNldHRpbmdzAgAAAAgICAgiU3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuUHJpbnRSYW5n
ZQIAAAAHAgIAAAAKBgcAAAAACQcAAAAAAAAACv//Bfj///8eU3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcu
RHVwbGV4AQAAAAd2YWx1ZV9fAAgCAAAA/////wH3/////P///wAJCgAAAAAAAAAAAAAADycAAAAAAAAF
9f///yJTeXN0ZW0uRHJhd2luZy5QcmludGluZy5QcmludFJhbmdlAQAAAAd2YWx1ZV9fAAgCAAAAAAAA
AAAACgUGAAAAH1N5c3RlbS5EcmF3aW5nLlByaW50aW5nLk1hcmdpbnMIAAAABGxlZnQFcmlnaHQDdG9w
BmJvdHRvbQpkb3VibGVMZWZ0C2RvdWJsZVJpZ2h0CWRvdWJsZVRvcAxkb3VibGVCb3R0b20AAAAAAAAA
AAgICAgGBgYGAgAAAGQAAABkAAAAZAAAAGQAAAAAAAAAAABZQAAAAAAAAFlAAAAAAAAAWUAAAAAAAABZ
QAEKAAAAAQAAAAkDAAAAAfP////8////AAoKCgHy/////P///wAJDwAAAAEPAAAABgAAAGQAAABkAAAA
ZAAAAGQAAAAAAAAAAABZQAAAAAAAAFlAAAAAAAAAWUAAAAAAAABZQAs=
</value>
</data>
<data name="C1Daten.PropBag" xml:space="preserve">
<value>&lt;?xml version="1.0"?&gt;&lt;Blob&gt;&lt;Styles type="C1.Win.C1TrueDBGrid.Design.ContextWrapper"&gt;&lt;Data&gt;HighlightRow{ForeColor:HighlightText;BackColor:Highlight;}Style8{}Style7{}Style3{}EvenRow{BackColor:White;}Normal{}RecordSelector{AlignImage:Center;}OddRow{BackColor:224, 224, 224;}Style14{}Footer{}FilterBar{ForeColor:Black;BackColor:255, 255, 192;}Heading{ForeColor:ControlText;Wrap:True;AlignVert:Center;BackColor:Control;Border:Flat,ControlDark,0, 1, 0, 1;}Style5{}Editor{}Style10{AlignHorz:Near;}Style16{}Selected{ForeColor:HighlightText;BackColor:Highlight;}Style15{}Style13{}Style12{}Style11{}Style4{}Style9{}FilterWatermark{ForeColor:InfoText;BackColor:Info;}Style6{}Group{Border:None,,0, 0, 0, 0;AlignVert:Center;BackColor:ControlDark;}Style1{}Caption{AlignHorz:Center;}Style2{}Inactive{ForeColor:InactiveCaptionText;BackColor:InactiveCaption;}&lt;/Data&gt;&lt;/Styles&gt;&lt;Splits&gt;&lt;C1.Win.C1TrueDBGrid.MergeView Name="" AlternatingRowStyle="True" CaptionHeight="17" ColumnCaptionHeight="17" ColumnFooterHeight="17" FilterBar="True" MarqueeStyle="DottedCellBorder" RecordSelectorWidth="17" DefRecSelWidth="17" VerticalScrollGroup="1" HorizontalScrollGroup="1"&gt;&lt;CaptionStyle parent="Style2" me="Style10" /&gt;&lt;EditorStyle parent="Editor" me="Style5" /&gt;&lt;EvenRowStyle parent="EvenRow" me="Style8" /&gt;&lt;FilterBarStyle parent="FilterBar" me="Style13" /&gt;&lt;FilterWatermarkStyle parent="FilterWatermark" me="Style14" /&gt;&lt;FooterStyle parent="Footer" me="Style3" /&gt;&lt;GroupStyle parent="Group" me="Style12" /&gt;&lt;HeadingStyle parent="Heading" me="Style2" /&gt;&lt;HighLightRowStyle parent="HighlightRow" me="Style7" /&gt;&lt;InactiveStyle parent="Inactive" me="Style4" /&gt;&lt;OddRowStyle parent="OddRow" me="Style9" /&gt;&lt;RecordSelectorStyle parent="RecordSelector" me="Style11" /&gt;&lt;SelectedStyle parent="Selected" me="Style6" /&gt;&lt;Style parent="Normal" me="Style1" /&gt;&lt;ClientRect&gt;0, 0, 554, 268&lt;/ClientRect&gt;&lt;BorderSide&gt;0&lt;/BorderSide&gt;&lt;/C1.Win.C1TrueDBGrid.MergeView&gt;&lt;/Splits&gt;&lt;NamedStyles&gt;&lt;Style parent="" me="Normal" /&gt;&lt;Style parent="Normal" me="Heading" /&gt;&lt;Style parent="Heading" me="Footer" /&gt;&lt;Style parent="Heading" me="Caption" /&gt;&lt;Style parent="Heading" me="Inactive" /&gt;&lt;Style parent="Normal" me="Selected" /&gt;&lt;Style parent="Normal" me="Editor" /&gt;&lt;Style parent="Normal" me="HighlightRow" /&gt;&lt;Style parent="Normal" me="EvenRow" /&gt;&lt;Style parent="Normal" me="OddRow" /&gt;&lt;Style parent="Heading" me="RecordSelector" /&gt;&lt;Style parent="Normal" me="FilterBar" /&gt;&lt;Style parent="FilterBar" me="FilterWatermark" /&gt;&lt;Style parent="Caption" me="Group" /&gt;&lt;/NamedStyles&gt;&lt;vertSplits&gt;1&lt;/vertSplits&gt;&lt;horzSplits&gt;1&lt;/horzSplits&gt;&lt;Layout&gt;None&lt;/Layout&gt;&lt;DefaultRecSelWidth&gt;17&lt;/DefaultRecSelWidth&gt;&lt;ClientArea&gt;0, 0, 554, 268&lt;/ClientArea&gt;&lt;PrintPageHeaderStyle parent="" me="Style15" /&gt;&lt;PrintPageFooterStyle parent="" me="Style16" /&gt;&lt;/Blob&gt;</value>
</data>
<metadata name="ContextMenuStripAuswertung.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>228, 17</value>
</metadata>
<metadata name="OpenFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>430, 17</value>
</metadata>
<metadata name="SaveFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>566, 17</value>
</metadata>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAICAEAAAAAADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHd3d3d3d3d3d3d3d3d3d3AAAAAAAA
AAAAAAAAAAAABw///////////////////wcP//////////////////8HD/d3d3f/d3d3f/d3d3f/Bw//
/////////////////wcP93d3d/93d3d/93d3d/8HD///////////////////Bw/3d3d3/3d3d3/3d3d3
/wcP//////////////////8HD/d3d3f/d3d3f/d3d3f/Bw///////////////////wcP93d3d/93d3d/
93d3d/8HD///////////////////Bw/3d3d3/3d3d3/3d3d3/wcP//////////////////8HD/d3d3f/
d3d3f/d3d3f/Bw///////////////////wcP93d3d/93d3d/93d3d/8HD///////////////////Bw//
/////////////////wcAAAAAAAAAAAAAAAAAAAAHDMzMzMzMzMzMzMzMzMzMBwz/zMzM/8zMzM/8zMzP
/AcM/8zMzP/MzMzP/MzMz/wHDMzMzMzMzMzMzMzMzMzMBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////4AAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf///////////////w==
</value>
</data>
</root>

View File

@@ -0,0 +1,236 @@
''' <summary>
''' Form mit generalisiertem Domain-Table-Editor.
''' </summary>
''' <remarks>
''' <img src="SampleDomainEditor.png"/>
''' </remarks>
''' <seealso
''' cref="Vertragsverwaltung.TKB.VV.Sysadmin.DomainTable">Vertragsverwaltung.TKB.VV.Sysadmin.DomainTable</seealso>
Public Class frmDomainEditor
#Region "Deklarationen"
Dim Domaintable As Sysadmin.DomainTable
Dim tablename As String
Dim SpaltenTitel As New Utils.Tabellenspalte
#End Region
#Region "Formular-Funktionen"
''' <summary>
''' Tabellenname übernehmen und Objekt DomainTable initialisieren
''' Initialisierung der Komponenten
''' </summary>
''' <param name="tblname">Tabellenname der Tabelle, welche über den Domaineditor editiert werden soll</param>
''' <remarks>Benötigt werden entsprechende Stored_Procedures, welche mit LBLLGEN_2 generiert wurden
''' pr_"Tablename"_SelectAll
''' pr_"Tablename"_Update
''' </remarks>
Public Sub New(ByVal tblname As String)
Me.InitializeComponent()
Domaintable = New Sysadmin.DomainTable(tblname)
Me.Text = "Domaineditor: " & tblname
Me.tablename = tblname
End Sub
''' <summary>
''' Zuordnung der Daten aus Domaintable und Spaltentitel des Grids setzen
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub frmDomainEditor_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Me.Domaintable.Tablename = "Auswertung" Then
Me.C1Daten.ContextMenuStrip = Me.ContextMenuStripAuswertung
End If
Me.C1Daten.DataSource = Domaintable.Tabledata
Me.C1Daten.DataMember = Domaintable.Tabledata.Tables(0).TableName
SpaltenTitel.Spaltentitel_aktualisieren(Me.C1Daten, Me.tablename, Me.Domaintable.Tabledata.Tables(0))
End Sub
''' <summary>
''' Schliessen des Formulars
''' </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 BeendenToolStripMenuItem.Click
Me.Close()
End Sub
''' <summary>
''' Ruft BeendetnToolStipMenuItem_Click auf
''' </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
BeendenToolStripMenuItem_Click(sender, e)
End Sub
''' <summary>
''' Prüfung auf allfällige Daten-Changes. Wurden Daten verändert, kann der User entscheiden, ob gespeichert, nichtgespeichert oder
''' das Formular nicht gespeichert werden soll.
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub frmDomainEditor_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
If Me.Domaintable.Tabledata.HasChanges Then
Dim msg As New Utils.MyMessage
Dim msgboxres As MsgBoxResult
msgboxres = msg.Show_MessageYesNoCancel(3)
If msgboxres = MsgBoxResult.Cancel Then
e.Cancel = True
Exit Sub
End If
If msgboxres = MsgBoxResult.Yes Then
Domaintable.Save_Data()
End If
End If
If UCase(Me.tablename) = "SPALTEN" Then
Globals.Spaltendaten.Rows.Clear()
End If
Domaintable.dispose()
End Sub
''' <summary>
''' Sichern der Daten
''' </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
Try
Domaintable.Save_Data()
If UCase(Me.tablename) = "SPALTEN" Then
Globals.Spaltendaten.Rows.Clear()
End If
If UCase(Me.tablename) = "TOOLTIP" Then
Globals.ToolTipDaten.Tables.Clear()
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
#End Region
#Region "C1 Handling"
''' <summary>
''' Aktualisierung der Spalten mutiert_am und mutierern. Sofern noch kein Schlüsselwert gesetzt ist (bei neuem Datensatz)
''' wird dieser aus der Keytabelle ausgelesen und zugewiesen.
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks>Je Domaintable ist ein Eintrag in der Key-Tabelle notwendig</remarks>
Private Sub C1Daten_AfterColUpdate(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.ColEventArgs) Handles C1Daten.AfterColUpdate
'Aktualisieren von Mutierer und Mutiert_am
Dim i As Integer
Try
For i = 0 To Me.C1Daten.Columns.Count - 1
If LCase(Me.C1Daten.Columns(i).DataField) = "mutiert_am" Then Me.C1Daten.Columns(i).Value = Now
If LCase(Me.C1Daten.Columns(i).DataField) = "mutierer" Then Me.C1Daten.Columns(i).Value = Globals.clsmitarbeiter.iMitarbeiternr.Value
Next
'neuer DB-Key auslösen, sofern kein Key vorhanden ist
If Me.C1Daten.Columns(0).Value Is DBNull.Value Then
Dim dbkey As New db.clsMyKey_Tabelle()
Dim key As Long
dbkey.cpMainConnectionProvider = conn
key = dbkey.get_dbkey(tablename)
Me.C1Daten.Columns(0).Value = key
For i = 0 To Me.C1Daten.Columns.Count - 1
If LCase(Me.C1Daten.Columns(i).DataField) = "mandantnr" Then
Me.C1Daten.Columns(i).Value = Globals.clsmitarbeiter.iMandantnr.Value
End If
If LCase(Me.C1Daten.Columns(i).DataField) = "erstellt_am" Then
Me.C1Daten.Columns(i).Value = Now
End If
If LCase(Me.C1Daten.Columns(i).DataField) = "aktiv" Then
Me.C1Daten.Columns(i).Value = 1
End If
Next
dbkey.Dispose()
End If
Catch
End Try
End Sub
''' <summary>
''' Aktualisierung der Default-Werte
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub C1Daten_AfterInsert(ByVal sender As Object, ByVal e As System.EventArgs) Handles C1Daten.AfterInsert
'Dim i As Integer
''Defaulwerte erstellt_am, mutiert_am, mutierer und aktiv setzen
'Try
' For i = 0 To C1Daten.Columns.Count - 1
' If LCase(Me.C1Daten.Columns(i).DataField) = "aktiv" Then
' Me.C1Daten.Columns(i).Value = 1
' End If
' If LCase(Me.C1Daten.Columns(i).DataField) = "mutiert_am" Then
' Me.C1Daten.Columns(i).Value = Now
' End If
' If LCase(Me.C1Daten.Columns(i).DataField) = "mutierer" Then
' Me.C1Daten.Columns(i).Value = Globals.clsmitarbeiter.iMitarbeiternr.Value
' End If
' If LCase(Me.C1Daten.Columns(i).DataField) = "mandantnr" Then
' Me.C1Daten.Columns(i).Value = Globals.clsmitarbeiter.iMandantnr.Value
' End If
' If LCase(Me.C1Daten.Columns(i).DataField) = "mandnat" Then
' Me.C1Daten.Columns(i).Value = Globals.clsmitarbeiter.iMandantnr.Value
' End If
' Next
'Catch
'End Try
End Sub
''' <summary>
''' Anzeige allfälliger Cellen-Tips
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub C1Daten_FetchCellTips(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.FetchCellTipsEventArgs) Handles C1Daten.FetchCellTips
Dim ts As New Utils.Tabellenspalte
ts.Tabelle = Me.tablename
Try
'ts.Feld = Me.C1Daten.Splits(0).DisplayColumns(e.ColIndex).Name
ts.Feld = Me.C1Daten.Columns(e.ColIndex).DataField
ts.getspalte()
e.CellTip = ts.TipText
Catch
End Try
ts = Nothing
End Sub
#End Region
Private Sub ReportdateiDBToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ReportdateiDBToolStripMenuItem.Click
Me.OpenFileDialog1.Filter = "Report-Dateien|*.rpt|Alle Dateien|*.*"
Me.OpenFileDialog1.ShowDialog()
If Me.OpenFileDialog1.FileName <> "" Then
Dim dms As New TKB.VV.Utils.MyDocMgmt
Me.C1Daten.Columns("CR_Filename").Value = dms.Save_RptDatei(Me.C1Daten.Columns("Auswertungnr").Value, Me.OpenFileDialog1.FileName)
dms = Nothing
End If
End Sub
Private Sub ReportdateiFilesystemToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ReportdateiFilesystemToolStripMenuItem.Click
Me.SaveFileDialog1.Filter = "Report-Dateien|*.rpt|Alle Dateien|*.*"
Me.SaveFileDialog1.ShowDialog()
If Me.SaveFileDialog1.FileName <> "" Then
Dim dms As New TKB.VV.Utils.MyDocMgmt
dms.Get_RptDatei(Me.C1Daten.Columns("Auswertungnr").Value, Me.SaveFileDialog1.FileName)
dms = Nothing
End If
End Sub
End Class

View File

@@ -0,0 +1,174 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class frmDomainEditorExtTables
Inherits System.Windows.Forms.Form
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Wird vom Windows Form-Designer benötigt.
Private components As System.ComponentModel.IContainer
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmDomainEditorExtTables))
Me.MenuStrip1 = New System.Windows.Forms.MenuStrip
Me.DateiToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.BeendenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.ToolStrip1 = New System.Windows.Forms.ToolStrip
Me.TSBtnQuit = New System.Windows.Forms.ToolStripButton
Me.TSBtnSave = New System.Windows.Forms.ToolStripButton
Me.C1Daten = New C1.Win.C1TrueDBGrid.C1TrueDBGrid
Me.ContextMenuStripAuswertung = New System.Windows.Forms.ContextMenuStrip(Me.components)
Me.ReportdateiDBToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.ReportdateiFilesystemToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.OpenFileDialog1 = New System.Windows.Forms.OpenFileDialog
Me.SaveFileDialog1 = New System.Windows.Forms.SaveFileDialog
Me.MenuStrip1.SuspendLayout()
Me.ToolStrip1.SuspendLayout()
CType(Me.C1Daten, System.ComponentModel.ISupportInitialize).BeginInit()
Me.ContextMenuStripAuswertung.SuspendLayout()
Me.SuspendLayout()
'
'MenuStrip1
'
Me.MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.DateiToolStripMenuItem})
Me.MenuStrip1.Location = New System.Drawing.Point(0, 0)
Me.MenuStrip1.Name = "MenuStrip1"
Me.MenuStrip1.Size = New System.Drawing.Size(556, 24)
Me.MenuStrip1.TabIndex = 0
Me.MenuStrip1.Text = "MenuStrip1"
'
'DateiToolStripMenuItem
'
Me.DateiToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BeendenToolStripMenuItem})
Me.DateiToolStripMenuItem.Name = "DateiToolStripMenuItem"
Me.DateiToolStripMenuItem.Size = New System.Drawing.Size(44, 20)
Me.DateiToolStripMenuItem.Text = "&Datei"
'
'BeendenToolStripMenuItem
'
Me.BeendenToolStripMenuItem.Name = "BeendenToolStripMenuItem"
Me.BeendenToolStripMenuItem.Size = New System.Drawing.Size(116, 22)
Me.BeendenToolStripMenuItem.Text = "&Beenden"
'
'ToolStrip1
'
Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TSBtnQuit, Me.TSBtnSave})
Me.ToolStrip1.Location = New System.Drawing.Point(0, 24)
Me.ToolStrip1.Name = "ToolStrip1"
Me.ToolStrip1.Size = New System.Drawing.Size(556, 25)
Me.ToolStrip1.TabIndex = 1
Me.ToolStrip1.Text = "ToolStrip1"
'
'TSBtnQuit
'
Me.TSBtnQuit.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
Me.TSBtnQuit.Image = CType(resources.GetObject("TSBtnQuit.Image"), System.Drawing.Image)
Me.TSBtnQuit.ImageTransparentColor = System.Drawing.Color.Magenta
Me.TSBtnQuit.Name = "TSBtnQuit"
Me.TSBtnQuit.Size = New System.Drawing.Size(23, 22)
Me.TSBtnQuit.Text = "ToolStripButton1"
Me.TSBtnQuit.ToolTipText = "Fenster schliessen"
'
'TSBtnSave
'
Me.TSBtnSave.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
Me.TSBtnSave.Image = CType(resources.GetObject("TSBtnSave.Image"), System.Drawing.Image)
Me.TSBtnSave.ImageTransparentColor = System.Drawing.Color.Magenta
Me.TSBtnSave.Name = "TSBtnSave"
Me.TSBtnSave.Size = New System.Drawing.Size(23, 22)
Me.TSBtnSave.Text = "ToolStripButton1"
Me.TSBtnSave.ToolTipText = "Daten speichern"
'
'C1Daten
'
Me.C1Daten.AllowAddNew = True
Me.C1Daten.AllowDelete = True
Me.C1Daten.AlternatingRows = True
Me.C1Daten.CellTips = C1.Win.C1TrueDBGrid.CellTipEnum.Floating
Me.C1Daten.Dock = System.Windows.Forms.DockStyle.Fill
Me.C1Daten.FilterBar = True
Me.C1Daten.GroupByCaption = "Drag a column header here to group by that column"
Me.C1Daten.Images.Add(CType(resources.GetObject("C1Daten.Images"), System.Drawing.Image))
Me.C1Daten.Location = New System.Drawing.Point(0, 49)
Me.C1Daten.Name = "C1Daten"
Me.C1Daten.PreviewInfo.Location = New System.Drawing.Point(0, 0)
Me.C1Daten.PreviewInfo.Size = New System.Drawing.Size(0, 0)
Me.C1Daten.PreviewInfo.ZoomFactor = 75
Me.C1Daten.PrintInfo.PageSettings = CType(resources.GetObject("C1Daten.PrintInfo.PageSettings"), System.Drawing.Printing.PageSettings)
Me.C1Daten.Size = New System.Drawing.Size(556, 270)
Me.C1Daten.TabAction = C1.Win.C1TrueDBGrid.TabActionEnum.ColumnNavigation
Me.C1Daten.TabIndex = 4
Me.C1Daten.Text = "C1TrueDBGrid1"
Me.C1Daten.PropBag = resources.GetString("C1Daten.PropBag")
'
'ContextMenuStripAuswertung
'
Me.ContextMenuStripAuswertung.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ReportdateiDBToolStripMenuItem, Me.ReportdateiFilesystemToolStripMenuItem})
Me.ContextMenuStripAuswertung.Name = "ContextMenuStripAuswertung"
Me.ContextMenuStripAuswertung.Size = New System.Drawing.Size(200, 48)
'
'ReportdateiDBToolStripMenuItem
'
Me.ReportdateiDBToolStripMenuItem.Name = "ReportdateiDBToolStripMenuItem"
Me.ReportdateiDBToolStripMenuItem.Size = New System.Drawing.Size(199, 22)
Me.ReportdateiDBToolStripMenuItem.Text = "Reportdatei -> DB"
'
'ReportdateiFilesystemToolStripMenuItem
'
Me.ReportdateiFilesystemToolStripMenuItem.Name = "ReportdateiFilesystemToolStripMenuItem"
Me.ReportdateiFilesystemToolStripMenuItem.Size = New System.Drawing.Size(199, 22)
Me.ReportdateiFilesystemToolStripMenuItem.Text = "Reportdatei -> Filesystem"
'
'OpenFileDialog1
'
Me.OpenFileDialog1.FileName = "OpenFileDialog1"
'
'frmDomainEditorExtTables
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(556, 319)
Me.Controls.Add(Me.C1Daten)
Me.Controls.Add(Me.ToolStrip1)
Me.Controls.Add(Me.MenuStrip1)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.MainMenuStrip = Me.MenuStrip1
Me.Name = "frmDomainEditorExtTables"
Me.Text = "frmDomainEditor"
Me.MenuStrip1.ResumeLayout(False)
Me.MenuStrip1.PerformLayout()
Me.ToolStrip1.ResumeLayout(False)
Me.ToolStrip1.PerformLayout()
CType(Me.C1Daten, System.ComponentModel.ISupportInitialize).EndInit()
Me.ContextMenuStripAuswertung.ResumeLayout(False)
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents MenuStrip1 As System.Windows.Forms.MenuStrip
Friend WithEvents ToolStrip1 As System.Windows.Forms.ToolStrip
Friend WithEvents DateiToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents BeendenToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents TSBtnQuit As System.Windows.Forms.ToolStripButton
Friend WithEvents TSBtnSave As System.Windows.Forms.ToolStripButton
Friend WithEvents C1Daten As C1.Win.C1TrueDBGrid.C1TrueDBGrid
Friend WithEvents ContextMenuStripAuswertung As System.Windows.Forms.ContextMenuStrip
Friend WithEvents ReportdateiDBToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents ReportdateiFilesystemToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents OpenFileDialog1 As System.Windows.Forms.OpenFileDialog
Friend WithEvents SaveFileDialog1 As System.Windows.Forms.SaveFileDialog
End Class

View File

@@ -0,0 +1,208 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="MenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="ToolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>125, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="TSBtnQuit.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAKNJREFUOE+VkwEO
wCAIA93PeZo/cyKiiMDYEmNC7FGpe4r9NaeeLjcAuFZXjxp+tVZs4jY6xFoIQCALwMR1QHYkVyTGXQNk
YQHQrhRJiAS00g/OwrET4OysHZDYWn1IGQet4EBCQOwAsyUIxWJcoYzYcHkzIMjOVQ1xw6MUGDJ2zjkz
A+t5Xg6sKMOXyFfyHKgru//IjHGnkBUycb2Dv8IF+BK+MTpb49UVguoAAAAASUVORK5CYII=
</value>
</data>
<data name="TSBtnSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAF5JREFUOE9jPHDg
wH8GSgDUAJAhJGOwXpgBDQ0QA0B8fBimBk6TYwDMtWS7ANm1ZHlhEBsAcxq+KAWpwekFmCQxNNZoJMYF
II14XYDL+bDENUgNIDdDwZMyoQyETx4A+Fj5YOUZcUAAAAAASUVORK5CYII=
</value>
</data>
<data name="C1Daten.Images" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAADdJREFUKFNjYMAE
/7GIgYWQJXCxURTCFOE1ESSJoQAmiI9GcSayQqzuR3cLVithOvH6DpsisBgAoKoc5C8W7oEAAAAASUVO
RK5CYII=
</value>
</data>
<data name="C1Daten.PrintInfo.PageSettings" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj0yLjAuMC4wLCBDdWx0
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACRTeXN0ZW0uRHJh
d2luZy5QcmludGluZy5QYWdlU2V0dGluZ3MHAAAAD3ByaW50ZXJTZXR0aW5ncwVjb2xvcglwYXBlclNp
emULcGFwZXJTb3VyY2URcHJpbnRlclJlc29sdXRpb24JbGFuZHNjYXBlB21hcmdpbnMEBAQEBAQEJ1N5
c3RlbS5EcmF3aW5nLlByaW50aW5nLlByaW50ZXJTZXR0aW5ncwIAAAAgU3lzdGVtLkRyYXdpbmcuUHJp
bnRpbmcuVHJpU3RhdGUCAAAAIVN5c3RlbS5EcmF3aW5nLlByaW50aW5nLlBhcGVyU2l6ZQIAAAAjU3lz
dGVtLkRyYXdpbmcuUHJpbnRpbmcuUGFwZXJTb3VyY2UCAAAAKVN5c3RlbS5EcmF3aW5nLlByaW50aW5n
LlByaW50ZXJSZXNvbHV0aW9uAgAAACBTeXN0ZW0uRHJhd2luZy5QcmludGluZy5UcmlTdGF0ZQIAAAAf
U3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuTWFyZ2lucwIAAAACAAAACQMAAAAF/P///yBTeXN0ZW0uRHJh
d2luZy5QcmludGluZy5UcmlTdGF0ZQEAAAAFdmFsdWUAAgIAAAAACgoKAfv////8////AAkGAAAABQMA
AAAnU3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuUHJpbnRlclNldHRpbmdzEgAAAAtwcmludGVyTmFtZQpk
cml2ZXJOYW1lCm91dHB1dFBvcnQLcHJpbnRUb0ZpbGUUcHJpbnREaWFsb2dEaXNwbGF5ZWQKZXh0cmFi
eXRlcwlleHRyYWluZm8GY29waWVzBmR1cGxleAdjb2xsYXRlE2RlZmF1bHRQYWdlU2V0dGluZ3MIZnJv
bVBhZ2UGdG9QYWdlB21heFBhZ2UHbWluUGFnZQpwcmludFJhbmdlDGRldm1vZGVieXRlcw1jYWNoZWRE
ZXZtb2RlAQEBAAAABwAEBAQAAAAABAAHAQEHAgceU3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuRHVwbGV4
AgAAACBTeXN0ZW0uRHJhd2luZy5QcmludGluZy5UcmlTdGF0ZQIAAAAkU3lzdGVtLkRyYXdpbmcuUHJp
bnRpbmcuUGFnZVNldHRpbmdzAgAAAAgICAgiU3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuUHJpbnRSYW5n
ZQIAAAAHAgIAAAAKBgcAAAAACQcAAAAAAAAACv//Bfj///8eU3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcu
RHVwbGV4AQAAAAd2YWx1ZV9fAAgCAAAA/////wH3/////P///wAJCgAAAAAAAAAAAAAADycAAAAAAAAF
9f///yJTeXN0ZW0uRHJhd2luZy5QcmludGluZy5QcmludFJhbmdlAQAAAAd2YWx1ZV9fAAgCAAAAAAAA
AAAACgUGAAAAH1N5c3RlbS5EcmF3aW5nLlByaW50aW5nLk1hcmdpbnMEAAAABGxlZnQFcmlnaHQDdG9w
BmJvdHRvbQAAAAAICAgIAgAAAGQAAABkAAAAZAAAAGQAAAABCgAAAAEAAAAJAwAAAAHz/////P///wAK
CgoB8v////z///8ACQ8AAAABDwAAAAYAAABkAAAAZAAAAGQAAABkAAAACw==
</value>
</data>
<data name="C1Daten.PropBag" xml:space="preserve">
<value>&lt;?xml version="1.0"?&gt;&lt;Blob&gt;&lt;Styles type="C1.Win.C1TrueDBGrid.Design.ContextWrapper"&gt;&lt;Data&gt;Inactive{ForeColor:InactiveCaptionText;BackColor:InactiveCaption;}OddRow{BackColor:224, 224, 224;}Style5{}RecordSelector{AlignImage:Center;}Heading{Wrap:True;AlignVert:Center;Border:Flat,ControlDark,0, 1, 0, 1;ForeColor:ControlText;BackColor:Control;}Style6{}Group{BackColor:ControlDark;Border:None,,0, 0, 0, 0;AlignVert:Center;}Style8{}Footer{}Style13{}FilterWatermark{ForeColor:InfoText;BackColor:Info;}Style12{}HighlightRow{ForeColor:HighlightText;BackColor:Highlight;}Editor{}Style4{}FilterBar{ForeColor:Black;BackColor:255, 255, 192;}EvenRow{BackColor:White;}Style11{}Style16{}Style1{}Caption{AlignHorz:Center;}Selected{ForeColor:HighlightText;BackColor:Highlight;}Style9{}Style2{}Style14{}Normal{}Style7{}Style15{}Style10{AlignHorz:Near;}Style3{}&lt;/Data&gt;&lt;/Styles&gt;&lt;Splits&gt;&lt;C1.Win.C1TrueDBGrid.MergeView Name="" AlternatingRowStyle="True" CaptionHeight="17" ColumnCaptionHeight="17" ColumnFooterHeight="17" FilterBar="True" MarqueeStyle="DottedCellBorder" RecordSelectorWidth="16" DefRecSelWidth="16" VerticalScrollGroup="1" HorizontalScrollGroup="1"&gt;&lt;Height&gt;268&lt;/Height&gt;&lt;CaptionStyle parent="Style2" me="Style10" /&gt;&lt;EditorStyle parent="Editor" me="Style5" /&gt;&lt;EvenRowStyle parent="EvenRow" me="Style8" /&gt;&lt;FilterBarStyle parent="FilterBar" me="Style13" /&gt;&lt;FilterWatermarkStyle parent="FilterWatermark" me="Style14" /&gt;&lt;FooterStyle parent="Footer" me="Style3" /&gt;&lt;GroupStyle parent="Group" me="Style12" /&gt;&lt;HeadingStyle parent="Heading" me="Style2" /&gt;&lt;HighLightRowStyle parent="HighlightRow" me="Style7" /&gt;&lt;InactiveStyle parent="Inactive" me="Style4" /&gt;&lt;OddRowStyle parent="OddRow" me="Style9" /&gt;&lt;RecordSelectorStyle parent="RecordSelector" me="Style11" /&gt;&lt;SelectedStyle parent="Selected" me="Style6" /&gt;&lt;Style parent="Normal" me="Style1" /&gt;&lt;ClientRect&gt;0, 0, 554, 268&lt;/ClientRect&gt;&lt;BorderSide&gt;0&lt;/BorderSide&gt;&lt;/C1.Win.C1TrueDBGrid.MergeView&gt;&lt;/Splits&gt;&lt;NamedStyles&gt;&lt;Style parent="" me="Normal" /&gt;&lt;Style parent="Normal" me="Heading" /&gt;&lt;Style parent="Heading" me="Footer" /&gt;&lt;Style parent="Heading" me="Caption" /&gt;&lt;Style parent="Heading" me="Inactive" /&gt;&lt;Style parent="Normal" me="Selected" /&gt;&lt;Style parent="Normal" me="Editor" /&gt;&lt;Style parent="Normal" me="HighlightRow" /&gt;&lt;Style parent="Normal" me="EvenRow" /&gt;&lt;Style parent="Normal" me="OddRow" /&gt;&lt;Style parent="Heading" me="RecordSelector" /&gt;&lt;Style parent="Normal" me="FilterBar" /&gt;&lt;Style parent="FilterBar" me="FilterWatermark" /&gt;&lt;Style parent="Caption" me="Group" /&gt;&lt;/NamedStyles&gt;&lt;vertSplits&gt;1&lt;/vertSplits&gt;&lt;horzSplits&gt;1&lt;/horzSplits&gt;&lt;Layout&gt;None&lt;/Layout&gt;&lt;DefaultRecSelWidth&gt;16&lt;/DefaultRecSelWidth&gt;&lt;ClientArea&gt;0, 0, 554, 268&lt;/ClientArea&gt;&lt;PrintPageHeaderStyle parent="" me="Style15" /&gt;&lt;PrintPageFooterStyle parent="" me="Style16" /&gt;&lt;/Blob&gt;</value>
</data>
<metadata name="ContextMenuStripAuswertung.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>228, 17</value>
</metadata>
<metadata name="OpenFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>430, 17</value>
</metadata>
<metadata name="SaveFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>566, 17</value>
</metadata>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAICAEAAAAAADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHd3d3d3d3d3d3d3d3d3d3AAAAAAAA
AAAAAAAAAAAABw///////////////////wcP//////////////////8HD/d3d3f/d3d3f/d3d3f/Bw//
/////////////////wcP93d3d/93d3d/93d3d/8HD///////////////////Bw/3d3d3/3d3d3/3d3d3
/wcP//////////////////8HD/d3d3f/d3d3f/d3d3f/Bw///////////////////wcP93d3d/93d3d/
93d3d/8HD///////////////////Bw/3d3d3/3d3d3/3d3d3/wcP//////////////////8HD/d3d3f/
d3d3f/d3d3f/Bw///////////////////wcP93d3d/93d3d/93d3d/8HD///////////////////Bw//
/////////////////wcAAAAAAAAAAAAAAAAAAAAHDMzMzMzMzMzMzMzMzMzMBwz/zMzM/8zMzM/8zMzP
/AcM/8zMzP/MzMzP/MzMz/wHDMzMzMzMzMzMzMzMzMzMBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////4AAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf///////////////w==
</value>
</data>
</root>

View File

@@ -0,0 +1,130 @@
Imports System.IO
Imports System.Data
Imports System.Data.SqlTypes
Imports System.Data.SqlClient
''' <summary>
''' Form mit generalisiertem Domain-Table-Editor.
''' </summary>
''' <remarks>
''' <img src="SampleDomainEditor.png"/>
''' </remarks>
''' <seealso
''' cref="Vertragsverwaltung.TKB.VV.Sysadmin.DomainTable">Vertragsverwaltung.TKB.VV.Sysadmin.DomainTable</seealso>
Public Class frmDomainEditorExtTables
#Region "Deklarationen"
Dim ds As New DataSet
Dim da As SqlDataAdapter
Dim co As New SqlConnection
Dim cb As SqlCommandBuilder
Dim tablename As String
Dim SpaltenTitel As New Utils.Tabellenspalte
#End Region
#Region "Formular-Funktionen"
''' <summary>
''' Tabellenname übernehmen und Objekt DomainTable initialisieren
''' Initialisierung der Komponenten
''' </summary>
''' <param name="tblname">Tabellenname der Tabelle, welche über den Domaineditor editiert werden soll</param>
''' <remarks>Benötigt werden entsprechende Stored_Procedures, welche mit LBLLGEN_2 generiert wurden
''' pr_"Tablename"_SelectAll
''' pr_"Tablename"_Update
''' </remarks>
Public Sub New(ByVal tblname As String, ByVal Connectionstring As String)
' Domaintable = New TKB.VV.Sysadmin.DomainTable(tblname)
Me.InitializeComponent()
' Me.Text = "Domaineditor: " & tblname
Me.tablename = tblname
Me.co.ConnectionString = Connectionstring
End Sub
''' <summary>
''' Zuordnung der Daten aus Domaintable und Spaltentitel des Grids setzen
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub frmDomainEditor_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
da = New SqlDataAdapter("Select * from " & Me.tablename, Me.co)
cb = New SqlCommandBuilder(da)
da.Fill(ds, "ExtTable")
Me.C1Daten.DataSource = ds.Tables(0)
Me.C1Daten.DataMember = ds.Tables(0).TableName
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
''' <summary>
''' Schliessen des Formulars
''' </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 BeendenToolStripMenuItem.Click
Me.Close()
End Sub
''' <summary>
''' Ruft BeendetnToolStipMenuItem_Click auf
''' </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
BeendenToolStripMenuItem_Click(sender, e)
End Sub
''' <summary>
''' Prüfung auf allfällige Daten-Changes. Wurden Daten verändert, kann der User entscheiden, ob gespeichert, nichtgespeichert oder
''' das Formular nicht gespeichert werden soll.
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub frmDomainEditor_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
If Me.ds.HasChanges Then
Dim msg As New Utils.MyMessage
Dim msgboxres As MsgBoxResult
msgboxres = msg.Show_MessageYesNoCancel(3)
If msgboxres = MsgBoxResult.Cancel Then
e.Cancel = True
Exit Sub
End If
If msgboxres = MsgBoxResult.Yes Then
Try
da.Update(ds, "ExtTable")
Catch ex As Exception
MsgBox(ex.Message)
End Try
End If
End If
Try
Me.co.Close()
da.Dispose()
co.Dispose()
cb.Dispose()
ds.Dispose()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
''' <summary>
''' Sichern der Daten
''' </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
Try
da.Update(ds, "ExtTable")
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
#End Region
End Class

View File

@@ -0,0 +1,50 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class frmFormSelector
Inherits System.Windows.Forms.Form
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Wird vom Windows Form-Designer benötigt.
Private components As System.ComponentModel.IContainer
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmFormSelector))
Me.ListForms = New System.Windows.Forms.ListBox
Me.SuspendLayout()
'
'ListForms
'
Me.ListForms.FormattingEnabled = True
Me.ListForms.Location = New System.Drawing.Point(28, 36)
Me.ListForms.Name = "ListForms"
Me.ListForms.Size = New System.Drawing.Size(259, 199)
Me.ListForms.TabIndex = 0
'
'frmFormSelector
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(315, 322)
Me.Controls.Add(Me.ListForms)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.Name = "frmFormSelector"
Me.Text = "Form-Selector"
Me.ResumeLayout(False)
End Sub
Friend WithEvents ListForms As System.Windows.Forms.ListBox
End Class

View File

@@ -0,0 +1,138 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAICAEAAAAAADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2
ZnAAAAAABmZgAAAAAAAHh+6HAAAAAHjuhwAAAAAABojuhwAAAAB47odgAAAAAAbuiOYAAAAAbojuYAAA
AAAGZojmAAAAAGaI7mAAAAAAAADuhwAAAAAAbodgAAAAAAAAbocAAAAAAGaHYAAAAAAAAADmAAAAAAAA
bmAAAAAAAAAAZgAAAAAAAGZgAAAAAHAAAAAAAAAAAAAGZwAAAABwAAAAAAAAAAAAAAcAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////
///A/wP/wP8D/wA8AP8APAD/ADwA/wA8AP8wPMD/MDzA/zw88P88PPD/AMMA/wDDAP/P//z8z//8/PPz
/zzz8/88/PP/zPzz/8z/M//z/zP/8//P////z////////////////////////w==
</value>
</data>
</root>

View File

@@ -0,0 +1,11 @@
Public Class frmFormSelector
Private Sub ListForms_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListForms.DoubleClick
Me.DialogResult = Windows.Forms.DialogResult.OK
Me.Close()
End Sub
Private Sub frmFormSelector_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
End Class

View File

@@ -0,0 +1,183 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class frmSysadminMenu
Inherits System.Windows.Forms.Form
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Wird vom Windows Form-Designer benötigt.
Private components As System.ComponentModel.IContainer
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmSysadminMenu))
Me.MenuStrip1 = New System.Windows.Forms.MenuStrip()
Me.DateiToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.BeendenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.SpaltentitelGenerierenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.ToolStrip1 = New System.Windows.Forms.ToolStrip()
Me.TSBtnQuit = New System.Windows.Forms.ToolStripButton()
Me.SysMenuTree = New System.Windows.Forms.TreeView()
Me.ImageList1 = New System.Windows.Forms.ImageList(Me.components)
Me.ContextMenu1 = New System.Windows.Forms.ContextMenu()
Me.MnuNeuerKnoten = New System.Windows.Forms.MenuItem()
Me.MnuKnotenLoeschen = New System.Windows.Forms.MenuItem()
Me.MenuKnotenRename = New System.Windows.Forms.MenuItem()
Me.MenuItem4 = New System.Windows.Forms.MenuItem()
Me.MnuSave = New System.Windows.Forms.MenuItem()
Me.MenuStrip1.SuspendLayout()
Me.ToolStrip1.SuspendLayout()
Me.SuspendLayout()
'
'MenuStrip1
'
Me.MenuStrip1.AllowMerge = False
Me.MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.DateiToolStripMenuItem, Me.SpaltentitelGenerierenToolStripMenuItem})
Me.MenuStrip1.Location = New System.Drawing.Point(0, 0)
Me.MenuStrip1.Name = "MenuStrip1"
Me.MenuStrip1.Size = New System.Drawing.Size(299, 24)
Me.MenuStrip1.TabIndex = 0
Me.MenuStrip1.Text = "MenuStrip1"
'
'DateiToolStripMenuItem
'
Me.DateiToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BeendenToolStripMenuItem})
Me.DateiToolStripMenuItem.Name = "DateiToolStripMenuItem"
Me.DateiToolStripMenuItem.Size = New System.Drawing.Size(46, 20)
Me.DateiToolStripMenuItem.Text = "&Datei"
'
'BeendenToolStripMenuItem
'
Me.BeendenToolStripMenuItem.Name = "BeendenToolStripMenuItem"
Me.BeendenToolStripMenuItem.Size = New System.Drawing.Size(152, 22)
Me.BeendenToolStripMenuItem.Text = "&Beenden"
'
'SpaltentitelGenerierenToolStripMenuItem
'
Me.SpaltentitelGenerierenToolStripMenuItem.Name = "SpaltentitelGenerierenToolStripMenuItem"
Me.SpaltentitelGenerierenToolStripMenuItem.Size = New System.Drawing.Size(137, 20)
Me.SpaltentitelGenerierenToolStripMenuItem.Text = "&Spaltentitel generieren"
'
'ToolStrip1
'
Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TSBtnQuit})
Me.ToolStrip1.Location = New System.Drawing.Point(0, 24)
Me.ToolStrip1.Name = "ToolStrip1"
Me.ToolStrip1.Size = New System.Drawing.Size(299, 25)
Me.ToolStrip1.TabIndex = 1
Me.ToolStrip1.Text = "ToolStrip1"
'
'TSBtnQuit
'
Me.TSBtnQuit.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
Me.TSBtnQuit.Image = CType(resources.GetObject("TSBtnQuit.Image"), System.Drawing.Image)
Me.TSBtnQuit.ImageTransparentColor = System.Drawing.Color.Magenta
Me.TSBtnQuit.Name = "TSBtnQuit"
Me.TSBtnQuit.Size = New System.Drawing.Size(23, 22)
Me.TSBtnQuit.Text = "ToolStripButton1"
Me.TSBtnQuit.ToolTipText = "Fenster schliessen"
'
'SysMenuTree
'
Me.SysMenuTree.AllowDrop = True
Me.SysMenuTree.Dock = System.Windows.Forms.DockStyle.Fill
Me.SysMenuTree.ImageIndex = 0
Me.SysMenuTree.ImageList = Me.ImageList1
Me.SysMenuTree.Indent = 19
Me.SysMenuTree.ItemHeight = 16
Me.SysMenuTree.Location = New System.Drawing.Point(0, 49)
Me.SysMenuTree.Name = "SysMenuTree"
Me.SysMenuTree.SelectedImageIndex = 0
Me.SysMenuTree.Size = New System.Drawing.Size(299, 521)
Me.SysMenuTree.TabIndex = 2
'
'ImageList1
'
Me.ImageList1.ImageStream = CType(resources.GetObject("ImageList1.ImageStream"), System.Windows.Forms.ImageListStreamer)
Me.ImageList1.TransparentColor = System.Drawing.Color.Transparent
Me.ImageList1.Images.SetKeyName(0, "")
Me.ImageList1.Images.SetKeyName(1, "")
Me.ImageList1.Images.SetKeyName(2, "")
Me.ImageList1.Images.SetKeyName(3, "")
Me.ImageList1.Images.SetKeyName(4, "")
Me.ImageList1.Images.SetKeyName(5, "Kette3.ico")
'
'ContextMenu1
'
Me.ContextMenu1.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.MnuNeuerKnoten, Me.MnuKnotenLoeschen, Me.MenuKnotenRename, Me.MenuItem4, Me.MnuSave})
'
'MnuNeuerKnoten
'
Me.MnuNeuerKnoten.Index = 0
Me.MnuNeuerKnoten.Text = "Neuer Eintrag "
'
'MnuKnotenLoeschen
'
Me.MnuKnotenLoeschen.Index = 1
Me.MnuKnotenLoeschen.Text = "Eintrag löschen"
'
'MenuKnotenRename
'
Me.MenuKnotenRename.Index = 2
Me.MenuKnotenRename.Text = "Eintrag umbenennen"
'
'MenuItem4
'
Me.MenuItem4.Index = 3
Me.MenuItem4.Text = "-"
'
'MnuSave
'
Me.MnuSave.Index = 4
Me.MnuSave.Text = "Menu Speichern"
'
'frmSysadminMenu
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(299, 570)
Me.Controls.Add(Me.SysMenuTree)
Me.Controls.Add(Me.ToolStrip1)
Me.Controls.Add(Me.MenuStrip1)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.MainMenuStrip = Me.MenuStrip1
Me.MaximizeBox = False
Me.MinimizeBox = False
Me.Name = "frmSysadminMenu"
Me.Text = "FrmSysadminMenu"
Me.MenuStrip1.ResumeLayout(False)
Me.MenuStrip1.PerformLayout()
Me.ToolStrip1.ResumeLayout(False)
Me.ToolStrip1.PerformLayout()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents MenuStrip1 As System.Windows.Forms.MenuStrip
Friend WithEvents DateiToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents BeendenToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents ToolStrip1 As System.Windows.Forms.ToolStrip
Friend WithEvents TSBtnQuit As System.Windows.Forms.ToolStripButton
Friend WithEvents SysMenuTree As System.Windows.Forms.TreeView
Friend WithEvents ImageList1 As System.Windows.Forms.ImageList
Friend WithEvents ContextMenu1 As System.Windows.Forms.ContextMenu
Friend WithEvents MnuNeuerKnoten As System.Windows.Forms.MenuItem
Friend WithEvents MnuKnotenLoeschen As System.Windows.Forms.MenuItem
Friend WithEvents MenuKnotenRename As System.Windows.Forms.MenuItem
Friend WithEvents MenuItem4 As System.Windows.Forms.MenuItem
Friend WithEvents MnuSave As System.Windows.Forms.MenuItem
Friend WithEvents SpaltentitelGenerierenToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
End Class

View File

@@ -0,0 +1,580 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="MenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="ToolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>125, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="TSBtnQuit.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACkSURBVDhPlZOBDoAgCET9dD7NPyNPgpAIzY21oTzPg1rL
F4/0aaQEJqJXAIo8Vu9dL9gDYiGRgG6VCwBJLDvgbxRVsodvBPiEASDXF3mIB3AbBzPjBLDeHBVIcRbj
KScKuMGQElArmKZNSNJ7VYC2Ib48EIjE0gX1QPerLigkATytqxT4gQht3HsQx9H8+OpCeHL+R+FQnIPT
QiXaHPwtNMCu8ALckGXYKNsEDQAAAABJRU5ErkJggg==
</value>
</data>
<metadata name="ImageList1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>227, 17</value>
</metadata>
<data name="ImageList1.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAQ
DAAAAk1TRnQBSQFMAgEBBgEAASQBAAEkAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAASADAAEBAQABCAYAAQgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD//8ARAAF+QIABfwzAAH5
BPQB/wH5AfwB/wT0AfwDAAUHAgAFByIAAfkC9AH5CAAB/AL0AfwBAAIHCgACByEAAfkB9AH5AgAB/wT0
Af8CAAH8AfQB/AEAAQcDAAYHAwABByEAAfkC9AH5CAAB/AL0AfwBAAIHCgACByIAAfkE9AH/AfkB/AH/
BPQB/AMABQcCAAUHJAAF+QIABfz/AHkAAQMB/wsAAf8eAAHsA/8BBwL/AQcC/wEHAf8GAAHsAQMB7AH/
CwAB+wEAAfscAAHsA/8BBwL/AQcC/wEHAf8EAAEDAewBAwHsAQMB/wsAAf8BAAH/AQcB+w4AAf8B+woA
AewLBwMAAQMB7AEDAewBAwHsAf8BAAHsCQAB+wEAAfsBBwH/AQcB+woAAf8BAAH7Af8B+wH/CAAB7AH/
AuwBBwLsAQcC7AEHAf8DAAHsAQMB7AEDAewBAwH/AQAB7AkAAf8BAAL/AfsBBwH/AQcB+wcAAfsCAAH/
AfsB/wH7Af8B+wYAAewB/wLsAQcC7AEHAuwBBwH/AwABAwHsAQMCAAHsAf8BAAHsCQAB+wEAAfsC/wEH
AfsBBwH/BgAB/wEAAf8BAAH7Af8B+wH/AfsB/wH7Af8EAAHsCwcDAAHsAQMB7AIHAQMB/wEAAewBAAEG
BwAB/wEAAv8B+wEHAf8BBwH7BQAB+wEAAv8BAAH/AfsB/wH7Af8B+wH/AfsB/wMAAewB/wLsAQcC7AEH
AuwBBwH/AwABAwHsAQMB7AEDAewB/wIAAQYF/gMAAfsBAAH7A/8B+wEHAf8GAAP/AgAB/wH7Af8B+wH/
AfsB/wH7AwAB7AH/AuwBBwLsAQcC7AEHAf8DAAHsAQMB7AEDAewBAwH/AQABbQb+AwAB/wEAAv8B+wL/
AQcB+wgAA/8CAAH7Af8B+wH/AfsB/wMAAewLBwMAAQMB7AEDAewBAwHsAf8BAAHsAW0B/gRtAwAB+wH/
AgAC/wH7AQcB/wYAAfsB/wIAAv8BAAH/AfsB/wH7Af8B+wMAAewB/wLsAQcC7AEHAuwBBwH/AwAB7AED
AewBAwHsAQMB/wEAAewBAAJtBwAB+wH/AfsCAAH/AQcB+wcAAfsB/wH7AQAC/wIAAfsB/wH7Af8DAAHs
Af8C7AEHAuwBBwLsAQcB/wMAAQMB7AEDAewBBwH/AewBAAHsAgABbQkAAf8B+wH/AgAB/wkAAf8B+wEA
Av8DAAH/AfsDAAHsCAcGAAHsAQMBBwH/AewBAAPsDAAB+wH/AfsB/wH7DwAB/wH7BgAB7Aj7AewB/wHs
AwABBwH/AewBAAXsDQAB+wH/GQAB7Aj7Auw1AArsBAABQgFNAT4HAAE+AwABKAMAAUADAAEgAwABAQEA
AQEGAAEBFgAD/wEABP8EAAT/BAAE/wQABP8EAAT/BAABwQGDAcEBgwQAAYABAQGAAQEMAAEQAQgBEAEI
DAABgAEBAYABAQQAAcEBgwHBAYMEAAT/BAAE/wQABP8EAAT/BAAB/AF/AecD/wHAAQEB8AF/AcMD/wHA
AQEBwAF/AcAB/wH4Af8BwAEBAQABHwHAAT8B8AE/AcABAQEAAR8BwAEPAeABDwHAAQEBAAEXAcABBwHA
AQMBwAEBAQABBwHAAQcBgAEAAcABAQIAAcABBwIAAcABAQIAAcABBwIAAcABAQIAAcABBwGAAQABwAEB
AgABwAEHAYABAAHAAQEBAAEHAcABBwHAAQABwAEBAQABFwHwAQcB4AEAAcABAQEAAR8B+AEHAfkBAAHA
AQMBAAEfAfgBBwH/Ac8BwAEHAQABHwH+AX8C/wHAAQ8L
</value>
</data>
<metadata name="ContextMenu1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>354, 17</value>
</metadata>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAYAMDAAAAEACACoDgAAZgAAACAgAAABAAgAqAgAAA4PAAAQEAAAAQAIAGgFAAC2FwAAMDAAAAEA
IACoJQAAHh0AACAgAAABACAAqBAAAMZCAAAQEAAAAQAgAGgEAABuUwAAKAAAADAAAABgAAAAAQAIAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNZ2cA0WtrANRubgDWcHAA2XNzANt1dQDdd3cA4Hp6AOJ8
fADlf38A54GBAOmDgwDshoYA5oSDAO6IiADJc3MA8IqKAPKMjADriYgA9Y+PAPeRkQD5k5MA2YCAAMt4
eAD8lpYA/piYAM17ewD/mpoA/5ycAP+engDzlpYA/6CgAKlqagD/oqIA5pKSAI9cXAD/paUA0IeHAP+n
pwD/qakAmGVlAP+rqwD/rq4AxYaGAP+wsADnn58ArHd3AP+ysgD/tLQA6KSkAP+2tgD9tbQA+7SzAH5a
WgD/uLgAs4KCAKZ5eQD/u7sAq35+AP+9vQCYcXEA/7+/AP/BwQCziYkA/8TEAP/GxgDRoqIAgmVlANys
rACKbGwAt5CQAP/KygDEoKAA3ba2ALmamgBnVlYAdGNjAFxUVACwoaEAy7y8AFNNTQCemZkAqKSkAKGe
ngBqaWkA03FvANl5dwDlg4EA3H58AOmHhQDriYcA9JKQAPOSkADdj4wAtHVzAOucmQD0pqMA76WiAMCE
gwD2trQA56upAPy/vgD7wb8AzHFtANJ6dgDXfnoA24R/AOGHgwDiiYUAzH97APWalgDrlZAA86qmAPSt
qgD3sa4AuY2LAPW9ugDmtrQAzq2rAIt2dQB7a2oAloOCAM9+dwDlkIoA752XAOqjnQDzubUAvJWSALCQ
jQDajoYA7bu1AOSckwCojIgAxK6rAMiDeADMiX0A0o2CAN6ZjgDXlIkA3ZyQAOKroQDptKsA1pqNAN2l
mQC3j4cAwqKbAK+TjQDJq6UAya6pANKVhwDBmY8A0ZmKANSejwDbrJ8Ay6GVALmbkwDGp54Ay5eHAM+b
iwDRn48A1aSVALORhgDDn5QAvpuQAL+spgDGlIIAzZ6NANSqnADHppoAxKOYAMGhlgC+oJUAyaqfAMqs
ogDKrqQAyJyKAM2ikADPp5cAyaeZAMWjlgDJqJsArKCbAK+qqADFmYYAyZ+MANWyowDEpZcAza2fAM2w
owCompQAxZ2JAMmkkQDJqJgAza6eAKOKfgDPsaIAz7KkAJWRjwCWlJMAx6GNAMmjjwDHoo4AyKaTAMqp
lgDIp5UAza2bAMytnADLrJsAxqiXANCxoADQsqEA0LKiAM+xoQC4qJ8Awp+JAMShjADDoIsAw6GMAMak
jwDEoo0AxaOPAMalkADHppIAyqmVAMmolADLq5cAy6uYAMysmQDNrpsAza6cAM+wngDOr50A0bSiANO2
pQB7cWoAmJiYAJSUlACSkpIAjo6OAIyMjACAgIAAfHx8AHp6egB3d3cAdHR0AG9vbwBjY2MAXl5eAFxc
XABbW1sAWFhYAFVVVQBTU1MATExMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVPX9+FXx7wAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7+/17u++w3ZKd0t6Ve8AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAMesk3ZJ+5Po2UhISEhIee8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAC3rKh1QkJCeYXOwEJCQkJChe8A7+/08e8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKzR10JCQkJCdqPi
skJCQkJCgfW2w6RFTPfvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJLn3INBQUFBQYPhmkFBQUFBQ3nQsmdB
QXj77QAAAAAAAAAAAAAAAAAAAAAAAAAAAKzq35o/Pz8/Pz9mPz8/Pz8/drPAfz8/Pz9H+QAAAAAAAAAA
AAAAAAAAAAAAAKzs8ay14sk+Pj4+Pj4+Pj4+Pj4+Pj51Pj4+Pj4+eAAAAAAAAAAAAAAAAAAAAAAArKyi
Q03D6NpkPDw8PDw8PDw8PDw8PDw8PDw8PDxk7wAAAAAAAAAAAAAAAAAAAACswslkOjpluslkOjo6Ojo6
Ojo6Ojo6Ojo6Ojo6OjqA7wAAAAAAAAAAAAAAAAAAAACs4I03Nzc3N2Q3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3
Nzd4AAAAAAAAAAAAAAAAAAAAAIbSyjUzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzP+7wDv7/IAAAAA
AAAAAAAAAKvMoTExMTExMTExMTExMTE0jo6omo1zMTExMTExMTE7Tnh0MkT1AAAAAAAAAAAAAMXOynIw
MDAwMDAwMDAwMEoAAAAArdDLoXIwMDAwMDAwczAwMDL97wAAAAAAAAAAAAC148hyLS0tLS0tLS1yUAAA
AAAAAACp5d2QLS0tLS0tLS0tLS1G9QAAAAAAAAAAAAAAs+PIcSsrKysrKytPAAAAAAAAAAAAndLeoSsr
KysrKysrKysu+wAAAAAAAAAAAAAAANXMvyoqKioqKkAAAAAAAAAAAAAAAJ3S3ZAqKioqKioqKioqegAA
AAAAAAAAAAAAU5zjoCgoKCgoYVIAAAAAAAAAAAAAAACd5dliKCgoKCgoKChiAAAAAAAAAAAAxus7OX5h
YScnJycnOAAAAAAAAAAAAAAAAAAAxOCnJycnJycnJzIAAAAAAAAAAAAAztclJSUlJSUlJSUleQAAAAAA
AAAAAAAAAAAAgOfcfiUlJSUlYwAAAAAAAAAAAACR5LkiIiIiIiIiIiIi9gAAAAAAAAAAAAAAAAAAANXh
mSIiIiIiRO4AAAAAAAAAAACR46AgICAgICAgICBe8wAAAAAAAAAAAAAAAAAAAKrO1yAgICAgL/727AAA
AAAAAACR46AeHh4eHh4eHh4m9AAAAAAAAAAAAAAAAAAAAJXS3H0eHh4eHiMvTPz0AAAAAACR5NcdHR0d
HR0dHR0m9wAAAAAAAAAAAAAAAAAAAADp3oQdHR0dHR0dHR/7AAAAAACk5tyEbxwcHBwcHBwf+wAAAAAA
AAAAAAAAAAAAAADq34ocHBwcHBwcHBz7AAAAAAAApaXBzLGMbxoaGhoaTgAAAAAAAAAAAAAAAAAAAADq
y4oaGhoaGhoaGhr7AAAAAAAAAAAApbPgnxkZGRkZRPAAAAAAAAAAAAAAAAAAAADq3ooZGRkZGRkZGRn6
AAAAAAAAAAAAAKTksBYWFhYWX/gAAAAAAAAAAAAAAAAAAADp23AWFhYWFhYWFhbyAAAAAAAAAAAAU6un
XBUVFRUVFVHsAAAAAAAAAAAAAAAAAADn2V0VFRUVFRUVXWAAAAAAAAAAAAC+448UFBQUFBQUFCH4AAAA
AAAAAAAAAAAAAKvjmBQUFBQUY9YAAAAAAAAAAAAAAKXNixISEhISEhISEhJM9AAAAAAAAAAAAAAAANDb
fBISEhISNvMAAAAAAAAAAAAAperflhEREREREREREREXUfEAAAAAAAAAAAAAnOSYERERERERG/7tAAAA
AAAAAAAAAKPjvxMPDw8PDw8PDw8PG1HyAAAAAAAAAAClz6dbDw8PDw8PDyH97QAAAAAAAAAAAJXS24IN
DQ0NDQ0NDQ0NDRhO+AAAAAAAALe7p1oNDQ0NDQ0NDQ0h/QAAAAAAAAAAAAC8zLgMDAwMbWwMDAwMDAwM
KU779e7seqSLDgwMDAwMDAwMDAwMIQAAAAAAAAAAAACU0tuJI6Wb4r9YCwsLCwsLCwsQKSlfXgsLCwsL
CwsLCwsLCwsLPQAAAAAAAAAAAAAA0tIjAACl0txrCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpZVAAA
AAAAAAAAAAAAAAAAAACszrgJCQkJCQkJCQkJCQkJCQkJCQkJCQmCnmsJCQkvAAAAAAAAAAAAAAAAAAAA
AAC14YkICAgICAgICAgICAgICAgICAgICAiXnt6uWRcAAAAAAAAAAAAAAAAAAAAAAKXT3WoHBwcHBwcH
BwcHBwcHBwcHBwcHBwc2eq6urgAAAAAAAAAAAAAAAAAAAAAAAJLOuAYGBgYGBleIVwYGBgYGBgYGBgYG
BgYh+AAAAAAAAAAAAAAAAAAAAAAAAAAAAKPkv2kFBQUFBajLiAUFBQUFBYmIBQUFBQUFTgAAAAAAAAAA
AAAAAAAAAAAAAAAAAAC15L97BAQEO7TMpgQEBAQEauXZaQQEBAQERAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAArujdiFYsAKPkuAMDAwMDENTMpgMDAwMDbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHe9vb0AAJLl
1wICAgICJIHT3ocCAmhuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK/n2GgCAgICKYGdztlu
bgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK/T24doAQEBgQAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACvr6+vr6+vAAAAAAAAAAAAAAAAAAAAAAAAAAD///wH//8AAP//
AAP//wAA//wAA///AAD/8AACD/8AAP/gAAAH/wAA/+AAAAP/AAD/4AAAA/8AAP8AAAAD/wAA/gAAAAP/
AAD8AAAAA/8AAPwAAAAH/wAA+AAAAAI/AAD4AAAAAB8AAPgAB4AADwAA/AAP4AAPAAD+AB/wAA8AAP8A
P/gADwAA/gA//AAfAADwAH/+AD8AAPAAf/4AfwAA4AB//wA/AADgAH//AA8AAOAAf/8AAwAA4AB//4AD
AADgAH//gAMAAPAAf/+AAwAA/gA//4ADAAD/AD//gAMAAP4AH/+ABwAA/AAf/wA/AAD4AA//AD8AAPAA
B/4AHwAA+AAD/AAPAAD4AAH4AA8AAPwAAAAADwAA/AAAAAAPAAD+MAAAAA8AAP/wAAAAHwAA//AAAAA/
AAD/4AAAAH8AAP/gAAAD/wAA/+AAAAP/AAD/8AAAA/8AAP/4EAAD/wAA//wwAAf/AAD///AAH/8AAP//
8Af//wAA///4D///AAAoAAAAIAAAAEAAAAABAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9s
bQDRZmcA2W9wANdubwDTbG0A13BxANtzdADfdncA43l6AOV9fgDmfn8A6oKDAO6FhgD3i40A9oyNAPWN
jgC6bG0A/JOUAPuTlAD9nZ4A/6GiAP+lpgD/tbYA/7m6AP+6uwD/vb4A/8PEAP/FxgDVa2sA2HFxANVx
cADgd3cA2nR0AN54eADie3sA4Xt7AOWAfwDlf38A439+AOmDgwDlgIAA7oaGAOWCgQDjgIAA3Hx8AOyG
hgDphIQA8ImJANt+fQDwiooA7YqJAOeGhQDIdHMA9I6OAOuIiAD4kZEA/JSUAPuUlAD3kZEA9pOSAP2Y
lwD+mJgA6oyMAP+bmwD/np4A/6GhALh0dAD/paUArG9vAP+npwCfaGgA/6ioAP+srAD+q6sA+qqpAP+u
rgCvd3cA/6+vANuWlgDChoYA/rCwAO2kpAD/srIA76moAIVdXQD/tLQA9q2tAP+1tQD/trYAoXNzAI9n
ZwD/ubkA1pubAK9/fwD/vLwApXp6AOWrqwDVn58A/8DAAP2+vgCGZWUAfl9fAP/DwwCogIAAtYuLAP3E
xAD/x8cAjG1tAHRbWwD/ysoA/83NAJN3dwB5ZGQAiHFxAN25uQCrkJAAdGVlAF5SUgCjkpIAqJmZAGxn
ZwBeWloAioWFAIOAgABnZmYAZmVlAFZVVQClpKQAzmxqANJvbQDYdXMA2Hh2AOWGgwDskY4A+52aAPaa
lwDqlZIA4JWSAPynpQDRjYsA252cAPazsQD4t7UAyJWUAP2+vQD+wL8A3KqpAPnFwwDgtLMArI2MANF5
dADbhH8A44uGAPOWkgDyqqYA+K+sAPmzsADVgXsA3IuFAOqinADuqaMA7rizAPK9uQCIbmwAinx7AG9k
YwDgk4sA6JuTAPCzrQCNengA042DAMqGfQDRk4oAt5uXAJqTkgDSkIUAy4yCAOWtpADIpJ4A5rasAJR/
ewDFrKcAuqypAN+rngC4kokAxqmiANihkgCXhH8AyZSEANSgkADMmooA1qOUAMKnnwCpmZQAyZiHANGf
jgDRoZEAz6KSAMegkgDUq5wA0LSqAKeUjQC+mowAzaueALOWiwDGp5oAyKyhAMqvpACjjYQAyqCNAM6l
kgDOqZgAwJ6PAMirngC+pJkAzaeUANCrmADLp5UAwqKSAMamlgCfhnkAs5iLAMClmADEqp0AZGJhAM6p
lQDEpJIAyq6eAM6tmQDLrZoAyauZAMeqmQDKrZwAwaaWAMOrnQDJqpYAy6+dAMGmkgDHrJgAwaqZAJKR
jwCbm5sAmJiYAJSUlACTk5MAjIyMAIaGhgCEhIQAfX19AGpqagBlZWUAYGBgAFxcXABYWFgAAAAAAAAA
AAAAAAAAAAAAAAAA8/P49vMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPN8+fPKrnS8efMAAAAAAAAAAAAA
AAAAAAAAAAAAAPO8s5WmzdSUbm619fPzAAAAAAAAAAAAAAAAAAAAAAAA3KNra5PcyGprb3B5vJZ1+gAA
AAAAAAAAAAAAAAAAANflohxnG7S0G2drkN20G6JyfQAAAAAAAAAAAAAAAAB7qu64Z2NjY2NjY2OSopFj
Y2SlAAAAAAAAAAAAAAAA3pNp3MgZX19fX19fX18aGl9fYa8AAAAAAAAAAAAAAOOyGBmPjlxcXFwYGBkY
XFxcXFxp9gAAAAAAAAAAAAC62Z1ZWFlZWFhZVo6pqZ1ZF1hYWGh6pXB+AAAAAAAAAM/Zm1ZTU1NTU1dz
AADJ1LicU1NTV41UUXH4AAAAAAAAAM7Ym05MTExStwAAAAAA0NihTkxMTE5MkH0AAAAAAAAAAODTS0lJ
SpYAAAAAAAAA5NibSUlJSUlLeAAAAAAAAK8BubiLSEhPgAAAAAAAAAAA6MBGSEhISGIAAAAAAAAAxUYW
FkRERGAAAAAAAAAAAADQ7KAWRERegAAAAAAAANvAQkJCQkJCcQAAAAAAAAAAAADmuxVCQmb79QAAAAAA
1btBQUFBQUF1AAAAAAAAAAAAANbTFEFBiU1lfQAAAADOxYdAQEBAQG0AAAAAAAAAAAAAuuKIQEBAQED+
AAAAAAAAzMCoPT4+W/YAAAAAAAAAAAC22Zo+Pj4+Pv0AAAAAAAAA19OaOTpD+wAAAAAAAAAAAMHiPDo6
OhIT+AAAAAAAALfLiTs7Oz929AAAAAAAAAAA3744OziGiqAAAAAAAAAAx4YPNjY2NkX99AAAAAAAAADv
pxA2DqTxAAAAAAAAAOjEMDIyMjIyN1X89AAAAAAArsUzMjIwR3/yAAAAAAAAuuyZDSoNKi4uL1V/9wAA
AMLGmSouLi4qR/wAAAAAAAAA560MNKefDCgoKBFtf+G1rYUMKCgoKCgrbAAAAAAAAADk5OTk8L8nJiYm
KSwtMSsLCyYmJgoLJTF3AAAAAAAAAAAAAOTqsAkkJCQkJCQjIyQkJAmfXZgjUAAAAAAAAAAAAAAA5Nqe
CCIiCAgiIiIiCCIiIEPRXV0AAAAAAAAAAAAAAADP0oMHISGrniEhISGEISEhEXoAAAAAAAAAAAAAAAAA
AOTmsR8DQ+29BgYEntKXAwYepAAAAAAAAAAAAAAAAAAAAOTkv4wA68OCBR018L0FBTVdAAAAAAAAAAAA
AAAAAAAAAAAAAADg0oECAlq35qxdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOTpsbGtAAAAAAAAAAAAAAAA
AAD//B///8AP//8AA///AAD//gAAf/wAAH/4AAB/8AAAf+AAAA/gAwAH8AfAB/gP4AfgD/AP4B/wD8Af
+AfAH/gDwB/4A/AP+AP4D/gD8Af4B/AD+A/gAfAH4ADgB/AAAAfwAAAH/gAAD/4AAB/+AAB//gAAf/8I
AH//+AH///g//ygAAAAQAAAAIAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzJmZAMSU
lADFlpYAw5SUAMycnAC7j48Auo6OALKIiADOnp4Av5OTALeNjQCziooAsomJALqQkADNoKAAu5KSAKuF
hQDQo6MAo4CAALWPjwCae3sAkXR0ANasrACYenoAk3Z2AI9zcwCnh4cAiG5uANOsrADOqKgAiG9vANCq
qgCJcHAAtZWVAMWlpQCzlpYAknt7AKeNjQCxmJgAppCQALegoACkkZEAuKSkAJyMjACYiIgAZ2FhAFJO
TgBjX18AYl5eAJ+fnwCYmJgAkZGRAImJiQCDg4MAgoKCAICAgAB5eXkAc3NzAG5ubgBtbW0AZ2dnAGVl
ZQBkZGQAX19fAF5eXgBWVlYAU1NTAE9PTwBNTU0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ADVDNAAAAAAAAAAAAAAtQCIBGT0sQTgAAAAAAAAPAR8MAQ0WAQY7AAAAAAA5EAEBAQEBAQEIRDw5AAAF
Cw0BAQEgAQEBAwgEMAAAAQEBASkAAAAAAQEBASoAACQBASUAAAAAAAABASE+Nx4OAQQ6AAAAAAAACQEN
E0MBAQERPwAAAAAAAB4BAQEzHh4BAkUyAAAAAAABAREmAAAjAQEcQjMAAAAnAQEVMQAAAQEBARovQi4Y
AQEBASgAABceDwEBAQEBAQEHGwEAAAAAABIBAQEBAQEBCjYAAAAAAAAXAR4dARQrAQEAAAAAAAAAAAAA
FwEBAAAAAAAAAP4/ALrwB1lY4AdYWMABjqmAAVkXg8FYaIfgcH4H4AAAB+AAzwPhVlOBwVNTgAEAAIAD
uJzgB1NX4A9Rcfx/AAAoAAAAMAAAAGAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA
AAkAAAAPAAAAFQAAABAAAAADAAAAKgAAAGAAAACLAAAArAAAAKEAAACUAAAAfwAAAF0AAAAYAAAAAQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAMAAAAQAAAAJwAAAEwAAABxAAAAiwAAAG5ZRkJDhHFlr5Z8bOTnubT72a6u882kpO6xjo7lhWpq1hkU
FKYAAAA9AAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAADQAAADEdGRd3ZFRLxKODfeHjtLL2v5eX6gAAAKebeXLMzq+d/8Ogi///ysr//8rK///K
yv//ysr//8rK/1JBQcYAAABbAAAADAAAAAkAAAAPAAAAEwAAABMAAAAEAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAKOS0qaZF3bNjTq57/87+7///Hx///x8f//8fH/2JMTNGlhn3uza2b/8mk
kf//x8f//8fH///Hx///x8f//8fH/5Z1ddoAAABrAAAAHwAAAEsAAABwAAAAiAAAAH0AAAA9AAAADQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACjfnd7xKWU98Ofiv//xsb//8bG///Gxv//xsb//8bG/+ay
svfFn5X/y6uX/9Cnl///xsb//8bG///Gxv//xsb//8bG/6N+fuAAAACLemdfoJJ6bNy6lInx2qio8j0v
L8gAAACdAAAAVAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0jIXRz7Ce/8Sijf/vubT//8TE///E
xP//xMT//8TE///ExP/rvbb/yaiU/9ytof//xMT//8TE///ExP//xMT//8TE/82enu5XREDMy6yb/86n
lv/7wb///8TE///ExP9yV1fXAAAApwAAAGsAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAADQAAABKSZ2V80rWk/8em
kv/brKD//8HB///Bwf//wcH//8HB///Bwf//wcH//L++///Bwf//wcH//8HB///Bwf//wcH//8HB/+au
rvfMppr/yaWS//O5tf//wcH//8HB///Bwf//wcH/sIWF5wAAAKMAAAAwAAAABgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAABDAAAAZwAA
AH8kGBiIyamb/8url//Joo///7+///+/v///v7///7+///+/v///v7///7+///+/v///v7///7+///+/
v///v7///7+///+/v///v7//97q4//+/v///v7///7+///+/v///v7///7+//1xFRbIAAAAcAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXNc
VoOIc2bUrYh87M6Zme1QOzvLoH938M6vnf/DoYz/87ay//+9vf//vb3//729//+9vf//vb3//729//+9
vf//vb3//729//+9vf//vb3//729//+9vf//vb3//729//+9vf//vb3//729//+9vf//vb3/9LW1+gAA
AHEAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAABfFlXa82unv/Io5D/97a0//+7u///u7v/56up/9Wyo//Io4//97a0//+7u///u7v//7u7//+7
u///u7v//7u7//+7u///u7v//7u7//+7u///u7v//7u7//+7u///u7v//7u7//+7u///u7v//7u7//+7
u///u7v/tISE4QAAAEUAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABYOjocuZiM68mplf/gqp///7i4//+4uP//uLj//7i4//+4uP/3tLL//7i4//+4
uP//uLj//7i4//+4uP//uLj//7i4//+4uP//uLj//7i4//+4uP//uLj//7i4//+4uP//uLj//7i4//+4
uP//uLj//7i4//+4uP//uLj/aUxMwwAAAC0AAAADAAAACQAAAA8AAAAVAAAABwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGWbmqPz7Gg/8eijv/7tLP//7a2//+2tv//trb//7a2//+2
tv//trb//7a2//+2tv//trb//7a2//+2tv//trb//7a2//+2tv//trb//7a2//+2tv//trb//7a2//+2
tv//trb//7a2//+2tv//trb//7a2//+2tv//trb/AAAAtQAAAGgAAAA6AAAATgAAAHEAAACCAAAASAAA
AAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIFWVhO+m5DxyqmW/9immP//tLT//7S0//+0
tP//tLT//7S0//+0tP//tLT//7S0//+0tP//tLT//7S0//+0tP//tLT//bW0/++1r//jsqf/1qqb/9uq
nf/kq6L/97Gu//+0tP//tLT//7S0//+0tP//tLT//7S0//+0tP//tLT/oXJy4yMeG75rUUzKsH584eej
o/ZjRUXPAAAAiwAAAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJlmZiDMrZ7wzK2a/8ei
jv/zrqr//7Ky//+ysv//srL//7Ky//+ysv//srL//7Ky//+ysv//srL//7Ky//+ysv/Mj4+ghF1dHwAA
AAGZZmYwuZSLcsGekuDLrJv/yKeT/9KklP/zrqr//7Ky//+ysv//srL//7Ky//+ysv//srL//7Ky//ew
rf//srL//7Ky//+ysv/moaH3AAAArQAAAFEAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACkdXJgyaib/8urmP/HoY3/86yo//+wsP//sLD//7Cw//+wsP//sLD//7Cw//+wsP//sLD/9amp+XpU
VGQAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAACug31gw6CU8M2um//Fo47/36ab//+wsP//sLD//7Cw//+w
sP//sLD//7Cw//+wsP//sLD//7Cw//+wsP//sLD/c09P1QAAAIwAAAAbAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAApHVyYMinmf/Lq5j/xqCM//Oqpv//rq7//66u//+urv//rq7//66u//+u
rv//rq7/YEJCfwAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmWZmELiSidDPsZ//xqWQ/9ej
lf//rq7//66u//+urv//rq7//66u//+urv//rq7//66u//+urv//rq7/5pyc9wAAAKcAAAA0AAAABgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAB5hsaWfPsaH/yqqW/8Weiv//q6v//6ur//+r
q///q6v//6ur//+rq/+gbGzMAAAAKAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJlm
ZhC4konQz7Gf/8Wjj//fpJn//6ur//+rq///q6v//6ur//+rq///q6v//6ur//+rq///q6v//6ur/2JC
QqcAAAAtAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAArAAAARQAAAFu0kojty6uY/9Cg
kP//qan//6mp//+pqf//qan//6mp//SiovokGBhxAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAACZZmYgxKKW8M2um//DoYv/76Wg//+pqf//qan//6mp//+pqf//qan//6mp//+p
qf//qan/7p6e75BfX1UAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDEpJYNQQjnAmGRk15Zi
Ytnoo5//8qei//emo///p6f//6en//+np///p6f//6en/6dtbdsAAAA3AAAABAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApHVyYM+xov/JqZX/zJ+N//+np///p6f//6en//+n
p///p6f//6en//+np//nl5flTTIyNQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvZyRt82t
m//Cnon//6Wl//+lpf//paX//6Wl//+lpf//paX//6Wl//+lpf//paX//6Wl/0QsLLQAAAAcAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALKJguDPsJ7/xKKN/+ui
m///paX//6Wl//+lpf//paX//6Wl/7R0dOEsHBxdAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAt4+H/8ysmf/Jn4z//6Ki//+iov//oqL//6Ki//+iov//oqL//6Ki//+iov//oqL//6Ki/wAA
AI8AAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKR1
cmDPsaH/yaiU/9Sej///oqL//6Ki//+iov//oqL//6Ki/2RAQMwAAABtAAAAIgAAAA0AAAAEAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAt4+H/8urmP/Rn4///6Cg//+goP//oKD//6Cg//+goP//oKD//6Cg//+g
oP//oKD/2omJ8gAAAIUAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADAnZLwzK2a/8Kfif//oKD//6Cg//+goP//oKD//6Cg/6FlZeMAAACyAAAAkQAA
AGcAAAA3AAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAt4+H/8urmP/Rn4///56e//+env//np7//56e//+e
nv//np7//56e//+env//np7/zoCA7QAAAIgAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACxioOzz7Gf/8Sijf/vnZf//56e//+env//np7//56e//+e
nv/mj4/3oWRk4j8nJ8MAAACqAAAAiQAAABYAAAAAAAAAAAAAAAAAAAAAt4+H/8ysmf/Bnoj//5yc//+c
nP//nJz//5yc//+cnP//nJz//5yc//+cnP//nJz/zH197wAAAJsAAAAYAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACleXWD0bSi/8alkP/jm5L//5yc//+c
nP//nJz//5yc//+cnP//nJz//5yc//+cnP/zlZX7AAAApgAAABgAAAAAAAAAAAAAAAAAAAAAuZOK782u
nP/Eoo3/5JyT//Oalv//mpr//5qa//+amv//mpr//5qa//+amv//mpr/85KS+wAAAKcAAAAlAAAAAQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSYWFU07al/8em
kv/fmo///5qa//+amv//mpr//5qa//+amv//mpr//5qa//+amv//mpr/AAAApwAAABgAAAAAAAAAAAAA
AAAAAAAAmWZmILCIgXLFpJiyyaiY/8qql//NopD/3ZyQ//eZlv/+mJj//piY//6YmP/+mJj//piY/xcO
DrQAAABGAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACQYGBE07em/8imkv/fmo///piY//6YmP/+mJj//piY//6YmP/+mJj//piY//6YmP/+mJj/AAAApwAA
ABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmWZmEKh7d4DIp5n/yqmV/8+bi//8lpb//JaW//yW
lv/8lpb//JaW/2I6Os0AAABzAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmWZmMMmqnIKxlINJAAAABgAAAAAAAAAAr4yEmdCy
oP/Foo3/3YR//+V/f//lf3//5X9//+V/f//lf3//5X9//+V/f//lf3//5X9//+V/f//lf3//5X9//+V/
f//lf3//5X9//+V/f//lf3//5X9//+V/f//lf3//5X9//+V/f//lf3//5X9//+V/f//lf3//23p6+iIT
E2oAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAADsY2E2M2tm//Fmof/4nx8/+J8fP/ifHz/4nx8/+J8fP/ifHz/4nx8/+J8fP/ifHz/4nx8/+J8
fP/ifHz/4nx8/+J8fP/ifHz/4nx8/+J8fP/ifHz/4nx8/+J8fP/ifHz/2Y2G/8uXh//ZhH7/4nx8/+J8
fP/ifHz/lFFRxAAAACcAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAB3UFApyaia/8molP/OjYH/4Hp6/+B6ev/genr/4Hp6/+B6ev/genr/4Hp6/+B6
ev/genr/4Hp6/+B6ev/genr/4Hp6/+B6ev/genr/4Hp6/+B6ev/genr/4Hp6/+B6ev/genr/wJeN+s6v
nf/GpZD/zZGD/9x+e//VdHTqPSEhOgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcdG970bOh/8Wjjv/Xfnr/3Xd3/913d//dd3f/3Xd3/913
d//dd3f/3Xd3/913d//dd3f/3Xd3/913d//dd3f/3Xd3/913d//dd3f/3Xd3/913d//dd3f/3Xd3/913
d//dd3f/ZTY202tPTLTEopbjw6WTtreWgoipW1sqAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1kIfUza2b/8WZhv/bdXX/23V1/9t1
df/bdXX/23V1/9t1df/Yenj/zol+/9l3dv/bdXX/23V1/9t1df/bdXX/23V1/9t1df/bdXX/23V1/9t1
df/bdXX/23V1/9t1df/bdXX/olZW6wAAAKEAAAAlAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCn5T/zKyZ/8Sd
if/Uenb/2XNz/9lzc//Zc3P/2XNz/9lzc//TqJr/yKeT/8uKfv/Zc3P/2XNz/9lzc//Zc3P/2XNz/9lz
c//RjYP/zId9/9lzc//Zc3P/2XNz/9lzc//Zc3P/2XNz/xQKCrQAAABCAAAABwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACkdXJgyaib/8ysmf/Fnor/z353/9ZwcP/WcHD/1nBw/5FSUr/Fo5b/yqmW/8aSgf/WcHD/1nBw/9Zw
cP/WcHD/1nBw/9Z9ev/Nrpv/w6GL/9B6df/WcHD/1nBw/9ZwcP/WcHD/1nBw/1ovL74AAABJAAAACgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAroN+MMKglODOr53/xaOP/8mIfP/TcW//sVxcvgAAAB/Cn5T/y6yZ/8SY
hf/Ubm7/1G5u/9Rubv/Ubm7/1G5u/8lxcP/QsqL/yqmW/8WVg//Ubm7/1G5u/9Rubv/Ubm7/1G5u/5lP
T5sAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJlmZhC1jIWvxqaX4b+fi6e4hXd4hkREGQAA
AAG7lYzhza6b/8Kfif/Ra2v/0Wtr/9Fra//Ra2v/0Wtr/3s/P9mhe3bV0LKh/8alkP/Ig3j/0Wtr/9Fr
a//MaGj1nVBQawAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
KoMAAAATAAAABQAAAAcAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAelVUP8Skkv7lraT//7m6//+6
u//4t7X/9bWx//+5uf//ubn//7m5//+5uf//ubr//7m6//+6u///ubr//7m5//+5uf//ubn//7m5//+5
uf+vf3/hAAAAcgAAACwAAAA2AAAAPQAAABAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAGwjIK+0auZ//my
r///trf//7W1//+2tv//trb//7W1//+1tf//trb//rS0//axsP/wtK7/8LGr//izsP//trf//7W2//+1
tf//tbX//7W1/5xvb+EUEA+wUTs5rmxLS8EIBgaeAAAAQwAAAAcAAAAAAAAAAAAAAAAAAAAAl2NkBsCd
kNnPq5j/8a2n//+ztP//srL//7Ky//+ysv//srL//7Ky//esrPrGioqYxZGOTLePh2XBnZDDzqiY/96r
nv/4r6z//7Kz//+ysv//srL/9aqq+9mZmPTvqKf7/rCw/1U7O8sAAAB7AAAAFgAAAAAAAAAAAAAAAAAA
AACVX2EBoXNwRcGgkuvNqJX/8aql//+vr///rq7//66u//+urv/soaH3bUtLcwAAAA4AAAAAAAAAAAAA
AACsg3xYxKaW5M2mlP/uqaP//6+w//+urv//rq7//66v//+vr///rq7/x4iI7QAAAJkAAAApAAAABAAA
AAAAAAAAAAAAAAAAAAEAAAAXbVFPXL+llO3PpZP/+aqo//+srP//rKz//qur/4teXrYAAAAcAAAAAAAA
AAAAAAAAAAAAAAAAAAC5lIs8xaaW6M2nlP/0qKX//6yt//+srP//rKz//6ys//+srP/6qan8Vzo6hAAA
ABYAAAABAAAAAAAAAAAAAAAATEE7GEExLYZJLzC0tI2D8+KonP/8p6X//6io//+oqP/Zj4/vAAAAXgAA
AAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwhX9hx6qY/tWjlP/+p6f//6io//+oqP//qKj//6io/8mE
hMZAKiokAAAAAQAAAAAAAAAAAAAAAAAAAAC9oJCzz56P+P+np///pqb//6Wm//+lpf//paX//6Wl/5Nf
X9QAAAA9AAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJZiYwK5k4rAyKqV/+uimv//pab//6Wl//+l
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
</value>
</data>
</root>

View File

@@ -0,0 +1,375 @@
Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Imports System.Drawing
Imports System.Drawing.Color
Imports System.IO
Public Class frmSysadminMenu
#Region "Deklarationen"
Const CtrlMask As Byte = 8
Dim todelete(50) As Integer
Dim itodelete As Integer
Dim ssort As Integer
Dim msg As New Utils.MyMessage
#End Region
#Region "Formular"
''' <summary>
''' Load des Formulars
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub FrmSysadminMenu_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim menu As New db.clsMySysadminfunkion()
menu.LoadTreeMenu(SysMenuTree)
SysMenuTree.ExpandAll()
itodelete = 0
Me.SysMenuTree.ContextMenu = Me.ContextMenu1
Me.Height = Me.Parent.ClientSize.Height
End Sub
''' <summary>
''' Doppelklick auf einen Eintrag: Es wird geprüft, ob in der Tabelle SysadminFunktion im Attribut DomainTable
''' einen Wert vorhanden ist. Sofern dies der Fall ist, wird der generelle Domain-Table-Editor aufgerufen
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub SysMenuTree_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles SysMenuTree.DoubleClick
Dim sysadmfnkt As New db.clsSysadminfunktion
Dim wert As String
wert = Me.SysMenuTree.SelectedNode.Tag
If IsNumeric(wert) Then
sysadmfnkt.iSysadminfnktnr = New SqlInt32(CType(wert, Int32))
sysadmfnkt.cpMainConnectionProvider = Globals.conn
Globals.conn.OpenConnection()
sysadmfnkt.SelectOne()
Globals.conn.CloseConnection(True)
If sysadmfnkt.sDomaintable.Value.IndexOf(";") > -1 Then
'Verbindungseditor
Dim s As String = sysadmfnkt.sDomaintable.Value
Dim sArray() As String = s.Split(";")
Dim f As New FrmVerbindungEditor(sArray(0), sArray(1), sArray(2), sysadmfnkt.iSysadminfnktnr.Value)
f.Width = sysadmfnkt.iFwidth.Value
f.Height = sysadmfnkt.iFheight.Value
f.Top = sysadmfnkt.iFtop.Value
f.Left = sysadmfnkt.iFleft.Value
f.MdiParent = Me.MdiParent
f.Text = "Verbindungseditor: " + Me.SysMenuTree.SelectedNode.Text
f.Show()
Else
'20090810 - Externe Tabellen mit dem Domaineditor mutieren
If sysadmfnkt.sDomaintable.Value.IndexOf(":") > -1 Then
Dim s As String = sysadmfnkt.sDomaintable.Value
Dim sarray() As String = s.Split(":")
Dim ofile As System.IO.File
Dim oread As System.IO.StreamReader
Dim scstring As String
oread = ofile.OpenText(Application.StartupPath + "\" + sarray(0))
sCString = oread.ReadLine
scstring = Crypto.DecryptText(scstring, "HutterundMueller")
scstring = Microsoft.VisualBasic.Left(scstring, Len(scstring) - 1)
oread.Close()
Dim f As New frmDomainEditorExtTables(sarray(1), scstring)
f.MdiParent = Me.MdiParent
f.Text = "TicketXPert-Tabelle:" + sarray(1)
f.Show()
Else
'Einzelne Domaintable
If sysadmfnkt.sDomaintable.Value = "ToolTip-Editor" Then
Dim f As New FrmToolTipEditor
f.MdiParent = Me.MdiParent
f.Show()
Exit Sub
End If
If sysadmfnkt.sDomaintable.Value <> "" Then
Dim f As New frmDomainEditor(sysadmfnkt.sDomaintable.Value)
f.MdiParent = Me.MdiParent
f.Width = sysadmfnkt.iFwidth.Value
f.Height = sysadmfnkt.iFheight.Value
f.Top = sysadmfnkt.iFtop.Value
f.Left = sysadmfnkt.iFleft.Value
f.Text = "Tabellen-Editor: " + Me.SysMenuTree.SelectedNode.Text
f.Show()
End If
End If
End If
sysadmfnkt.Dispose()
End If
End Sub
''' <summary>
''' Schliessen des Formulares
''' </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 BeendenToolStripMenuItem.Click
Me.Close()
End Sub
''' <summary>
''' Fenster 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
#End Region
#Region "SysMenuTree"
''' <summary>
''' Neuer Eintrag im Menu einfügen
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub MnuNeuerKnoten_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuNeuerKnoten.Click
Dim a As String
Dim tn As New TreeNode()
Dim tnnew As New TreeNode()
a = InputBox(msg.Get_Meldungstext(100))
If a = "" Then Exit Sub
tn = Me.SysMenuTree.SelectedNode
tnnew = tn.Nodes.Add(a)
With tnnew
.Tag() = 0
.ImageIndex() = 3
.SelectedImageIndex() = 3
End With
tn.ImageIndex = 1
tn.SelectedImageIndex = 2
If tn.GetNodeCount(True) > 0 Then
tn.ImageIndex = 1
tn.SelectedImageIndex = 2
End If
Me.SysMenuTree.Refresh()
End Sub
''' <summary>
''' Eintrag im Menu löschen
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub MnuKnotenLoeschen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuKnotenLoeschen.Click
Dim tn As New TreeNode()
Dim tnp As New TreeNode()
Dim i As Integer
tn = Me.SysMenuTree.SelectedNode
tnp = tn.Parent
If Not (Me.SysMenuTree.SelectedNode Is Nothing) Then
itodelete = itodelete + 1
todelete(itodelete) = tn.Tag
If msg.Show_MessageYesNo(101) = MsgBoxResult.Yes Then
tn.Remove()
End If
If tnp.GetNodeCount(True) = 0 Then
tnp.ImageIndex = 3
tnp.SelectedImageIndex = 3
End If
Me.SysMenuTree.Refresh()
End If
End Sub
''' <summary>
''' Umbenennen des aktuellen Menu-Eintrages
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub MenuKnotenRename_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuKnotenRename.Click
Dim a As String
a = InputBox("Neuer Name:")
If a = "" Then Exit Sub
Me.SysMenuTree.SelectedNode.Text = a
End Sub
''' <summary>
''' Menu Sichern
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub MnuSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuSave.Click
Dim i As Integer
conn.OpenConnection()
ListNodeCollectionRecursive(Me.SysMenuTree.Nodes(0), 0)
i = conn.CloseConnection(True)
End Sub
''' <summary>
''' Knoten rekursiv auslesen
''' </summary>
''' <param name="tnParent"></param>
''' <param name="iSort"></param>
''' <remarks></remarks>
Private Sub ListNodeCollectionRecursive(ByVal tnParent As TreeNode, ByRef iSort As Integer)
Dim tn As TreeNode
If tnParent.GetNodeCount(False) > 0 Then
tn = tnParent.Nodes(0)
Else
tn = Nothing
End If
ssort = 0
Do Until tn Is Nothing
iSort = iSort + 1
ListNodeSave(tn, iSort)
If tn.GetNodeCount(False) > 0 Then
Call ListNodeCollectionRecursive(tn, iSort)
End If
tn = tn.NextNode
Loop
End Sub
''' <summary>
''' einzelner Knoten sichern
''' </summary>
''' <param name="tn"></param>
''' <param name="isort"></param>
''' <remarks></remarks>
Private Sub ListNodeSave(ByVal tn As TreeNode, ByRef isort As Integer)
Dim dbkey As New db.clsMyKey_Tabelle()
Dim t As DataTable
Dim key As Long
Dim i As Integer
Dim ftop, fleft, fheight, fwidth As Integer
Dim sDomaintable As String = ""
Dim sKeyfields As String = ""
Dim sysadmfnkt As New db.clsSysadminfunktion
dbkey.cpMainConnectionProvider = conn
sysadmfnkt.cpMainConnectionProvider = conn
If tn.Tag <> 0 Then
sysadmfnkt.iSysadminfnktnr = New SqlInt32(CType(tn.Tag, Int32))
sysadmfnkt.SelectOne()
ftop = sysadmfnkt.iFtop.Value
fleft = sysadmfnkt.iFleft.Value
fwidth = sysadmfnkt.iFwidth.Value
fheight = sysadmfnkt.iFheight.Value
sDomaintable = sysadmfnkt.sDomaintable.Value
sKeyfields = sysadmfnkt.sKeyFields.Value
End If
sysadmfnkt.daMutiert_am = New SqlDateTime(CType(Now, DateTime))
sysadmfnkt.iMutierer = New SqlInt32(CType(Globals.clsmitarbeiter.iMitarbeiternr.Value, Int32))
sysadmfnkt.sBezeichnung = New SqlString(CType(tn.Text, String))
sysadmfnkt.sBeschreibung = New SqlString(CType("", String))
sysadmfnkt.iParentID = New SqlInt32(CType(tn.Parent.Tag, Int32))
sysadmfnkt.iImageIndex = New SqlInt32(CType(tn.ImageIndex, Int32))
sysadmfnkt.iImageIndexOpen = New SqlInt32(CType(tn.SelectedImageIndex, Int32))
sysadmfnkt.iSort = New SqlInt32(CType(isort, Int32))
sysadmfnkt.daErstellt_am = New SqlDateTime(CType(Now, DateTime))
sysadmfnkt.bAktiv = New SqlBoolean(CType(True, Boolean))
sysadmfnkt.iSprache = New SqlInt32(CType(1, Int32))
sysadmfnkt.iMandantnr = New SqlInt32(CType(Globals.clsmitarbeiter.iMandantnr.Value, Int32))
sysadmfnkt.iFtop = New SqlInt32(CType(ftop, Int32))
sysadmfnkt.iFleft = New SqlInt32(CType(fleft, Int32))
sysadmfnkt.iFwidth = New SqlInt32(CType(fwidth, Int32))
sysadmfnkt.iFheight = New SqlInt32(CType(fheight, Int32))
sysadmfnkt.sDomaintable = New SqlString(CType(sDomaintable, String))
sysadmfnkt.sKeyFields = New SqlString(CType(sKeyfields, String))
If tn.Tag <> 0 Then
sysadmfnkt.iSysadminfnktnr = New SqlInt32(CType(tn.Tag, Int32))
sysadmfnkt.Update()
Else
key = dbkey.get_dbkey("sysadminfunktion")
conn.OpenConnection()
sysadmfnkt.iSysadminfnktnr = New SqlInt32(CType(key, Int32))
sysadmfnkt.Insert()
tn.Tag = key
End If
For i = 1 To itodelete
sysadmfnkt.iSysadminfnktnr = New SqlInt32(CType(todelete(i), Int32))
t = sysadmfnkt.SelectOne
If t.Rows.Count > 0 Then
sysadmfnkt.Delete()
End If
Next
End Sub
Private Sub SysMenutree_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles SysMenuTree.DragEnter
If (e.Data.GetDataPresent("System.Windows.Forms.TreeNode")) Then
If (e.KeyState And CtrlMask) = CtrlMask Then
e.Effect = DragDropEffects.Copy
Else
e.Effect = DragDropEffects.Move
End If
Else
e.Effect = DragDropEffects.None
End If
End Sub
Private Sub SysMenuTree_ItemDrag(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ItemDragEventArgs) Handles SysMenuTree.ItemDrag
If e.Button = MouseButtons.Left Then
DoDragDrop(e.Item, DragDropEffects.Move Or DragDropEffects.Copy)
End If
End Sub
Private Sub SysMenuTree_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles SysMenuTree.DragDrop
Dim OriginationNode As TreeNode = CType(e.Data.GetData("System.Windows.Forms.TreeNode"), TreeNode)
If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", False) Then
Dim pt As Point
Dim DestinationNode As TreeNode
pt = CType(sender, TreeView).PointToClient(New Point(e.X, e.Y))
DestinationNode = CType(sender, TreeView).GetNodeAt(pt)
DestinationNode.Nodes.Add(CType(OriginationNode.Clone, TreeNode))
DestinationNode.Expand()
If (e.KeyState And CtrlMask) <> CtrlMask Then
OriginationNode.Remove()
End If
End If
End Sub
#End Region
#Region "Spaltentitel generieren"
''' <summary>
''' Generiert die Spaltentitel in der Tabelle Spalten aufgrund der im Formular frmSysadminTableSelector gewählten Tabelle
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub SpaltentitelGenerierenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SpaltentitelGenerierenToolStripMenuItem.Click
Dim f As New frmSysadminTableSelector()
Dim tablename As String
tablename = (f.get_tablename())
If tablename = "" Then Exit Sub
Generate_Data(tablename)
End Sub
''' <summary>
''' Ruft die SP zur Spalten-Generierung auf
''' </summary>
''' <param name="tablename"></param>
''' <remarks></remarks>
Private Sub Generate_Data(ByVal tablename As String)
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
Dim dttable As New DataTable(tablename)
scmCmdToExecute.CommandText = "dbo.[sp_update_spalten]"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn.scoDBConnection
Try
scmCmdToExecute.Parameters.Add(New SqlParameter("@Tablename", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 0, 0, "", DataRowVersion.Proposed, tablename))
scmCmdToExecute.Connection.Open()
scmCmdToExecute.ExecuteNonQuery()
Return
Catch ex As Exception
Throw New Exception(msg.Get_Meldungstext(103), ex)
Finally
scmCmdToExecute.Connection.Close()
End Try
End Sub
#End Region
Private Sub FrmSysadminMenu_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
If Me.Width > 300 Then Me.Width = 300
End Sub
Private Sub SysMenuTree_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles SysMenuTree.AfterSelect
End Sub
End Class

View File

@@ -0,0 +1,165 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="SqlDataAdapter1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="SqlInsertCommand1.DesignTimeVisible" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="SqlInsertCommand1.CommandDesignTimeVisible" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="SqlInsertCommand1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>0, 0</value>
</metadata>
<metadata name="SqlConnection1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>152, 17</value>
</metadata>
<metadata name="SqlSelectCommand1.DesignTimeVisible" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="SqlSelectCommand1.CommandDesignTimeVisible" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="SqlSelectCommand1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>0, 0</value>
</metadata>
<metadata name="DataSet1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>280, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAICAEAAAAAADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAzd3d3MzMzAAAAAAAAAAAAM3d3dzMzMwAAAAAAAAAAM3eIiIi7MzMzAAAAAAAA
ADN3iIiIuzMzMwAAAAAAAAB3u4iIiLu7MzMAAAAAAAAAd7uIiIi7uzMzAAAAAAAAAHe7iIiIu7szMwAA
AAAAAAB3u4iIiLu7MzMAAAAAAAAAd7uIiIi7uzMzAAAAAAAAAHe7iIiIu7szMwAAAAAAAAB3u4iIiLu7
MzMAAAAAAAAAd7uIiIi7uzMzAAAAAAAAAHe7iIiIu7szMwAAAAAAAAB3u4iIiLu7MzMAAAAAAAAAd7uI
iIi7uzMzAAAAAAAAAHe7iIiIu7szMwAAAAAAAAB3u4iIiLu7MzMAAAAAAAAAd7uIiIi7uzMzAAAAAAAA
AHe7iIiIiIi7dwAAAAAAAAB3u4iIiIiIu3cAAAAAAAAAiIj//////4h3AAAAAAAAAIiI//////+IdwAA
AAAAAAAzd3d3d3d3dzMAAAAAAAAAM3d3d3d3d3czAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////////AAA//wA
AP/8AAD//AAA//wAAP/8AAD//AAA//wAAP/8AAD//AAA//wAAP/8AAD//AAA//wAAP/8AAD//AAA//wA
AP/8AAD//AAA//wAAP/8AAD//AAA//wAAP/8AAD//////////////////////w==
</value>
</data>
</root>

View File

@@ -0,0 +1,145 @@
Imports System.IO
Imports System.Data
Imports System.Data.SqlTypes
Imports System.Data.SqlClient
Public Class frmSysadminTableSelector
Inherits System.Windows.Forms.Form
#Region " Vom Windows Form Designer generierter Code "
Public Sub New()
MyBase.New()
' Dieser Aufruf ist für den Windows Form-Designer erforderlich.
InitializeComponent()
' Initialisierungen nach dem Aufruf InitializeComponent() hinzufügen
End Sub
' Die Form überschreibt den Löschvorgang der Basisklasse, um Komponenten zu bereinigen.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
' Für Windows Form-Designer erforderlich
Private components As System.ComponentModel.IContainer
'HINWEIS: Die folgende Prozedur ist für den Windows Form-Designer erforderlich
'Sie kann mit dem Windows Form-Designer modifiziert werden.
'Verwenden Sie nicht den Code-Editor zur Bearbeitung.
Friend WithEvents SqlDataAdapter1 As System.Data.SqlClient.SqlDataAdapter
Friend WithEvents SqlSelectCommand1 As System.Data.SqlClient.SqlCommand
Friend WithEvents SqlInsertCommand1 As System.Data.SqlClient.SqlCommand
Friend WithEvents SqlConnection1 As System.Data.SqlClient.SqlConnection
Friend WithEvents DataSet1 As System.Data.DataSet
Friend WithEvents ListBox1 As System.Windows.Forms.ListBox
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmSysadminTableSelector))
Me.SqlDataAdapter1 = New System.Data.SqlClient.SqlDataAdapter
Me.SqlInsertCommand1 = New System.Data.SqlClient.SqlCommand
Me.SqlConnection1 = New System.Data.SqlClient.SqlConnection
Me.SqlSelectCommand1 = New System.Data.SqlClient.SqlCommand
Me.DataSet1 = New System.Data.DataSet
Me.ListBox1 = New System.Windows.Forms.ListBox
CType(Me.DataSet1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'SqlDataAdapter1
'
Me.SqlDataAdapter1.InsertCommand = Me.SqlInsertCommand1
Me.SqlDataAdapter1.SelectCommand = Me.SqlSelectCommand1
Me.SqlDataAdapter1.TableMappings.AddRange(New System.Data.Common.DataTableMapping() {New System.Data.Common.DataTableMapping("Table", "sysobjects", New System.Data.Common.DataColumnMapping() {New System.Data.Common.DataColumnMapping("name", "name"), New System.Data.Common.DataColumnMapping("id", "id"), New System.Data.Common.DataColumnMapping("xtype", "xtype"), New System.Data.Common.DataColumnMapping("uid", "uid"), New System.Data.Common.DataColumnMapping("info", "info"), New System.Data.Common.DataColumnMapping("status", "status"), New System.Data.Common.DataColumnMapping("base_schema_ver", "base_schema_ver"), New System.Data.Common.DataColumnMapping("replinfo", "replinfo"), New System.Data.Common.DataColumnMapping("parent_obj", "parent_obj"), New System.Data.Common.DataColumnMapping("crdate", "crdate"), New System.Data.Common.DataColumnMapping("ftcatid", "ftcatid"), New System.Data.Common.DataColumnMapping("schema_ver", "schema_ver"), New System.Data.Common.DataColumnMapping("stats_schema_ver", "stats_schema_ver"), New System.Data.Common.DataColumnMapping("type", "type"), New System.Data.Common.DataColumnMapping("userstat", "userstat"), New System.Data.Common.DataColumnMapping("sysstat", "sysstat"), New System.Data.Common.DataColumnMapping("indexdel", "indexdel"), New System.Data.Common.DataColumnMapping("refdate", "refdate"), New System.Data.Common.DataColumnMapping("version", "version"), New System.Data.Common.DataColumnMapping("deltrig", "deltrig"), New System.Data.Common.DataColumnMapping("instrig", "instrig"), New System.Data.Common.DataColumnMapping("updtrig", "updtrig"), New System.Data.Common.DataColumnMapping("seltrig", "seltrig"), New System.Data.Common.DataColumnMapping("category", "category"), New System.Data.Common.DataColumnMapping("cache", "cache")})})
'
'SqlInsertCommand1
'
Me.SqlInsertCommand1.CommandText = "[pv_sysobjects_insert]"
Me.SqlInsertCommand1.CommandType = System.Data.CommandType.StoredProcedure
Me.SqlInsertCommand1.Connection = Me.SqlConnection1
Me.SqlInsertCommand1.Parameters.AddRange(New System.Data.SqlClient.SqlParameter() {New System.Data.SqlClient.SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, False, CType(0, Byte), CType(0, Byte), "", System.Data.DataRowVersion.Current, Nothing), New System.Data.SqlClient.SqlParameter("@name", System.Data.SqlDbType.NVarChar, 128, "name"), New System.Data.SqlClient.SqlParameter("@id", System.Data.SqlDbType.Int, 4, "id"), New System.Data.SqlClient.SqlParameter("@xtype", System.Data.SqlDbType.VarChar, 2, "xtype"), New System.Data.SqlClient.SqlParameter("@uid", System.Data.SqlDbType.Int, 2, "uid"), New System.Data.SqlClient.SqlParameter("@info", System.Data.SqlDbType.Int, 2, "info"), New System.Data.SqlClient.SqlParameter("@status", System.Data.SqlDbType.Int, 4, "status"), New System.Data.SqlClient.SqlParameter("@base_schema_ver", System.Data.SqlDbType.Int, 4, "base_schema_ver"), New System.Data.SqlClient.SqlParameter("@replinfo", System.Data.SqlDbType.Int, 4, "replinfo"), New System.Data.SqlClient.SqlParameter("@parent_obj", System.Data.SqlDbType.Int, 4, "parent_obj"), New System.Data.SqlClient.SqlParameter("@crdate", System.Data.SqlDbType.DateTime, 8, "crdate"), New System.Data.SqlClient.SqlParameter("@ftcatid", System.Data.SqlDbType.Int, 2, "ftcatid")})
'
'SqlConnection1
'
Me.SqlConnection1.ConnectionString = "data source=shu;initial catalog=edoka;persist security info=False;user id=sa;work" & _
"station id=SHU;packet size=4096"
Me.SqlConnection1.FireInfoMessageEventOnUserErrors = False
'
'SqlSelectCommand1
'
Me.SqlSelectCommand1.CommandText = "[pv_sysobjects_select]"
Me.SqlSelectCommand1.CommandType = System.Data.CommandType.StoredProcedure
Me.SqlSelectCommand1.Connection = Me.SqlConnection1
Me.SqlSelectCommand1.Parameters.AddRange(New System.Data.SqlClient.SqlParameter() {New System.Data.SqlClient.SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, False, CType(0, Byte), CType(0, Byte), "", System.Data.DataRowVersion.Current, Nothing)})
'
'DataSet1
'
Me.DataSet1.DataSetName = "NewDataSet"
Me.DataSet1.Locale = New System.Globalization.CultureInfo("de-CH")
'
'ListBox1
'
Me.ListBox1.Location = New System.Drawing.Point(8, 16)
Me.ListBox1.Name = "ListBox1"
Me.ListBox1.Size = New System.Drawing.Size(240, 316)
Me.ListBox1.TabIndex = 0
'
'frmSysadminTableSelector
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(256, 349)
Me.Controls.Add(Me.ListBox1)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.Name = "frmSysadminTableSelector"
Me.Text = "Tabelle auswählen"
CType(Me.DataSet1, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub frmSysadminTableSelector_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim ds As New DataSet
Dim connection As New SqlConnection()
Dim da As New SqlDataAdapter("", connection)
Dim sqlcmd As New SqlCommand
sqlcmd.CommandText = "dbo.sp_sysobjects_select"
sqlcmd.CommandType = CommandType.StoredProcedure
sqlcmd.Connection = connection
Try
connection.ConnectionString = Globals.sConnectionString
connection.Open()
da.SelectCommand = sqlcmd
da.Fill(ds, "Datatable1")
Catch ex As Exception
Finally
connection.Close()
da.Dispose()
sqlcmd.Dispose()
End Try
Dim i As Integer
For i = 0 To ds.Tables(0).Rows.Count - 1
Me.ListBox1.Items.Add(ds.Tables(0).Rows(i)(0))
Next
Me.SqlConnection1.Close()
End Sub
Private Sub listbox1_dblclick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.DoubleClick
Close()
End Sub
Public Function get_tablename() As String
get_tablename = ""
Me.ShowDialog()
Return Me.ListBox1.SelectedItem
End Function
End Class

View File

@@ -0,0 +1,342 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class frmVerbindungEditor
Inherits System.Windows.Forms.Form
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Wird vom Windows Form-Designer benötigt.
Private components As System.ComponentModel.IContainer
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmVerbindungEditor))
Me.ToolStrip1 = New System.Windows.Forms.ToolStrip
Me.TSBtnQuit = New System.Windows.Forms.ToolStripButton
Me.TSBtnSave = New System.Windows.Forms.ToolStripButton
Me.MenuStrip1 = New System.Windows.Forms.MenuStrip
Me.DateiToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.BeendenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
Me.SplitContainer1 = New System.Windows.Forms.SplitContainer
Me.SplitContainer2 = New System.Windows.Forms.SplitContainer
Me.GrpBoxLeft = New System.Windows.Forms.GroupBox
Me.C1DatenLeft = New C1.Win.C1TrueDBGrid.C1TrueDBGrid
Me.GrpBoxRight = New System.Windows.Forms.GroupBox
Me.C1DatenRight = New C1.Win.C1TrueDBGrid.C1TrueDBGrid
Me.Panel1 = New System.Windows.Forms.Panel
Me.BtnFocusRight = New System.Windows.Forms.Button
Me.ImageList1 = New System.Windows.Forms.ImageList(Me.components)
Me.BtnFocusLeft = New System.Windows.Forms.Button
Me.BtnVerbinden = New System.Windows.Forms.Button
Me.GrpBoxBottom = New System.Windows.Forms.GroupBox
Me.C1DatenBottom = New C1.Win.C1TrueDBGrid.C1TrueDBGrid
Me.ToolStrip1.SuspendLayout()
Me.MenuStrip1.SuspendLayout()
Me.SplitContainer1.Panel1.SuspendLayout()
Me.SplitContainer1.Panel2.SuspendLayout()
Me.SplitContainer1.SuspendLayout()
Me.SplitContainer2.Panel1.SuspendLayout()
Me.SplitContainer2.Panel2.SuspendLayout()
Me.SplitContainer2.SuspendLayout()
Me.GrpBoxLeft.SuspendLayout()
CType(Me.C1DatenLeft, System.ComponentModel.ISupportInitialize).BeginInit()
Me.GrpBoxRight.SuspendLayout()
CType(Me.C1DatenRight, System.ComponentModel.ISupportInitialize).BeginInit()
Me.Panel1.SuspendLayout()
Me.GrpBoxBottom.SuspendLayout()
CType(Me.C1DatenBottom, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'ToolStrip1
'
Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TSBtnQuit, Me.TSBtnSave})
Me.ToolStrip1.Location = New System.Drawing.Point(0, 24)
Me.ToolStrip1.Name = "ToolStrip1"
Me.ToolStrip1.Size = New System.Drawing.Size(953, 25)
Me.ToolStrip1.TabIndex = 3
Me.ToolStrip1.Text = "ToolStrip1"
'
'TSBtnQuit
'
Me.TSBtnQuit.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
Me.TSBtnQuit.Image = CType(resources.GetObject("TSBtnQuit.Image"), System.Drawing.Image)
Me.TSBtnQuit.ImageTransparentColor = System.Drawing.Color.Magenta
Me.TSBtnQuit.Name = "TSBtnQuit"
Me.TSBtnQuit.Size = New System.Drawing.Size(23, 22)
Me.TSBtnQuit.Text = "ToolStripButton1"
Me.TSBtnQuit.ToolTipText = "Fenster schliessen"
'
'TSBtnSave
'
Me.TSBtnSave.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
Me.TSBtnSave.Image = CType(resources.GetObject("TSBtnSave.Image"), System.Drawing.Image)
Me.TSBtnSave.ImageTransparentColor = System.Drawing.Color.Magenta
Me.TSBtnSave.Name = "TSBtnSave"
Me.TSBtnSave.Size = New System.Drawing.Size(23, 22)
Me.TSBtnSave.Text = "ToolStripButton1"
Me.TSBtnSave.ToolTipText = "Daten speichern"
'
'MenuStrip1
'
Me.MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.DateiToolStripMenuItem})
Me.MenuStrip1.Location = New System.Drawing.Point(0, 0)
Me.MenuStrip1.Name = "MenuStrip1"
Me.MenuStrip1.Size = New System.Drawing.Size(953, 24)
Me.MenuStrip1.TabIndex = 2
Me.MenuStrip1.Text = "MenuStrip1"
'
'DateiToolStripMenuItem
'
Me.DateiToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BeendenToolStripMenuItem})
Me.DateiToolStripMenuItem.Name = "DateiToolStripMenuItem"
Me.DateiToolStripMenuItem.Size = New System.Drawing.Size(44, 20)
Me.DateiToolStripMenuItem.Text = "&Datei"
'
'BeendenToolStripMenuItem
'
Me.BeendenToolStripMenuItem.Name = "BeendenToolStripMenuItem"
Me.BeendenToolStripMenuItem.Size = New System.Drawing.Size(117, 22)
Me.BeendenToolStripMenuItem.Text = "&Beenden"
'
'SplitContainer1
'
Me.SplitContainer1.Dock = System.Windows.Forms.DockStyle.Fill
Me.SplitContainer1.Location = New System.Drawing.Point(0, 49)
Me.SplitContainer1.Name = "SplitContainer1"
Me.SplitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal
'
'SplitContainer1.Panel1
'
Me.SplitContainer1.Panel1.Controls.Add(Me.SplitContainer2)
Me.SplitContainer1.Panel1.Controls.Add(Me.Panel1)
'
'SplitContainer1.Panel2
'
Me.SplitContainer1.Panel2.Controls.Add(Me.GrpBoxBottom)
Me.SplitContainer1.Size = New System.Drawing.Size(953, 466)
Me.SplitContainer1.SplitterDistance = 276
Me.SplitContainer1.TabIndex = 4
'
'SplitContainer2
'
Me.SplitContainer2.Dock = System.Windows.Forms.DockStyle.Fill
Me.SplitContainer2.Location = New System.Drawing.Point(0, 0)
Me.SplitContainer2.Name = "SplitContainer2"
'
'SplitContainer2.Panel1
'
Me.SplitContainer2.Panel1.Controls.Add(Me.GrpBoxLeft)
'
'SplitContainer2.Panel2
'
Me.SplitContainer2.Panel2.Controls.Add(Me.GrpBoxRight)
Me.SplitContainer2.Size = New System.Drawing.Size(953, 243)
Me.SplitContainer2.SplitterDistance = 467
Me.SplitContainer2.TabIndex = 1
'
'GrpBoxLeft
'
Me.GrpBoxLeft.Controls.Add(Me.C1DatenLeft)
Me.GrpBoxLeft.Dock = System.Windows.Forms.DockStyle.Fill
Me.GrpBoxLeft.Location = New System.Drawing.Point(0, 0)
Me.GrpBoxLeft.Name = "GrpBoxLeft"
Me.GrpBoxLeft.Size = New System.Drawing.Size(467, 243)
Me.GrpBoxLeft.TabIndex = 0
Me.GrpBoxLeft.TabStop = False
Me.GrpBoxLeft.Text = "GroupBox1"
'
'C1DatenLeft
'
Me.C1DatenLeft.AlternatingRows = True
Me.C1DatenLeft.Dock = System.Windows.Forms.DockStyle.Fill
Me.C1DatenLeft.FilterBar = True
Me.C1DatenLeft.GroupByCaption = "Drag a column header here to group by that column"
Me.C1DatenLeft.Images.Add(CType(resources.GetObject("C1DatenLeft.Images"), System.Drawing.Image))
Me.C1DatenLeft.Location = New System.Drawing.Point(3, 16)
Me.C1DatenLeft.Name = "C1DatenLeft"
Me.C1DatenLeft.PreviewInfo.Location = New System.Drawing.Point(0, 0)
Me.C1DatenLeft.PreviewInfo.Size = New System.Drawing.Size(0, 0)
Me.C1DatenLeft.PreviewInfo.ZoomFactor = 75
Me.C1DatenLeft.PrintInfo.PageSettings = CType(resources.GetObject("C1DatenLeft.PrintInfo.PageSettings"), System.Drawing.Printing.PageSettings)
Me.C1DatenLeft.Size = New System.Drawing.Size(461, 224)
Me.C1DatenLeft.TabIndex = 4
Me.C1DatenLeft.Text = "C1TrueDBGrid1"
Me.C1DatenLeft.PropBag = resources.GetString("C1DatenLeft.PropBag")
'
'GrpBoxRight
'
Me.GrpBoxRight.Controls.Add(Me.C1DatenRight)
Me.GrpBoxRight.Dock = System.Windows.Forms.DockStyle.Fill
Me.GrpBoxRight.Location = New System.Drawing.Point(0, 0)
Me.GrpBoxRight.Name = "GrpBoxRight"
Me.GrpBoxRight.Size = New System.Drawing.Size(482, 243)
Me.GrpBoxRight.TabIndex = 1
Me.GrpBoxRight.TabStop = False
Me.GrpBoxRight.Text = "GroupBox1"
'
'C1DatenRight
'
Me.C1DatenRight.AlternatingRows = True
Me.C1DatenRight.Dock = System.Windows.Forms.DockStyle.Fill
Me.C1DatenRight.FilterBar = True
Me.C1DatenRight.GroupByCaption = "Drag a column header here to group by that column"
Me.C1DatenRight.Images.Add(CType(resources.GetObject("C1DatenRight.Images"), System.Drawing.Image))
Me.C1DatenRight.Location = New System.Drawing.Point(3, 16)
Me.C1DatenRight.Name = "C1DatenRight"
Me.C1DatenRight.PreviewInfo.Location = New System.Drawing.Point(0, 0)
Me.C1DatenRight.PreviewInfo.Size = New System.Drawing.Size(0, 0)
Me.C1DatenRight.PreviewInfo.ZoomFactor = 75
Me.C1DatenRight.PrintInfo.PageSettings = CType(resources.GetObject("C1DatenRight.PrintInfo.PageSettings"), System.Drawing.Printing.PageSettings)
Me.C1DatenRight.Size = New System.Drawing.Size(476, 224)
Me.C1DatenRight.TabIndex = 4
Me.C1DatenRight.Text = "C1TrueDBGrid1"
Me.C1DatenRight.PropBag = resources.GetString("C1DatenRight.PropBag")
'
'Panel1
'
Me.Panel1.Controls.Add(Me.BtnFocusRight)
Me.Panel1.Controls.Add(Me.BtnFocusLeft)
Me.Panel1.Controls.Add(Me.BtnVerbinden)
Me.Panel1.Dock = System.Windows.Forms.DockStyle.Bottom
Me.Panel1.Location = New System.Drawing.Point(0, 243)
Me.Panel1.Name = "Panel1"
Me.Panel1.Size = New System.Drawing.Size(953, 33)
Me.Panel1.TabIndex = 0
'
'BtnFocusRight
'
Me.BtnFocusRight.ImageIndex = 2
Me.BtnFocusRight.ImageList = Me.ImageList1
Me.BtnFocusRight.Location = New System.Drawing.Point(920, 3)
Me.BtnFocusRight.Name = "BtnFocusRight"
Me.BtnFocusRight.Size = New System.Drawing.Size(30, 23)
Me.BtnFocusRight.TabIndex = 2
Me.BtnFocusRight.UseVisualStyleBackColor = True
'
'ImageList1
'
Me.ImageList1.ImageStream = CType(resources.GetObject("ImageList1.ImageStream"), System.Windows.Forms.ImageListStreamer)
Me.ImageList1.TransparentColor = System.Drawing.Color.Transparent
Me.ImageList1.Images.SetKeyName(0, "Kette3.ico")
Me.ImageList1.Images.SetKeyName(1, "Haken1.ico")
Me.ImageList1.Images.SetKeyName(2, "Haken2.ico")
'
'BtnFocusLeft
'
Me.BtnFocusLeft.ImageIndex = 1
Me.BtnFocusLeft.ImageList = Me.ImageList1
Me.BtnFocusLeft.Location = New System.Drawing.Point(6, 4)
Me.BtnFocusLeft.Name = "BtnFocusLeft"
Me.BtnFocusLeft.Size = New System.Drawing.Size(30, 23)
Me.BtnFocusLeft.TabIndex = 1
Me.BtnFocusLeft.UseVisualStyleBackColor = True
'
'BtnVerbinden
'
Me.BtnVerbinden.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
Me.BtnVerbinden.ImageIndex = 0
Me.BtnVerbinden.ImageList = Me.ImageList1
Me.BtnVerbinden.Location = New System.Drawing.Point(430, 4)
Me.BtnVerbinden.Name = "BtnVerbinden"
Me.BtnVerbinden.Size = New System.Drawing.Size(84, 23)
Me.BtnVerbinden.TabIndex = 0
Me.BtnVerbinden.Text = "Verbinden"
Me.BtnVerbinden.TextAlign = System.Drawing.ContentAlignment.MiddleRight
Me.BtnVerbinden.UseVisualStyleBackColor = True
'
'GrpBoxBottom
'
Me.GrpBoxBottom.Controls.Add(Me.C1DatenBottom)
Me.GrpBoxBottom.Dock = System.Windows.Forms.DockStyle.Fill
Me.GrpBoxBottom.Location = New System.Drawing.Point(0, 0)
Me.GrpBoxBottom.Name = "GrpBoxBottom"
Me.GrpBoxBottom.Size = New System.Drawing.Size(953, 186)
Me.GrpBoxBottom.TabIndex = 2
Me.GrpBoxBottom.TabStop = False
Me.GrpBoxBottom.Text = "GroupBox1"
'
'C1DatenBottom
'
Me.C1DatenBottom.AlternatingRows = True
Me.C1DatenBottom.CellTips = C1.Win.C1TrueDBGrid.CellTipEnum.Floating
Me.C1DatenBottom.Dock = System.Windows.Forms.DockStyle.Fill
Me.C1DatenBottom.FilterBar = True
Me.C1DatenBottom.GroupByCaption = "Drag a column header here to group by that column"
Me.C1DatenBottom.Images.Add(CType(resources.GetObject("C1DatenBottom.Images"), System.Drawing.Image))
Me.C1DatenBottom.Location = New System.Drawing.Point(3, 16)
Me.C1DatenBottom.Name = "C1DatenBottom"
Me.C1DatenBottom.PreviewInfo.Location = New System.Drawing.Point(0, 0)
Me.C1DatenBottom.PreviewInfo.Size = New System.Drawing.Size(0, 0)
Me.C1DatenBottom.PreviewInfo.ZoomFactor = 75
Me.C1DatenBottom.PrintInfo.PageSettings = CType(resources.GetObject("C1DatenBottom.PrintInfo.PageSettings"), System.Drawing.Printing.PageSettings)
Me.C1DatenBottom.Size = New System.Drawing.Size(947, 167)
Me.C1DatenBottom.TabAction = C1.Win.C1TrueDBGrid.TabActionEnum.ColumnNavigation
Me.C1DatenBottom.TabIndex = 4
Me.C1DatenBottom.Text = "C1TrueDBGrid1"
Me.C1DatenBottom.PropBag = resources.GetString("C1DatenBottom.PropBag")
'
'frmVerbindungEditor
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(953, 515)
Me.Controls.Add(Me.SplitContainer1)
Me.Controls.Add(Me.ToolStrip1)
Me.Controls.Add(Me.MenuStrip1)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.Name = "frmVerbindungEditor"
Me.Text = "VerbindungEditor"
Me.ToolStrip1.ResumeLayout(False)
Me.ToolStrip1.PerformLayout()
Me.MenuStrip1.ResumeLayout(False)
Me.MenuStrip1.PerformLayout()
Me.SplitContainer1.Panel1.ResumeLayout(False)
Me.SplitContainer1.Panel2.ResumeLayout(False)
Me.SplitContainer1.ResumeLayout(False)
Me.SplitContainer2.Panel1.ResumeLayout(False)
Me.SplitContainer2.Panel2.ResumeLayout(False)
Me.SplitContainer2.ResumeLayout(False)
Me.GrpBoxLeft.ResumeLayout(False)
CType(Me.C1DatenLeft, System.ComponentModel.ISupportInitialize).EndInit()
Me.GrpBoxRight.ResumeLayout(False)
CType(Me.C1DatenRight, System.ComponentModel.ISupportInitialize).EndInit()
Me.Panel1.ResumeLayout(False)
Me.GrpBoxBottom.ResumeLayout(False)
CType(Me.C1DatenBottom, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents ToolStrip1 As System.Windows.Forms.ToolStrip
Friend WithEvents TSBtnQuit As System.Windows.Forms.ToolStripButton
Friend WithEvents MenuStrip1 As System.Windows.Forms.MenuStrip
Friend WithEvents DateiToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents BeendenToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
Friend WithEvents SplitContainer1 As System.Windows.Forms.SplitContainer
Friend WithEvents SplitContainer2 As System.Windows.Forms.SplitContainer
Friend WithEvents Panel1 As System.Windows.Forms.Panel
Friend WithEvents GrpBoxLeft As System.Windows.Forms.GroupBox
Friend WithEvents GrpBoxRight As System.Windows.Forms.GroupBox
Friend WithEvents GrpBoxBottom As System.Windows.Forms.GroupBox
Friend WithEvents BtnVerbinden As System.Windows.Forms.Button
Friend WithEvents ImageList1 As System.Windows.Forms.ImageList
Friend WithEvents BtnFocusRight As System.Windows.Forms.Button
Friend WithEvents BtnFocusLeft As System.Windows.Forms.Button
Friend WithEvents TSBtnSave As System.Windows.Forms.ToolStripButton
Friend WithEvents C1DatenLeft As C1.Win.C1TrueDBGrid.C1TrueDBGrid
Friend WithEvents C1DatenRight As C1.Win.C1TrueDBGrid.C1TrueDBGrid
Friend WithEvents C1DatenBottom As C1.Win.C1TrueDBGrid.C1TrueDBGrid
End Class

View File

@@ -0,0 +1,321 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="ToolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>227, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="TSBtnQuit.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAKNJREFUOE+VkwEO
wCAIA93PeZo/cyKiiMDYEmNC7FGpe4r9NaeeLjcAuFZXjxp+tVZs4jY6xFoIQCALwMR1QHYkVyTGXQNk
YQHQrhRJiAS00g/OwrET4OysHZDYWn1IGQet4EBCQOwAsyUIxWJcoYzYcHkzIMjOVQ1xw6MUGDJ2zjkz
A+t5Xg6sKMOXyFfyHKgru//IjHGnkBUycb2Dv8IF+BK+MTpb49UVguoAAAAASUVORK5CYII=
</value>
</data>
<data name="TSBtnSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAF5JREFUOE9jPHDg
wH8GSgDUAJAhJGOwXpgBDQ0QA0B8fBimBk6TYwDMtWS7ANm1ZHlhEBsAcxq+KAWpwekFmCQxNNZoJMYF
II14XYDL+bDENUgNIDdDwZMyoQyETx4A+Fj5YOUZcUAAAAAASUVORK5CYII=
</value>
</data>
<metadata name="MenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>329, 17</value>
</metadata>
<data name="C1DatenLeft.Images" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAADdJREFUKFNjYMAE
/7GIgYWQJXCxURTCFOE1ESSJoQAmiI9GcSayQqzuR3cLVithOvH6DpsisBgAoKoc5C8W7oEAAAAASUVO
RK5CYII=
</value>
</data>
<data name="C1DatenLeft.PrintInfo.PageSettings" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj0yLjAuMC4wLCBDdWx0
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACRTeXN0ZW0uRHJh
d2luZy5QcmludGluZy5QYWdlU2V0dGluZ3MHAAAAD3ByaW50ZXJTZXR0aW5ncwVjb2xvcglwYXBlclNp
emULcGFwZXJTb3VyY2URcHJpbnRlclJlc29sdXRpb24JbGFuZHNjYXBlB21hcmdpbnMEBAQEBAQEJ1N5
c3RlbS5EcmF3aW5nLlByaW50aW5nLlByaW50ZXJTZXR0aW5ncwIAAAAgU3lzdGVtLkRyYXdpbmcuUHJp
bnRpbmcuVHJpU3RhdGUCAAAAIVN5c3RlbS5EcmF3aW5nLlByaW50aW5nLlBhcGVyU2l6ZQIAAAAjU3lz
dGVtLkRyYXdpbmcuUHJpbnRpbmcuUGFwZXJTb3VyY2UCAAAAKVN5c3RlbS5EcmF3aW5nLlByaW50aW5n
LlByaW50ZXJSZXNvbHV0aW9uAgAAACBTeXN0ZW0uRHJhd2luZy5QcmludGluZy5UcmlTdGF0ZQIAAAAf
U3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuTWFyZ2lucwIAAAACAAAACQMAAAAF/P///yBTeXN0ZW0uRHJh
d2luZy5QcmludGluZy5UcmlTdGF0ZQEAAAAFdmFsdWUAAgIAAAAACgoKAfv////8////AAkGAAAABQMA
AAAnU3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuUHJpbnRlclNldHRpbmdzEgAAAAtwcmludGVyTmFtZQpk
cml2ZXJOYW1lCm91dHB1dFBvcnQLcHJpbnRUb0ZpbGUUcHJpbnREaWFsb2dEaXNwbGF5ZWQKZXh0cmFi
eXRlcwlleHRyYWluZm8GY29waWVzBmR1cGxleAdjb2xsYXRlE2RlZmF1bHRQYWdlU2V0dGluZ3MIZnJv
bVBhZ2UGdG9QYWdlB21heFBhZ2UHbWluUGFnZQpwcmludFJhbmdlDGRldm1vZGVieXRlcw1jYWNoZWRE
ZXZtb2RlAQEBAAAABwAEBAQAAAAABAAHAQEHAgceU3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuRHVwbGV4
AgAAACBTeXN0ZW0uRHJhd2luZy5QcmludGluZy5UcmlTdGF0ZQIAAAAkU3lzdGVtLkRyYXdpbmcuUHJp
bnRpbmcuUGFnZVNldHRpbmdzAgAAAAgICAgiU3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuUHJpbnRSYW5n
ZQIAAAAHAgIAAAAKBgcAAAAACQcAAAAAAAAACv//Bfj///8eU3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcu
RHVwbGV4AQAAAAd2YWx1ZV9fAAgCAAAA/////wH3/////P///wAJCgAAAAAAAAAAAAAADycAAAAAAAAF
9f///yJTeXN0ZW0uRHJhd2luZy5QcmludGluZy5QcmludFJhbmdlAQAAAAd2YWx1ZV9fAAgCAAAAAAAA
AAAACgUGAAAAH1N5c3RlbS5EcmF3aW5nLlByaW50aW5nLk1hcmdpbnMEAAAABGxlZnQFcmlnaHQDdG9w
BmJvdHRvbQAAAAAICAgIAgAAAGQAAABkAAAAZAAAAGQAAAABCgAAAAEAAAAJAwAAAAHz/////P///wAK
CgoB8v////z///8ACQ8AAAABDwAAAAYAAABkAAAAZAAAAGQAAABkAAAACw==
</value>
</data>
<data name="C1DatenLeft.PropBag" xml:space="preserve">
<value>&lt;?xml version="1.0"?&gt;&lt;Blob&gt;&lt;Styles type="C1.Win.C1TrueDBGrid.Design.ContextWrapper"&gt;&lt;Data&gt;Inactive{ForeColor:InactiveCaptionText;BackColor:InactiveCaption;}OddRow{BackColor:224, 224, 224;}Style5{}RecordSelector{AlignImage:Center;}Heading{Wrap:True;AlignVert:Center;Border:Flat,ControlDark,0, 1, 0, 1;ForeColor:ControlText;BackColor:Control;}Style6{}Group{BackColor:ControlDark;Border:None,,0, 0, 0, 0;AlignVert:Center;}Style8{}Footer{}Style13{}FilterWatermark{ForeColor:InfoText;BackColor:Info;}Style12{}HighlightRow{ForeColor:HighlightText;BackColor:Highlight;}Editor{}Style4{}FilterBar{ForeColor:Black;BackColor:255, 255, 192;}EvenRow{BackColor:White;}Style11{}Style16{}Style1{}Caption{AlignHorz:Center;}Selected{ForeColor:HighlightText;BackColor:Highlight;}Style9{}Style2{}Style14{}Normal{}Style7{}Style15{}Style10{AlignHorz:Near;}Style3{}&lt;/Data&gt;&lt;/Styles&gt;&lt;Splits&gt;&lt;C1.Win.C1TrueDBGrid.MergeView Name="" AlternatingRowStyle="True" CaptionHeight="17" ColumnCaptionHeight="17" ColumnFooterHeight="17" FilterBar="True" MarqueeStyle="DottedCellBorder" RecordSelectorWidth="16" DefRecSelWidth="16" VerticalScrollGroup="1" HorizontalScrollGroup="1"&gt;&lt;Height&gt;222&lt;/Height&gt;&lt;CaptionStyle parent="Style2" me="Style10" /&gt;&lt;EditorStyle parent="Editor" me="Style5" /&gt;&lt;EvenRowStyle parent="EvenRow" me="Style8" /&gt;&lt;FilterBarStyle parent="FilterBar" me="Style13" /&gt;&lt;FilterWatermarkStyle parent="FilterWatermark" me="Style14" /&gt;&lt;FooterStyle parent="Footer" me="Style3" /&gt;&lt;GroupStyle parent="Group" me="Style12" /&gt;&lt;HeadingStyle parent="Heading" me="Style2" /&gt;&lt;HighLightRowStyle parent="HighlightRow" me="Style7" /&gt;&lt;InactiveStyle parent="Inactive" me="Style4" /&gt;&lt;OddRowStyle parent="OddRow" me="Style9" /&gt;&lt;RecordSelectorStyle parent="RecordSelector" me="Style11" /&gt;&lt;SelectedStyle parent="Selected" me="Style6" /&gt;&lt;Style parent="Normal" me="Style1" /&gt;&lt;ClientRect&gt;0, 0, 459, 222&lt;/ClientRect&gt;&lt;BorderSide&gt;0&lt;/BorderSide&gt;&lt;/C1.Win.C1TrueDBGrid.MergeView&gt;&lt;/Splits&gt;&lt;NamedStyles&gt;&lt;Style parent="" me="Normal" /&gt;&lt;Style parent="Normal" me="Heading" /&gt;&lt;Style parent="Heading" me="Footer" /&gt;&lt;Style parent="Heading" me="Caption" /&gt;&lt;Style parent="Heading" me="Inactive" /&gt;&lt;Style parent="Normal" me="Selected" /&gt;&lt;Style parent="Normal" me="Editor" /&gt;&lt;Style parent="Normal" me="HighlightRow" /&gt;&lt;Style parent="Normal" me="EvenRow" /&gt;&lt;Style parent="Normal" me="OddRow" /&gt;&lt;Style parent="Heading" me="RecordSelector" /&gt;&lt;Style parent="Normal" me="FilterBar" /&gt;&lt;Style parent="FilterBar" me="FilterWatermark" /&gt;&lt;Style parent="Caption" me="Group" /&gt;&lt;/NamedStyles&gt;&lt;vertSplits&gt;1&lt;/vertSplits&gt;&lt;horzSplits&gt;1&lt;/horzSplits&gt;&lt;Layout&gt;None&lt;/Layout&gt;&lt;DefaultRecSelWidth&gt;16&lt;/DefaultRecSelWidth&gt;&lt;ClientArea&gt;0, 0, 459, 222&lt;/ClientArea&gt;&lt;PrintPageHeaderStyle parent="" me="Style15" /&gt;&lt;PrintPageFooterStyle parent="" me="Style16" /&gt;&lt;/Blob&gt;</value>
</data>
<data name="C1DatenRight.Images" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAADdJREFUKFNjYMAE
/7GIgYWQJXCxURTCFOE1ESSJoQAmiI9GcSayQqzuR3cLVithOvH6DpsisBgAoKoc5C8W7oEAAAAASUVO
RK5CYII=
</value>
</data>
<data name="C1DatenRight.PrintInfo.PageSettings" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj0yLjAuMC4wLCBDdWx0
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACRTeXN0ZW0uRHJh
d2luZy5QcmludGluZy5QYWdlU2V0dGluZ3MHAAAAD3ByaW50ZXJTZXR0aW5ncwVjb2xvcglwYXBlclNp
emULcGFwZXJTb3VyY2URcHJpbnRlclJlc29sdXRpb24JbGFuZHNjYXBlB21hcmdpbnMEBAQEBAQEJ1N5
c3RlbS5EcmF3aW5nLlByaW50aW5nLlByaW50ZXJTZXR0aW5ncwIAAAAgU3lzdGVtLkRyYXdpbmcuUHJp
bnRpbmcuVHJpU3RhdGUCAAAAIVN5c3RlbS5EcmF3aW5nLlByaW50aW5nLlBhcGVyU2l6ZQIAAAAjU3lz
dGVtLkRyYXdpbmcuUHJpbnRpbmcuUGFwZXJTb3VyY2UCAAAAKVN5c3RlbS5EcmF3aW5nLlByaW50aW5n
LlByaW50ZXJSZXNvbHV0aW9uAgAAACBTeXN0ZW0uRHJhd2luZy5QcmludGluZy5UcmlTdGF0ZQIAAAAf
U3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuTWFyZ2lucwIAAAACAAAACQMAAAAF/P///yBTeXN0ZW0uRHJh
d2luZy5QcmludGluZy5UcmlTdGF0ZQEAAAAFdmFsdWUAAgIAAAAACgoKAfv////8////AAkGAAAABQMA
AAAnU3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuUHJpbnRlclNldHRpbmdzEgAAAAtwcmludGVyTmFtZQpk
cml2ZXJOYW1lCm91dHB1dFBvcnQLcHJpbnRUb0ZpbGUUcHJpbnREaWFsb2dEaXNwbGF5ZWQKZXh0cmFi
eXRlcwlleHRyYWluZm8GY29waWVzBmR1cGxleAdjb2xsYXRlE2RlZmF1bHRQYWdlU2V0dGluZ3MIZnJv
bVBhZ2UGdG9QYWdlB21heFBhZ2UHbWluUGFnZQpwcmludFJhbmdlDGRldm1vZGVieXRlcw1jYWNoZWRE
ZXZtb2RlAQEBAAAABwAEBAQAAAAABAAHAQEHAgceU3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuRHVwbGV4
AgAAACBTeXN0ZW0uRHJhd2luZy5QcmludGluZy5UcmlTdGF0ZQIAAAAkU3lzdGVtLkRyYXdpbmcuUHJp
bnRpbmcuUGFnZVNldHRpbmdzAgAAAAgICAgiU3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuUHJpbnRSYW5n
ZQIAAAAHAgIAAAAKBgcAAAAACQcAAAAAAAAACv//Bfj///8eU3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcu
RHVwbGV4AQAAAAd2YWx1ZV9fAAgCAAAA/////wH3/////P///wAJCgAAAAAAAAAAAAAADycAAAAAAAAF
9f///yJTeXN0ZW0uRHJhd2luZy5QcmludGluZy5QcmludFJhbmdlAQAAAAd2YWx1ZV9fAAgCAAAAAAAA
AAAACgUGAAAAH1N5c3RlbS5EcmF3aW5nLlByaW50aW5nLk1hcmdpbnMEAAAABGxlZnQFcmlnaHQDdG9w
BmJvdHRvbQAAAAAICAgIAgAAAGQAAABkAAAAZAAAAGQAAAABCgAAAAEAAAAJAwAAAAHz/////P///wAK
CgoB8v////z///8ACQ8AAAABDwAAAAYAAABkAAAAZAAAAGQAAABkAAAACw==
</value>
</data>
<data name="C1DatenRight.PropBag" xml:space="preserve">
<value>&lt;?xml version="1.0"?&gt;&lt;Blob&gt;&lt;Styles type="C1.Win.C1TrueDBGrid.Design.ContextWrapper"&gt;&lt;Data&gt;Inactive{ForeColor:InactiveCaptionText;BackColor:InactiveCaption;}OddRow{BackColor:224, 224, 224;}Style5{}RecordSelector{AlignImage:Center;}Heading{Wrap:True;AlignVert:Center;Border:Flat,ControlDark,0, 1, 0, 1;ForeColor:ControlText;BackColor:Control;}Style6{}Group{BackColor:ControlDark;Border:None,,0, 0, 0, 0;AlignVert:Center;}Style8{}Footer{}Style13{}FilterWatermark{ForeColor:InfoText;BackColor:Info;}Style12{}HighlightRow{ForeColor:HighlightText;BackColor:Highlight;}Editor{}Style4{}FilterBar{ForeColor:Black;BackColor:255, 255, 192;}EvenRow{BackColor:White;}Style11{}Style16{}Style1{}Caption{AlignHorz:Center;}Selected{ForeColor:HighlightText;BackColor:Highlight;}Style9{}Style2{}Style14{}Normal{}Style7{}Style15{}Style10{AlignHorz:Near;}Style3{}&lt;/Data&gt;&lt;/Styles&gt;&lt;Splits&gt;&lt;C1.Win.C1TrueDBGrid.MergeView Name="" AlternatingRowStyle="True" CaptionHeight="17" ColumnCaptionHeight="17" ColumnFooterHeight="17" FilterBar="True" MarqueeStyle="DottedCellBorder" RecordSelectorWidth="16" DefRecSelWidth="16" VerticalScrollGroup="1" HorizontalScrollGroup="1"&gt;&lt;Height&gt;222&lt;/Height&gt;&lt;CaptionStyle parent="Style2" me="Style10" /&gt;&lt;EditorStyle parent="Editor" me="Style5" /&gt;&lt;EvenRowStyle parent="EvenRow" me="Style8" /&gt;&lt;FilterBarStyle parent="FilterBar" me="Style13" /&gt;&lt;FilterWatermarkStyle parent="FilterWatermark" me="Style14" /&gt;&lt;FooterStyle parent="Footer" me="Style3" /&gt;&lt;GroupStyle parent="Group" me="Style12" /&gt;&lt;HeadingStyle parent="Heading" me="Style2" /&gt;&lt;HighLightRowStyle parent="HighlightRow" me="Style7" /&gt;&lt;InactiveStyle parent="Inactive" me="Style4" /&gt;&lt;OddRowStyle parent="OddRow" me="Style9" /&gt;&lt;RecordSelectorStyle parent="RecordSelector" me="Style11" /&gt;&lt;SelectedStyle parent="Selected" me="Style6" /&gt;&lt;Style parent="Normal" me="Style1" /&gt;&lt;ClientRect&gt;0, 0, 474, 222&lt;/ClientRect&gt;&lt;BorderSide&gt;0&lt;/BorderSide&gt;&lt;/C1.Win.C1TrueDBGrid.MergeView&gt;&lt;/Splits&gt;&lt;NamedStyles&gt;&lt;Style parent="" me="Normal" /&gt;&lt;Style parent="Normal" me="Heading" /&gt;&lt;Style parent="Heading" me="Footer" /&gt;&lt;Style parent="Heading" me="Caption" /&gt;&lt;Style parent="Heading" me="Inactive" /&gt;&lt;Style parent="Normal" me="Selected" /&gt;&lt;Style parent="Normal" me="Editor" /&gt;&lt;Style parent="Normal" me="HighlightRow" /&gt;&lt;Style parent="Normal" me="EvenRow" /&gt;&lt;Style parent="Normal" me="OddRow" /&gt;&lt;Style parent="Heading" me="RecordSelector" /&gt;&lt;Style parent="Normal" me="FilterBar" /&gt;&lt;Style parent="FilterBar" me="FilterWatermark" /&gt;&lt;Style parent="Caption" me="Group" /&gt;&lt;/NamedStyles&gt;&lt;vertSplits&gt;1&lt;/vertSplits&gt;&lt;horzSplits&gt;1&lt;/horzSplits&gt;&lt;Layout&gt;None&lt;/Layout&gt;&lt;DefaultRecSelWidth&gt;16&lt;/DefaultRecSelWidth&gt;&lt;ClientArea&gt;0, 0, 474, 222&lt;/ClientArea&gt;&lt;PrintPageHeaderStyle parent="" me="Style15" /&gt;&lt;PrintPageFooterStyle parent="" me="Style16" /&gt;&lt;/Blob&gt;</value>
</data>
<metadata name="ImageList1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>437, 17</value>
</metadata>
<data name="ImageList1.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAA6
CAAAAk1TRnQBSQFMAgEBAwEAAQQBAAEEAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/6IADewzAA3sMwAC7AkA
AuwzAALsAwAB7AUAAuwUAAUHAgAFBxMAAuwCAAPsBAAC7BMAAgcKAAIHEgAC7AEABewDAALsEwABBwMA
BgcDAAEHEgAC7AEAAuwBAAPsAgAC7BMAAgcKAAIHEgAC7AEAAewDAAPsAQAC7BQABQcCAAUHEwAC7AYA
AuwBAALsMwAC7AcAAewBAALsMwAC7AkAAuwzAA3sMwAN7FIAAUIBTQE+BwABPgMAASgDAAFAAwABEAMA
AQEBAAEBBQABgBcAA/8BAAb/AgAG/wIAAv8BgAEDAYABAwIAAv8BgAEDAYABAwIAAv8BnwHzAZ8B8wIA
AcEBgwGdAfMBnQHzAgABgAEBAZgB8wGYAfMEAAGQAXMBkAFzAgABEAEIAZIBMwGSATMEAAGXARMBlwET
AgABgAEBAZ8BkwGfAZMCAAHBAYMBnwHTAZ8B0wIAAv8BnwHzAZ8B8wIAAv8BgAEDAYABAwIAAv8BgAED
AYABAwIABv8CAAs=
</value>
</data>
<data name="C1DatenBottom.Images" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAADdJREFUKFNjYMAE
/7GIgYWQJXCxURTCFOE1ESSJoQAmiI9GcSayQqzuR3cLVithOvH6DpsisBgAoKoc5C8W7oEAAAAASUVO
RK5CYII=
</value>
</data>
<data name="C1DatenBottom.PrintInfo.PageSettings" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj0yLjAuMC4wLCBDdWx0
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACRTeXN0ZW0uRHJh
d2luZy5QcmludGluZy5QYWdlU2V0dGluZ3MHAAAAD3ByaW50ZXJTZXR0aW5ncwVjb2xvcglwYXBlclNp
emULcGFwZXJTb3VyY2URcHJpbnRlclJlc29sdXRpb24JbGFuZHNjYXBlB21hcmdpbnMEBAQEBAQEJ1N5
c3RlbS5EcmF3aW5nLlByaW50aW5nLlByaW50ZXJTZXR0aW5ncwIAAAAgU3lzdGVtLkRyYXdpbmcuUHJp
bnRpbmcuVHJpU3RhdGUCAAAAIVN5c3RlbS5EcmF3aW5nLlByaW50aW5nLlBhcGVyU2l6ZQIAAAAjU3lz
dGVtLkRyYXdpbmcuUHJpbnRpbmcuUGFwZXJTb3VyY2UCAAAAKVN5c3RlbS5EcmF3aW5nLlByaW50aW5n
LlByaW50ZXJSZXNvbHV0aW9uAgAAACBTeXN0ZW0uRHJhd2luZy5QcmludGluZy5UcmlTdGF0ZQIAAAAf
U3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuTWFyZ2lucwIAAAACAAAACQMAAAAF/P///yBTeXN0ZW0uRHJh
d2luZy5QcmludGluZy5UcmlTdGF0ZQEAAAAFdmFsdWUAAgIAAAAACgoKAfv////8////AAkGAAAABQMA
AAAnU3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuUHJpbnRlclNldHRpbmdzEgAAAAtwcmludGVyTmFtZQpk
cml2ZXJOYW1lCm91dHB1dFBvcnQLcHJpbnRUb0ZpbGUUcHJpbnREaWFsb2dEaXNwbGF5ZWQKZXh0cmFi
eXRlcwlleHRyYWluZm8GY29waWVzBmR1cGxleAdjb2xsYXRlE2RlZmF1bHRQYWdlU2V0dGluZ3MIZnJv
bVBhZ2UGdG9QYWdlB21heFBhZ2UHbWluUGFnZQpwcmludFJhbmdlDGRldm1vZGVieXRlcw1jYWNoZWRE
ZXZtb2RlAQEBAAAABwAEBAQAAAAABAAHAQEHAgceU3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuRHVwbGV4
AgAAACBTeXN0ZW0uRHJhd2luZy5QcmludGluZy5UcmlTdGF0ZQIAAAAkU3lzdGVtLkRyYXdpbmcuUHJp
bnRpbmcuUGFnZVNldHRpbmdzAgAAAAgICAgiU3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuUHJpbnRSYW5n
ZQIAAAAHAgIAAAAKBgcAAAAACQcAAAAAAAAACv//Bfj///8eU3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcu
RHVwbGV4AQAAAAd2YWx1ZV9fAAgCAAAA/////wH3/////P///wAJCgAAAAAAAAAAAAAADycAAAAAAAAF
9f///yJTeXN0ZW0uRHJhd2luZy5QcmludGluZy5QcmludFJhbmdlAQAAAAd2YWx1ZV9fAAgCAAAAAAAA
AAAACgUGAAAAH1N5c3RlbS5EcmF3aW5nLlByaW50aW5nLk1hcmdpbnMEAAAABGxlZnQFcmlnaHQDdG9w
BmJvdHRvbQAAAAAICAgIAgAAAGQAAABkAAAAZAAAAGQAAAABCgAAAAEAAAAJAwAAAAHz/////P///wAK
CgoB8v////z///8ACQ8AAAABDwAAAAYAAABkAAAAZAAAAGQAAABkAAAACw==
</value>
</data>
<data name="C1DatenBottom.PropBag" xml:space="preserve">
<value>&lt;?xml version="1.0"?&gt;&lt;Blob&gt;&lt;Styles type="C1.Win.C1TrueDBGrid.Design.ContextWrapper"&gt;&lt;Data&gt;Inactive{ForeColor:InactiveCaptionText;BackColor:InactiveCaption;}OddRow{BackColor:224, 224, 224;}Style5{}RecordSelector{AlignImage:Center;}Heading{Wrap:True;AlignVert:Center;Border:Flat,ControlDark,0, 1, 0, 1;ForeColor:ControlText;BackColor:Control;}Style6{}Group{BackColor:ControlDark;Border:None,,0, 0, 0, 0;AlignVert:Center;}Style8{}Footer{}Style13{}FilterWatermark{ForeColor:InfoText;BackColor:Info;}Style12{}HighlightRow{ForeColor:HighlightText;BackColor:Highlight;}Editor{}Style4{}FilterBar{ForeColor:Black;BackColor:255, 255, 192;}EvenRow{BackColor:White;}Style11{}Style16{}Style1{}Caption{AlignHorz:Center;}Selected{ForeColor:HighlightText;BackColor:Highlight;}Style9{}Style2{}Style14{}Normal{}Style7{}Style15{}Style10{AlignHorz:Near;}Style3{}&lt;/Data&gt;&lt;/Styles&gt;&lt;Splits&gt;&lt;C1.Win.C1TrueDBGrid.MergeView Name="" AlternatingRowStyle="True" CaptionHeight="17" ColumnCaptionHeight="17" ColumnFooterHeight="17" FilterBar="True" MarqueeStyle="DottedCellBorder" RecordSelectorWidth="16" DefRecSelWidth="16" VerticalScrollGroup="1" HorizontalScrollGroup="1"&gt;&lt;Height&gt;165&lt;/Height&gt;&lt;CaptionStyle parent="Style2" me="Style10" /&gt;&lt;EditorStyle parent="Editor" me="Style5" /&gt;&lt;EvenRowStyle parent="EvenRow" me="Style8" /&gt;&lt;FilterBarStyle parent="FilterBar" me="Style13" /&gt;&lt;FilterWatermarkStyle parent="FilterWatermark" me="Style14" /&gt;&lt;FooterStyle parent="Footer" me="Style3" /&gt;&lt;GroupStyle parent="Group" me="Style12" /&gt;&lt;HeadingStyle parent="Heading" me="Style2" /&gt;&lt;HighLightRowStyle parent="HighlightRow" me="Style7" /&gt;&lt;InactiveStyle parent="Inactive" me="Style4" /&gt;&lt;OddRowStyle parent="OddRow" me="Style9" /&gt;&lt;RecordSelectorStyle parent="RecordSelector" me="Style11" /&gt;&lt;SelectedStyle parent="Selected" me="Style6" /&gt;&lt;Style parent="Normal" me="Style1" /&gt;&lt;ClientRect&gt;0, 0, 945, 165&lt;/ClientRect&gt;&lt;BorderSide&gt;0&lt;/BorderSide&gt;&lt;/C1.Win.C1TrueDBGrid.MergeView&gt;&lt;/Splits&gt;&lt;NamedStyles&gt;&lt;Style parent="" me="Normal" /&gt;&lt;Style parent="Normal" me="Heading" /&gt;&lt;Style parent="Heading" me="Footer" /&gt;&lt;Style parent="Heading" me="Caption" /&gt;&lt;Style parent="Heading" me="Inactive" /&gt;&lt;Style parent="Normal" me="Selected" /&gt;&lt;Style parent="Normal" me="Editor" /&gt;&lt;Style parent="Normal" me="HighlightRow" /&gt;&lt;Style parent="Normal" me="EvenRow" /&gt;&lt;Style parent="Normal" me="OddRow" /&gt;&lt;Style parent="Heading" me="RecordSelector" /&gt;&lt;Style parent="Normal" me="FilterBar" /&gt;&lt;Style parent="FilterBar" me="FilterWatermark" /&gt;&lt;Style parent="Caption" me="Group" /&gt;&lt;/NamedStyles&gt;&lt;vertSplits&gt;1&lt;/vertSplits&gt;&lt;horzSplits&gt;1&lt;/horzSplits&gt;&lt;Layout&gt;None&lt;/Layout&gt;&lt;DefaultRecSelWidth&gt;16&lt;/DefaultRecSelWidth&gt;&lt;ClientArea&gt;0, 0, 945, 165&lt;/ClientArea&gt;&lt;PrintPageHeaderStyle parent="" me="Style15" /&gt;&lt;PrintPageFooterStyle parent="" me="Style16" /&gt;&lt;/Blob&gt;</value>
</data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAICAEAAAAAADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAACIiIiIiAAAiIiIiIgAAAAAiIiIiIgAAIiIiIiIAAAAiIgAAAAAAAAA
AAAAiIgAAIiIAAAAAAAAAAAAAIiIAACIAAAAiIiIiIiIAAAAiAAAiAAAAIiIiIiIiAAAAIgAAIiIAAAA
AAAAAAAAAIiIAACIiAAAAAAAAAAAAACIiAAAAIiIiIiIAACIiIiIiAAAAACIiIiIiAAAiIiIiIgAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////
////////////////////////8APAD/ADwA/AAAADwAAAAwAAAAAAAAAAAwAAwAMAAMAAAAAAAAAAAMAA
AAPAAAAD8APAD/ADwA///////////////////////////////////////////w==
</value>
</data>
</root>

View File

@@ -0,0 +1,316 @@
''' <summary>
''' Verbindungseditor: Verbindet 2 Domain-Tables in einer dritten Tabelle.
''' </summary>
''' <remarks></remarks>
'''<seealso cref="T:Vertragsverwaltung.TKB.VV.Sysadmin.DomainTable"></seealso>
Public Class frmVerbindungEditor
#Region "Deklarationen"
Dim Fokus As Integer = 1
Dim Domaintableleft As Sysadmin.DomainTable
Dim Domaintableright As Sysadmin.DomainTable
Dim domaintablebottom As Sysadmin.DomainTable
Dim SpaltenTitel As New Utils.Tabellenspalte
Dim SysadminfunktionNr As Integer
Dim TablenameLeft As String
Dim TablenameRight As String
Dim TablenameBottom As String
Dim first As Boolean = True
Dim msg As New Utils.MyMessage
#End Region
''' <summary>
''' Laden der linken und rechten Tabelle
''' </summary>
''' <param name="TableLeft"></param>
''' <param name="TableRight"></param>
''' <param name="TableBottom"></param>
''' <param name="SysadminfnktNr"></param>
''' <remarks></remarks>
Public Sub New(ByVal TableLeft As String, ByVal TableRight As String, ByVal TableBottom As String, ByVal SysadminfnktNr As Integer)
InitializeComponent()
Me.Domaintableleft = New Sysadmin.DomainTable(TableLeft)
Me.Domaintableright = New Sysadmin.DomainTable(TableRight)
Me.TablenameLeft = TableLeft
Me.TablenameRight = TableRight
Me.TablenameBottom = TableBottom
Me.SysadminfunktionNr = SysadminfnktNr
End Sub
''' <summary>
''' Laden sämlticher Tabellen
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub FrmVerbindungEditor_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.C1DatenLeft.DataSource = Domaintableleft.Tabledata
Me.C1DatenLeft.DataMember = Domaintableleft.Tabledata.Tables(0).TableName
Me.C1DatenRight.DataSource = Domaintableright.Tabledata
Me.C1DatenRight.DataMember = Domaintableright.Tabledata.Tables(0).TableName
SpaltenTitel.Spaltentitel_aktualisieren(Me.C1DatenLeft, TablenameLeft, Me.Domaintableleft.Tabledata)
SpaltenTitel.Spaltentitel_aktualisieren(Me.C1DatenRight, TablenameRight, Me.Domaintableright.Tabledata)
Refresh_Bottomtable()
Me.C1DatenLeft.AllowAddNew = False
Me.C1DatenLeft.AllowDelete = False
Me.C1DatenLeft.AllowUpdate = False
Me.C1DatenRight.AllowAddNew = False
Me.C1DatenRight.AllowDelete = False
Me.C1DatenRight.AllowUpdate = False
Me.C1DatenBottom.AllowAddNew = False
Me.C1DatenBottom.AllowDelete = False
Me.GrpBoxLeft.Text = Me.TablenameLeft
Me.GrpBoxRight.Text = Me.TablenameRight
Me.GrpBoxBottom.Text = Me.TablenameBottom
first = False
End Sub
''' <summary>
''' Aktualiserung der Verbindungstabelle
''' </summary>
''' <remarks></remarks>
Private Sub Refresh_Bottomtable()
Try
check_changes()
Me.domaintablebottom.dispose()
Catch
End Try
Dim keyvalue As String = ""
If Fokus = 1 Then
keyvalue = Me.C1DatenLeft.Columns(0).Value
Else
keyvalue = Me.C1DatenRight.Columns(0).Value
End If
Me.domaintablebottom = New Sysadmin.DomainTable(Me.TablenameBottom, Fokus, keyvalue)
Me.C1DatenBottom.DataSource = domaintablebottom.Tabledata
Me.C1DatenBottom.DataMember = domaintablebottom.Tabledata.Tables(0).TableName
SpaltenTitel.Spaltentitel_aktualisieren(Me.C1DatenBottom, TablenameBottom, Me.domaintablebottom.Tabledata)
End Sub
''' <summary>
''' Linker Fokus-Knopf betätigt
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub BtnFocusLeft_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnFocusLeft.Click
Fokus = 1
Me.BtnFocusLeft.ImageIndex = 1
Me.BtnFocusRight.ImageIndex = 2
Refresh_Bottomtable()
End Sub
''' <summary>
''' Rechter Fokus-Knopf betätigt
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub BtnFocusRight_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnFocusRight.Click
Me.Fokus = 2
Me.BtnFocusRight.ImageIndex = 1
Me.BtnFocusLeft.ImageIndex = 2
Refresh_Bottomtable()
End Sub
''' <summary>
''' Prüfung, ob Verbindungstabelle geändert wurde.
''' </summary>
''' <remarks></remarks>
Private Sub check_changes()
If first Then Exit Sub
Dim msgres As MsgBoxResult
If Me.domaintablebottom.Tabledata.HasChanges Then
msgres = msg.Show_MessageYesNo(3)
If msgres = MsgBoxResult.Yes Then
Me.domaintablebottom.Save_Data()
End If
End If
End Sub
''' <summary>
''' Formular schliessen
''' </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 BeendenToolStripMenuItem.Click
check_changes()
Me.Close()
End Sub
''' <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
check_changes()
Me.Close()
End Sub
''' <summary>
''' Formular-Resize: Button Verbinden und Button Focus-Rechts neu positionieren
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub FrmVerbindungEditor_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
Me.BtnFocusRight.Left = Me.Width - (Me.BtnFocusRight.Width + 10)
Me.BtnVerbinden.Left = Me.SplitContainer2.Panel1.Width - (Me.BtnVerbinden.Width / 2)
End Sub
''' <summary>
''' Verbindungstabelle sichern
''' </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.domaintablebottom.Save_Data()
End Sub
''' <summary>
''' Nach Datenmutation der unteren Tabelle mutiert_am und mutierer nachführen
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub C1DatenBottom_AfterColUpdate(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.ColEventArgs) Handles C1DatenBottom.AfterColUpdate
Dim i As Integer
For i = 0 To Me.C1DatenBottom.Columns.Count - 1
If LCase(Me.C1DatenBottom.Columns(i).DataField) = "mutiert_am" Then Me.C1DatenBottom.Columns(i).Value = Now
If LCase(Me.C1DatenBottom.Columns(i).DataField) = "mutierer" Then Me.C1DatenBottom.Columns(i).Value = Globals.clsmitarbeiter.iMitarbeiternr.Value
Next
End Sub
''' <summary>
''' Doppelklick in linken Grid
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub C1DatenLeft_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles C1DatenLeft.DoubleClick
Try
Me.BtnVerbinden_Click(sender, e)
Catch
End Try
End Sub
''' <summary>
''' Linke Tabelle angeklickt
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub TBLeft_Click(ByVal sender As System.Object, ByVal e As C1.Win.C1TrueDBGrid.RowColChangeEventArgs) Handles C1DatenLeft.RowColChange
Try
check_changes()
Refresh_Bottomtable()
Catch
End Try
End Sub
''' <summary>
''' Doppelklick im rechten Grid
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub C1DatenRight_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles C1DatenRight.DoubleClick
Try
Me.BtnVerbinden_Click(sender, e)
Catch ex As Exception
End Try
End Sub
''' <summary>
''' Rechte Tabelle angeklickt
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub TBRight_Click(ByVal sender As System.Object, ByVal e As C1.Win.C1TrueDBGrid.RowColChangeEventArgs) Handles C1DatenRight.RowColChange
check_changes()
Refresh_Bottomtable()
End Sub
''' <summary>
''' Die linke und rechte Domain-Table in der unteren Tabelle verbinden.
''' Daten sichern und erneut laden
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub BtnVerbinden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnVerbinden.Click
check_changes()
Dim ileft As Integer = Me.C1DatenLeft.SelectedRows.Count
Dim iright As Integer = Me.C1DatenRight.SelectedRows.Count
Dim ic As Integer = 0
Dim Currentsel As Boolean
Dim colrows As C1.Win.C1TrueDBGrid.SelectedRowCollection
Dim keyvalueleft As Integer = 0
Dim Keyvalueright As Integer = 0
If (Me.Fokus = 1 And ileft > 1) Or (Me.Fokus = 2 And iright > 1) Then
Me.msg.show_standardmessage(4, MsgBoxStyle.Exclamation)
Exit Sub
End If
If Me.Fokus = 1 Then
ic = iright
colrows = Me.C1DatenRight.SelectedRows
End If
If Me.Fokus = 2 Then
ic = ileft
colrows = Me.C1DatenLeft.SelectedRows
End If
If ic = 0 Then
ic = ic + 1
Currentsel = True
End If
Dim i As Integer
For i = 0 To ic - 1
If Me.Fokus = 1 Then
keyvalueleft = Me.C1DatenLeft.Columns(0).Value
If Currentsel = True Then
Keyvalueright = Me.C1DatenRight.Columns(0).Value
Else
Keyvalueright = Me.C1DatenRight.Columns(0).CellValue(colrows(i))
End If
Else
Keyvalueright = Me.C1DatenRight.Columns(0).Value
If Currentsel = True Then
keyvalueleft = Me.C1DatenLeft.Columns(0).Value
Else
keyvalueleft = Me.C1DatenLeft.Columns(0).CellValue(colrows(i))
End If
End If
Next
Me.domaintablebottom.Insert_Bottom_Table(Me.Domaintableleft.Tabledata.Tables(0).Columns(0).ColumnName, keyvalueleft, Me.Domaintableright.Tabledata.Tables(0).Columns(0).ColumnName, Keyvalueright)
Me.domaintablebottom.Save_Data()
Me.Refresh_Bottomtable()
End Sub
''' <summary>
''' Anzeige allfälliger Cellen-Tips
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub C1DatenBottom_FetchCellTips(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.FetchCellTipsEventArgs) Handles C1DatenBottom.FetchCellTips
Dim ts As New Utils.Tabellenspalte
ts.Tabelle = Me.TablenameBottom
Try
ts.Feld = Me.C1DatenBottom.Columns(e.ColIndex).DataField.ToString
ts.getspalte()
e.CellTip = ts.TipText
Catch
End Try
ts = Nothing
End Sub
End Class