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

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