You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
375 lines
15 KiB
375 lines
15 KiB
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 |