Files
BEA/BEA - Kopie/Übersicht/frmUebersichtRE.vb
2021-04-20 07:44:06 +02:00

997 lines
41 KiB
VB.net

Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Imports System.Reflection
Public Class frmUebersichtRE
#Region "Deklarationen"
Dim Uebersicht As New clsUebersichtre
Dim KeyValue As Integer = -1
Dim TargetDBObject As String
Dim WithEvents evh As _Generic_Event_Handler.Generic_Event_Handler = Globals.Generic_Event_Handler
Dim Datenklasse As New _DataClass.DataClass
Dim sec As New Utils.MySecurity
Dim Change_Keys As Boolean = False
Dim WHandler As New clsWindowHandling
Dim WithEvents fneuebeziehung As _AllgMainObjekte.frmSetNeueBeziehung
Dim allNodes As List(Of TreeNode) = New List(Of TreeNode)()
Dim OnTreeRefresh As Boolean = False
Dim mymsg As New Utils.MyMessage
Dim Active_Node As TreeNode
Dim movecopy_sourcekey As Integer
Dim movecopy_grid As C1.Win.C1TrueDBGrid.C1TrueDBGrid
Dim instopmode As Boolean = False
Private ico As Icon
Private customCursor As Cursor
Dim onload As Boolean = False
Dim xpoint As Integer
Dim ypoint As Integer
#End Region
#Region "Form"
Private Sub frmUebersichtRE_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
If AllgMainObjekte1.isDirty Then
If MsgBox("Daten wurden verändert. Wollen Sie diese speichern?", MsgBoxStyle.Question + MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
Me.OnTreeRefresh = True
AllgMainObjekte1.Save_Data(False)
Me.OnTreeRefresh = False
Else
Me.AllgMainObjekte1.isDirty = False
End If
End If
End Sub
Private Sub frmUebersichtRE_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.onload = True
Try
movecopy_grid = Globals.MoveCopy_Grid
Catch ex As Exception
End Try
Refresh_Tree(Me.KeyValue)
sec.Set_Form_Security(Me)
If Me.tsbtnReadonly.Enabled = False Then
Me.TreeStruktur.AllowDrop = False
End If
Me.Cursor = Cursors.WaitCursor
Refresh_Tree(Me.KeyValue)
Me.Cursor = Cursors.Default
Me.WHandler.get_windowsize(1)
If WHandler.Width > 0 Then Me.Width = WHandler.Width
If WHandler.height > 0 Then Me.Height = WHandler.height
Me.WHandler.get_windowsize(11)
If WHandler.Width > 0 Then Me.SplitContainer1.SplitterDistance = WHandler.Width
Me.onload = False
Me.TreeStruktur.FullRowSelect = True
End Sub
Sub New()
' Dieser Aufruf ist für den Designer erforderlich.
InitializeComponent()
Datenklasse.Mitarbeiternr = Globals.clsmitarbeiter.iMitarbeiternr.Value
Datenklasse.ConnectionString = Globals.sConnectionString
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
End Sub
Sub New(Optional ByVal Keyvalue As Integer = -1)
InitializeComponent()
Me.KeyValue = Keyvalue
Datenklasse.Mitarbeiternr = Globals.clsmitarbeiter.iMitarbeiternr.Value
Datenklasse.ConnectionString = Globals.sConnectionString
End Sub
#End Region
#Region "Toolbar/Menu"
Private Sub TSBtnQuit_Click(sender As Object, e As EventArgs) Handles TSBtnQuit.Click
Me.Close()
End Sub
Private Sub SchliessenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SchliessenToolStripMenuItem.Click
Me.TSBtnQuit_Click(sender, e)
End Sub
Public Sub TSBtnSuche_Click(sender As Object, e As EventArgs) Handles TSBtnSuche.Click
If AllgMainObjekte1.isDirty Then
If MsgBox("Daten wurden verändert. Wollen Sie diese speichern?", MsgBoxStyle.Question + MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
Me.OnTreeRefresh = True
AllgMainObjekte1.Save_Data(False)
Me.OnTreeRefresh = False
Else
Me.AllgMainObjekte1.isDirty = False
End If
End If
Uebersicht.Init_Search()
Me.onload = True
Me.TreeStruktur.SelectedNode = Uebersicht.SearchNode(Me.TreeStruktur, Trim(Me.ToolStriptxtSuche.Text))
Me.onload = False
End Sub
Private Sub TSBtnNext_Click(sender As Object, e As EventArgs) Handles TSBtnNext.Click
If AllgMainObjekte1.isDirty Then
If MsgBox("Daten wurden verändert. Wollen Sie diese speichern?", MsgBoxStyle.Question + MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
Me.OnTreeRefresh = True
AllgMainObjekte1.Save_Data(False)
Me.OnTreeRefresh = False
Else
Me.AllgMainObjekte1.isDirty = False
End If
End If
Me.onload = True
Me.TreeStruktur.SelectedNode = Uebersicht.FindNextNode(Me.TreeStruktur)
Me.onload = False
End Sub
Private Sub ToolStriptxtSuche_KeyDown(sender As Object, e As KeyEventArgs) Handles ToolStriptxtSuche.KeyDown
If AllgMainObjekte1.isDirty Then
If MsgBox("Daten wurden verändert. Wollen Sie diese speichern?", MsgBoxStyle.Question + MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
Me.OnTreeRefresh = True
AllgMainObjekte1.Save_Data(False)
Me.OnTreeRefresh = False
Else
Me.AllgMainObjekte1.isDirty = False
End If
End If
If e.KeyCode = Keys.Enter Then
Me.onload = True
TSBtnSuche_Click(sender, e)
Me.onload = False
End If
End Sub
Private Sub TSBtnPrevious_Click(sender As Object, e As EventArgs) Handles TSBtnPrevious.Click
If AllgMainObjekte1.isDirty Then
If MsgBox("Daten wurden verändert. Wollen Sie diese speichern?", MsgBoxStyle.Question + MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
Me.OnTreeRefresh = True
AllgMainObjekte1.Save_Data(False)
Me.OnTreeRefresh = False
Else
Me.AllgMainObjekte1.isDirty = False
End If
End If
Me.onload = True
Me.TreeStruktur.SelectedNode = Uebersicht.FindPrevNode(Me.TreeStruktur)
Me.onload = False
End Sub
Private Sub TSBtnFirst_Click(sender As Object, e As EventArgs) Handles TSBtnFirst.Click
If AllgMainObjekte1.isDirty Then
If MsgBox("Daten wurden verändert. Wollen Sie diese speichern?", MsgBoxStyle.Question + MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
AllgMainObjekte1.Save_Data()
End If
End If
Me.onload = True
Me.TreeStruktur.SelectedNode = Uebersicht.FindFirst(Me.TreeStruktur)
Me.onload = False
End Sub
Private Sub TSBtnLast_Click(sender As Object, e As EventArgs) Handles TSBtnLast.Click
If AllgMainObjekte1.isDirty Then
If MsgBox("Daten wurden verändert. Wollen Sie diese speichern?", MsgBoxStyle.Question + MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
Me.OnTreeRefresh = True
AllgMainObjekte1.Save_Data(False)
Me.OnTreeRefresh = False
Else
Me.AllgMainObjekte1.isDirty = False
End If
End If
Me.onload = True
Me.TreeStruktur.SelectedNode = Uebersicht.FindLastNode(Me.TreeStruktur)
Me.onload = False
End Sub
Private Sub TSBtnFilterAufheben_Click(sender As Object, e As EventArgs) Handles TSBtnFilterAufheben.Click
If AllgMainObjekte1.isDirty Then
If MsgBox("Daten wurden verändert. Wollen Sie diese speichern?", MsgBoxStyle.Question + MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
Me.OnTreeRefresh = True
AllgMainObjekte1.Save_Data(False)
Me.OnTreeRefresh = False
Else
Me.AllgMainObjekte1.isDirty = False
End If
End If
Me.ToolStriptxtSuche.Text = ""
Uebersicht.Init_Search()
End Sub
#End Region
#Region "Treehandling"
Sub Refresh_Tree(ByVal Keyvalue As Integer, Optional NodeCollection As TreeNodeCollection = Nothing)
TreeStruktur.Nodes.Clear()
Uebersicht.Load_Treeview(Me.TreeStruktur)
If Keyvalue <> -1 Then
Me.TreeStruktur.SelectedNode = Me.Uebersicht.FindNode(Me.TreeStruktur.Nodes, Keyvalue, Keyvalue)
Else
Me.TreeStruktur.SelectedNode = TreeStruktur.Nodes(0)
End If
End Sub
Private Sub TreeStruktur_AfterNodeDrop(sender As Object, e As DevComponents.AdvTree.TreeDragDropEventArgs) Handles TreeStruktur.AfterNodeDrop
'If e.OldParentNode.TreeControl.Handle = Me.TreeStruktur.Handle Then
Dim destinationnode As New DevComponents.AdvTree.Node
destinationnode = e.NewParentNode
For Each n As DevComponents.AdvTree.Node In e.Nodes
Dim DBOBjektname = Uebersicht.Get_DBObjektname(Me.Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, destinationnode))
Dim DBObjekt As New Object
Datenklasse.CreateNew(DBOBjektname, DBObjekt)
DBObjekt.get_data(n.Tag)
DBObjekt.iparentid = New SqlInt32(CType(destinationnode.Tag, Int32))
DBObjekt.save_data()
DBObjekt.dispose()
n.Parent.Nodes.Sort()
evh.Fire_Icon_Changed(e.OldParentNode.Tag, get_Icon(e.OldParentNode))
evh.Fire_Node_Moved(n, e.NewParentNode, Me.TreeStruktur.Handle)
Globals.TempTreeControl = e.OldParentNode.TreeControl
Globals.TempTreeOldParentNode = e.OldParentNode
Globals.TempTreeNewParentNode = e.NewParentNode
Globals.TempTreeCurrentNode = e.Node
Globals.TempTreeControl1 = Me.TreeStruktur
evh.Fire_Node_Droped()
Next
End Sub
Private Sub TreeStruktur_AfterNodeSelect(sender As Object, e As DevComponents.AdvTree.AdvTreeNodeEventArgs) Handles TreeStruktur.AfterNodeSelect
Try
TreeStruktur_Click(sender, e)
Catch
End Try
End Sub
Private Sub TreeStruktur_BeforeNodeDrop(sender As Object, e As DevComponents.AdvTree.TreeDragDropEventArgs) Handles TreeStruktur.BeforeNodeDrop
Try
If e.OldParentNode.TreeControl.Handle <> Me.TreeStruktur.Handle Then
Dim tn As New DevComponents.AdvTree.Node
tn = Uebersicht.FindNode(Me.TreeStruktur.Nodes, e.Node.Tag, e.Node.Tag)
tn.Remove()
End If
Catch ex As Exception
End Try
Dim DestinationNode As DevComponents.AdvTree.Node
Dim SourceNode As DevComponents.AdvTree.Node
SourceNode = e.Node
DestinationNode = e.NewParentNode
Try
If Me.Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, DestinationNode) = Me.Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, SourceNode) And _
SourceNode.Tag <> DestinationNode.Tag Then
'TreeNode found allow move effect
e.Cancel = False
TreeStruktur.DragDropEnabled = True
Else
'No TreeNode found, prevent move
e.Cancel = True
TreeStruktur.DragDropEnabled = True
End If
Catch ex As Exception
e.Cancel = True
TreeStruktur.DragDropEnabled = True
End Try
End Sub
Private Sub TreeStruktur_BeforeNodeSelect(sender As Object, e As DevComponents.AdvTree.AdvTreeNodeCancelEventArgs) Handles TreeStruktur.BeforeNodeSelect
If MoveCopy <> 0 And instopmode = True Then e.Cancel = True
End Sub
Private Sub TreeStruktur_Click(sender As Object, e As EventArgs) Handles TreeStruktur.Click
If OnTreeRefresh Then Exit Sub
Try
If Globals.MoveCopy <> 0 And movecopy_sourcekey = Me.TreeStruktur.SelectedNode.Tag Then Exit Sub
Catch
End Try
If Not onload Then
If Globals.MoveCopy = 1 Then
Dim a As MsgBoxResult = MsgBox("Beziehungen nach '" + Me.TreeStruktur.SelectedNode.Text + "' verschieben?", vbYesNoCancel + vbQuestion, "Beziehungen")
Select Case a
Case MsgBoxResult.Cancel
Cursor = Cursors.Default
Globals.MoveCopy = 0
Case MsgBoxResult.No
Case MsgBoxResult.Yes
AllgMainObjekte1.Update_Beziehung(TreeStruktur.SelectedNode.Tag, Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, TreeStruktur.SelectedNode), movecopy_grid, 1)
Cursor = Cursors.Default
Globals.MoveCopy = 0
evh.Fire_Refresh_SelectedNodes()
'Exit Sub
End Select
End If
If Globals.MoveCopy = 2 Then
Dim a As MsgBoxResult = MsgBox("Beziehungen nach '" + Me.TreeStruktur.SelectedNode.Text + "' kopieren?", vbYesNoCancel + vbQuestion, "Beziehungen")
Select Case a
Case MsgBoxResult.Cancel
Cursor = Cursors.Default
Globals.MoveCopy = 0
Case MsgBoxResult.No
Case MsgBoxResult.Yes
AllgMainObjekte1.Update_Beziehung(TreeStruktur.SelectedNode.Tag, Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, TreeStruktur.SelectedNode), movecopy_grid, 2)
Cursor = Cursors.Default
Globals.MoveCopy = 0
evh.Fire_Refresh_SelectedNodes()
'Exit Sub
End Select
End If
End If
If TreeStruktur.SelectedNode Is Nothing Then Exit Sub
If AllgMainObjekte1.isDirty Then
If MsgBox("Daten wurden verändert. Wollen Sie diese speichern?", MsgBoxStyle.Question + MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
Me.OnTreeRefresh = True
AllgMainObjekte1.Save_Data(True)
Me.OnTreeRefresh = False
Else
Me.AllgMainObjekte1.isDirty = False
End If
End If
Me.SuspendLayout()
Me.AllgMainObjekte1.Generic_Event_Handler = Globals.Generic_Event_Handler
Me.AllgMainObjekte1.Dock = DockStyle.Fill
Me.AllgMainObjekte1.ConnectionFilename = Globals.ConnectionFileName
Me.AllgMainObjekte1.ConnectionString = Globals.sConnectionString
Me.AllgMainObjekte1.TempFilePath = Globals.clsapplication.sTmp_filepath.Value
Me.AllgMainObjekte1.Mitarbeiternr = Globals.clsmitarbeiter.iMitarbeiternr.Value
Me.AllgMainObjekte1.Type = Datenklasse.Get_SelectionTypeText(Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, Me.TreeStruktur.SelectedNode))
Me.AllgMainObjekte1.KeyValue = Me.TreeStruktur.SelectedNode.Tag
Me.AllgMainObjekte1.TreeHandle = Me.TreeStruktur.Handle
Me.ResumeLayout()
End Sub
Private Sub TreeStruktur_MouseMove(sender As Object, e As MouseEventArgs) Handles TreeStruktur.MouseMove
'If Globals.MoveCopy = 0 Then
' Cursor = Cursors.Default
' Exit Sub
'End If
'Dim DestinationNode As New DevComponents.AdvTree.Node
'Dim pt As Point = CType(sender, DevComponents.AdvTree.AdvTree).PointToClient(New Point(e.X, e.Y))
'pt = New Point(e.X, e.Y)
'DestinationNode = TreeStruktur.GetNodeAt(e.X, e.Y)
'If DestinationNode Is Nothing Then Exit Sub
'Dim zielname As String
'Dim sourcename As String
'Dim tn As DevComponents.AdvTree.Node
'zielname = Uebersicht.Get_DBObjektname(Me.Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, DestinationNode))
'tn = Uebersicht.FindNode(Me.TreeStruktur.Nodes, Me.movecopy_sourcekey, movecopy_sourcekey)
'sourcename = Uebersicht.Get_DBObjektname(Me.Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, tn))
'If sourcename <> zielname Then
' Dim bmp As New Bitmap(CType(My.Resources.ResourceManager.GetObject("Stop"), Image))
' ico = Icon.FromHandle(bmp.GetHicon)
' customCursor = New Cursor(ico.Handle)
' instopmode = True
' Me.Cursor = customCursor
' Exit Sub
'End If
instopmode = False
If Globals.MoveCopy = 2 Then
Dim bmp As New Bitmap(CType(My.Resources.ResourceManager.GetObject("CopyCursor"), Image))
ico = Icon.FromHandle(bmp.GetHicon)
customCursor = New Cursor(ico.Handle)
Me.Cursor = customCursor
Exit Sub
End If
If Globals.MoveCopy = 1 Then
Dim bmp As New Bitmap(CType(My.Resources.ResourceManager.GetObject("MoveCursor"), Image))
ico = Icon.FromHandle(bmp.GetHicon)
customCursor = New Cursor(ico.Handle)
Me.Cursor = customCursor
Exit Sub
End If
If Me.Cursor <> Cursors.Default Then Me.Cursor = Cursors.Default
End Sub
Private Sub TreeStruktur_DragEnter(sender As Object, e As DragEventArgs) Handles TreeStruktur.DragEnter
If e.Data.GetDataPresent("DevComponents.AdvTree.Node", True) Then
'TreeNode found allow move effect
e.Effect = DragDropEffects.Move
Else
If e.Data.GetDataPresent("C1.Win.C1TrueDBGrid.C1TrueDBGrid", True) = True Then
e.Effect = DragDropEffects.Link
Else
e.Effect = DragDropEffects.None
End If
End If
End Sub
Private Sub TreeStruktur_DragOver(sender As Object, e As DragEventArgs) Handles TreeStruktur.DragOver
If e.Data.GetDataPresent("C1.Win.C1TrueDBGrid.C1TrueDBGrid", True) = True Then
e.Effect = DragDropEffects.Copy
End If
End Sub
#End Region
#Region "Contextmenu-Tree"
Private Sub ctxMenuTree_Opening(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles ctxMenuTree.Opening
Try
Dim pt As Point
pt = Me.TreeStruktur.PointToClient(New Point(xpoint, ypoint))
Me.TreeStruktur.SelectedNode = Me.TreeStruktur.GetNodeAt(pt)
Catch ex As Exception
End Try
If Me.TreeStruktur.SelectedNodes.Count > 1 Then
ElementLöschenToolStripMenuItem.Text = "Elemente löschen"
Else
ElementLöschenToolStripMenuItem.Text = "Element löschen"
End If
If Me.TreeStruktur.SelectedNode.Tag < 0 Then
Me.NeuesElementToolStripMenuItem.Enabled = True
Me.ElementLöschenToolStripMenuItem.Enabled = False
Else
Me.NeuesElementToolStripMenuItem.Enabled = True
Me.ElementLöschenToolStripMenuItem.Enabled = True
End If
Globals.ncol.Clear()
If Me.TreeStruktur.SelectedNodes.Count > 0 Then
Me.ElementLöschenToolStripMenuItem.Enabled = False
End If
Dim s As String
s = Datenklasse.Get_SelectionTypeText(Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, Me.TreeStruktur.SelectedNode))
If s = "Berechtigung" Or s = "Plattform" Or s = "Server" Then Me.Sync.Enabled = True Else Me.Sync.Enabled = False
If s = "Personal" Or s = "Funktionstelle" Then Me.NeueBeziehungErstellenToolStripMenuItem.Visible = True Else Me.NeueBeziehungErstellenToolStripMenuItem.Visible = False
Try
If sec.Check_DataObjectReadonly(Datenklasse.Get_SelectionTypeText(Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, Me.TreeStruktur.SelectedNode))) Then
Me.NeuesElementToolStripMenuItem.Enabled = False
Me.ElementLöschenToolStripMenuItem.Enabled = False
Else
Me.NeuesElementToolStripMenuItem.Enabled = True
Me.ElementLöschenToolStripMenuItem.Enabled = True
End If
Catch
End Try
End Sub
Private Sub InEinemNeuenFensterÖffnenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles InEinemNeuenFensterÖffnenToolStripMenuItem.Click
Dim allnodes As List(Of String) = New List(Of String)
Dim dn As DevComponents.AdvTree.Node
For Each n As DevComponents.AdvTree.Node In Me.TreeStruktur.SelectedNodes
allnodes.Add(n.Tag)
Next
For i = allNodes.Count - 1 To 0 Step -1
Dim f As New frmUebersichtRE(allnodes(i))
f.MdiParent = Me.MdiParent
f.Show()
Next
End Sub
Private Sub NeuesElementToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NeuesElementToolStripMenuItem.Click
Me.AllgMainObjekte1.Add_Entry(Me.TreeStruktur.SelectedNode.Tag)
End Sub
Private Sub KnotenÖffnenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles KnotenÖffnenToolStripMenuItem.Click
Try
Me.TreeStruktur.SelectedNode.ExpandAll()
Me.TreeStruktur.SelectedNode.EnsureVisible()
Catch ex As Exception
End Try
End Sub
Private Sub KnotenSchliessenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles KnotenSchliessenToolStripMenuItem.Click
Try
Me.TreeStruktur.SelectedNode.Collapse()
Me.TreeStruktur.SelectedNode.EnsureVisible()
Catch ex As Exception
End Try
End Sub
Private Sub ElementLöschenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ElementLöschenToolStripMenuItem.Click
If Me.TreeStruktur.SelectedNodes.Count = 1 Then
Dim subnodes As List(Of String) = New List(Of String)
Dim Allnodes As List(Of String) = New List(Of String)
For Each n As DevComponents.AdvTree.Node In Me.TreeStruktur.SelectedNodes
subnodes = GetChildren(n)
For i = 0 To subnodes.Count - 1
allNodes.Add(subnodes(i))
Next
Next
Dim res As MsgBoxResult
If Allnodes.Count > 0 Then
res = MsgBox("Datensatz '" + Me.TreeStruktur.SelectedNode.Text + "' inkl. allen " + Allnodes.Count.ToString + " Unterelemente löschen?", vbYesNo + vbQuestion)
Else
res = MsgBox("Datensatz '" + Me.TreeStruktur.SelectedNode.Text + "' löschen?", vbYesNo + vbQuestion)
End If
If res = MsgBoxResult.No Then Exit Sub
Me.Cursor = Cursors.WaitCursor
Delete_Entries()
Me.Cursor = Cursors.Default
End If
If Me.TreeStruktur.SelectedNodes.Count > 1 Then
Dim s As String = ""
Dim subnodes As List(Of String) = New List(Of String)
Dim Allnodes As List(Of String) = New List(Of String)
Dim res As MsgBoxResult
For Each n As DevComponents.AdvTree.Node In Me.TreeStruktur.SelectedNodes
If s <> "" Then s = s + ", "
s = s + vbCrLf + "'" + n.Text + "'"
subnodes = GetChildren(n)
For i = 0 To subnodes.Count - 1
Allnodes.Add(subnodes(i))
Next
Next
If Allnodes.Count > 0 Then s = s + vbCrLf + " inkl. allen " + Allnodes.Count.ToString + " Unterlemete" Else s = s + vbCrLf
If MsgBox("Datensätze " + s + " löschen?", vbYesNo + vbQuestion) = MsgBoxResult.Yes Then
' If mymsg.Show_MessageYesNo(41) = MsgBoxResult.No Then Exit Sub
Me.Cursor = Cursors.WaitCursor
Delete_Entries()
Me.Cursor = Cursors.Default
End If
evh.Fire_Update_Treesearch(Me.ParentForm)
End If
End Sub
Sub Delete_Entries()
Dim Allnodes As List(Of String) = New List(Of String)
Dim subnodes As List(Of String) = New List(Of String)
Dim dn As DevComponents.AdvTree.Node
For Each n As DevComponents.AdvTree.Node In Me.TreeStruktur.SelectedNodes
subnodes = GetChildren(n)
For i = 0 To subnodes.Count - 1
Allnodes.Add(subnodes(i))
Next
Allnodes.Add(n.Tag)
Next
For i = Allnodes.Count - 1 To 0 Step -1
AllgMainObjekte1.Delete_Entry(Allnodes(i), Allnodes(i), Me.ParentForm, False)
Next
End Sub
Private Sub ExportExcelToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ExportExcelToolStripMenuItem.Click
Dim f As New frmFortschritt
f.Show()
Dim ds As New DataSet
ds.Tables.Clear()
Dim Allnodes As List(Of String) = New List(Of String)
Dim subnodes As List(Of String) = New List(Of String)
Dim dn As DevComponents.AdvTree.Node
For Each n As DevComponents.AdvTree.Node In Me.TreeStruktur.SelectedNodes
subnodes = GetChildren(n)
For i = 0 To subnodes.Count - 1
Allnodes.Add(subnodes(i))
Next
Allnodes.Add(n.Tag)
Next
f.ProgressBar1.Value = 0
f.ProgressBar1.Maximum = Allnodes.Count
Cursor = Cursors.WaitCursor
For i = 0 To Allnodes.Count - 1
Dim dt As New DataTable
f.ProgressBar1.Value = f.ProgressBar1.Value + 1
Application.DoEvents()
dt = Datenklasse.Get_Data_for_ExcelExport(Datenklasse.Get_SelectionTypeText(Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, Me.TreeStruktur.SelectedNode)), Allnodes(i))
If i = 0 Then
ds.Tables.Add(dt.Copy)
Else
For Each r As DataRow In dt.Rows
ds.Tables(0).ImportRow(r)
Next
End If
Next
Cursor = Cursors.Default
f.Close()
f.Dispose()
Dim rpt As New _FRReporting.frmAuswertung("ExcelExport", ds, Globals.clsapplication.sTmp_filepath.Value)
rpt.MdiParent = Me.MdiParent
rpt.Show()
End Sub
Private Sub ExportVorbereitenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ExportVorbereitenToolStripMenuItem.Click
If Globals.ExcelExport_Form_exists = False Then
Dim f As New frmExportContainer
f.MdiParent = Me.MdiParent
f.Show()
Globals.ExcelExport_Form_exists = True
End If
Dim f1 As New frmFortschritt
f1.Show()
Dim Allnodes As List(Of String) = New List(Of String)
Dim subnodes As List(Of String) = New List(Of String)
Dim dn As DevComponents.AdvTree.Node
For Each n As DevComponents.AdvTree.Node In Me.TreeStruktur.SelectedNodes
subnodes = GetChildren(n)
For i = 0 To subnodes.Count - 1
Allnodes.Add(subnodes(i))
Next
Allnodes.Add(n.Tag)
Next
f1.ProgressBar1.Value = 0
f1.ProgressBar1.Maximum = Allnodes.Count
Cursor = Cursors.WaitCursor
For i = 0 To Allnodes.Count - 1
Dim arr(3) As String
Dim tn As New DevComponents.AdvTree.Node
f1.ProgressBar1.Value = f1.ProgressBar1.Value + 1
Application.DoEvents()
tn = Uebersicht.FindNode(Me.TreeStruktur.Nodes, Allnodes(i), Allnodes(i))
evh.Fire_Export_Vorbereiten_Clicked(Datenklasse.Get_SelectionTypeText(Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, Me.TreeStruktur.SelectedNode)), tn.Text, tn.Tag)
Next
Cursor = Cursors.Default
f1.Close()
f1.Dispose()
End Sub
Private Sub Sync_Click(sender As Object, e As EventArgs) Handles Sync.Click
If MsgBox("Wollen Sie die Beziehungen 'Verwaltung durch', 'Verwaltung mit','Dateneigentümer' in alle untergeordneten Elemente synchronisieren?", MsgBoxStyle.Question + MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
Me.AllgMainObjekte1.Sync_Beziehungen(Me.TreeStruktur.SelectedNode.Tag, Datenklasse.Get_SelectionTypeText(Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, Me.TreeStruktur.SelectedNode)), Me.TreeStruktur)
End If
End Sub
Private Sub NeueBeziehungErstellenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NeueBeziehungErstellenToolStripMenuItem.Click
Dim s As String
s = Datenklasse.Get_SelectionTypeText(Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, Me.TreeStruktur.SelectedNode))
Select Case s
Case "Personal"
fneuebeziehung = New _AllgMainObjekte.frmSetNeueBeziehung
fneuebeziehung.SourceBezeichnung = Me.TreeStruktur.SelectedNode.Text
fneuebeziehung.Sourceid = Me.TreeStruktur.SelectedNode.Tag
fneuebeziehung.Type = 0
fneuebeziehung.MdiParent = Me.MdiParent
fneuebeziehung.Mitarbeiternr = Globals.clsmitarbeiter.iMitarbeiternr.Value
fneuebeziehung.Show()
Case "Funktionstelle"
fneuebeziehung = New _AllgMainObjekte.frmSetNeueBeziehung
fneuebeziehung.SourceBezeichnung = Me.TreeStruktur.SelectedNode.Text
fneuebeziehung.Sourceid = Me.TreeStruktur.SelectedNode.Tag
fneuebeziehung.Type = 1
fneuebeziehung.MdiParent = Me.MdiParent
fneuebeziehung.Mitarbeiternr = Globals.clsmitarbeiter.iMitarbeiternr.Value
fneuebeziehung.Show()
End Select
End Sub
#End Region
#Region "EVH-Ereignisse"
Private Sub evh_Icon_Changed(keyvalue As Integer, Iconid As Integer) Handles evh.Icon_Changed
Try
Dim foundnode As DevComponents.AdvTree.Node
foundnode = Me.Uebersicht.FindNode(Me.TreeStruktur.Nodes, keyvalue, keyvalue)
foundnode.ImageIndex = Iconid
Catch
End Try
End Sub
Private Sub evh_Node_Moved(onode As Object, dnode As Object, treehandle As Object) Handles evh.Node_Moved
Try
Dim SourcenodeParent As DevComponents.AdvTree.Node
Dim sourcenode As DevComponents.AdvTree.Node
Dim destnode As DevComponents.AdvTree.Node
sourcenode = onode
SourcenodeParent = sourcenode.Parent
destnode = Me.Uebersicht.FindNode(Me.TreeStruktur.Nodes, dnode.tag, dnode.tag)
Dim foundnode As DevComponents.AdvTree.Node
foundnode = Me.Uebersicht.FindNode(Me.TreeStruktur.Nodes, sourcenode.Tag, sourcenode.Tag)
Try
foundnode.Remove()
destnode.Nodes.Add(foundnode)
destnode.ImageIndex = get_Icon(destnode)
destnode.Nodes.Sort()
evh.Fire_Update_Treesearch(Me)
Catch ex As Exception
End Try
Catch
End Try
End Sub
Private Sub evh_MainObject_Created(Keyvalue As Integer, Parentid As Integer, ByVal parentform As Object) Handles evh.MainObject_Created
Try
If parentform.handle = Me.Handle Then
Dim parentnode As DevComponents.AdvTree.Node
Dim NewNode As New DevComponents.AdvTree.Node
parentnode = Me.Uebersicht.FindNode(Me.TreeStruktur.Nodes, Parentid, Parentid)
Dim DBOBjektname = Uebersicht.Get_DBObjektname(Me.Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, parentnode))
Dim DBObjekt As New Object
Datenklasse.CreateNew(DBOBjektname, DBObjekt)
DBObjekt.get_data(Keyvalue)
NewNode.Text = DBObjekt.sbezeichnung.ToString
NewNode.Tag = Keyvalue
parentnode.Nodes.Add(NewNode)
NewNode.ImageIndex = get_Icon(NewNode)
parentnode.ImageIndex = get_Icon(parentnode)
parentnode.Nodes.Sort()
NewNode = Me.Uebersicht.FindNode(Me.TreeStruktur.Nodes, Keyvalue, Keyvalue)
NewNode.EnsureVisible()
Me.TreeStruktur.SelectedNode = NewNode
Else
Dim parentnode As DevComponents.AdvTree.Node
Dim NewNode As New DevComponents.AdvTree.Node
parentnode = Me.Uebersicht.FindNode(Me.TreeStruktur.Nodes, Parentid, Parentid)
Dim DBOBjektname = Uebersicht.Get_DBObjektname(Me.Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, parentnode))
Dim DBObjekt As New Object
Datenklasse.CreateNew(DBOBjektname, DBObjekt)
DBObjekt.get_data(Keyvalue)
NewNode.Text = DBObjekt.sbezeichnung.ToString
NewNode.Tag = Keyvalue
parentnode.Nodes.Add(NewNode)
NewNode.ImageIndex = get_Icon(NewNode)
parentnode.ImageIndex = get_Icon(parentnode)
parentnode.Nodes.Sort()
End If
Catch
End Try
End Sub
Private Sub evh_Object_Saved(Keyvalue As Integer, Parentid As Integer, parentform As Object) Handles evh.Object_Saved
Try
Dim node As New DevComponents.AdvTree.Node
node = Me.Uebersicht.FindNode(Me.TreeStruktur.Nodes, Keyvalue, Keyvalue)
Dim DBOBjektname = Uebersicht.Get_DBObjektname(Me.Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, node))
Dim DBObjekt As New Object
Datenklasse.CreateNew(DBOBjektname, DBObjekt)
DBObjekt.get_data(Keyvalue)
node.Text = DBObjekt.sbezeichnung.ToString
node.Tag = Keyvalue
node.Parent.Nodes.Sort()
Me.AllgMainObjekte1.Refresh_Beziehungen()
Catch ex As Exception
End Try
End Sub
Private Sub evh_Object_Deleted(keyvalue As Integer, keyvalueparent As Integer, ByVal parentform As Object) Handles evh.Object_Deleted
Try
Dim IsSelected As Boolean = False
Dim parentnode As DevComponents.AdvTree.Node
parentnode = Me.Uebersicht.FindNode(Me.TreeStruktur.Nodes, keyvalueparent, keyvalueparent)
Dim node As New DevComponents.AdvTree.Node
node = Me.Uebersicht.FindNode(Me.TreeStruktur.Nodes, keyvalue, keyvalue)
If node.IsSelected Then IsSelected = True Else IsSelected = False
parentnode.Nodes.Remove(node)
parentnode.ImageIndex = get_Icon(parentnode)
If IsSelected Then TreeStruktur.SelectedNode = parentnode
Catch ex As Exception
End Try
End Sub
Private Sub evh_Object_Delete(Keyvalue As Integer, Parentid As Integer, parentform As Object) Handles evh.Object_Delete
If Me.Handle = parentform.handle Then
delete_entries()
End If
End Sub
Public Sub Fireed_node_droped() Handles evh.Node_Droppend
If Globals.TempTreeControl.Handle = Globals.TempTreeControl1.Handle Then Exit Sub
Dim tn As DevComponents.AdvTree.Node
Try
tn = Uebersicht.FindNode(TempTreeControl.Nodes, TempTreeCurrentNode.Tag, TempTreeCurrentNode.Tag)
tn.Remove()
Catch ex As Exception
End Try
Try
tn = Uebersicht.FindNode(TempTreeControl.Nodes, TempTreeNewParentNode.Tag, TempTreeNewParentNode.Tag)
tn.Nodes.Add(TempTreeCurrentNode)
tn.Nodes.Sort()
evh.Fire_Update_Treesearch(Me)
Catch ex As Exception
End Try
End Sub
Private Sub evh_Select_to_MoveCopy(move As Boolean, grid As Object, sourcekey As Integer) Handles evh.Select_to_MoveCopy
If move Then Globals.MoveCopy = 1 Else Globals.MoveCopy = 2
movecopy_sourcekey = sourcekey
movecopy_grid = grid
Globals.MoveCopy_Grid = grid
End Sub
Private Sub evh_Refresh_Selectednodes() Handles evh.Refresh_Selectednodes
Try
AllgMainObjekte1.Refresh_Beziehungen()
Catch
End Try
End Sub
#End Region
#Region "Utils"
Function GetChildren(parentNode As DevComponents.AdvTree.Node) As List(Of String)
Dim nodes As List(Of String) = New List(Of String)
GetAllChildren(parentNode, nodes)
Return nodes
End Function
Sub GetAllChildren(parentNode As DevComponents.AdvTree.Node, nodes As List(Of String))
For Each childNode As DevComponents.AdvTree.Node In parentNode.Nodes
nodes.Add(childNode.Tag)
GetAllChildren(childNode, nodes)
Next
End Sub
Private Function get_Icon(ByVal node As DevComponents.AdvTree.Node, Optional newNode As Boolean = False) As Integer
Dim oldimage As Integer
Dim NewImage As Integer
Dim Type As String
Type = Datenklasse.Get_SelectionTypeText(Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, node))
Select Case Type
Case "Berechtigung"
NewImage = 4
Case "Plattform"
NewImage = 6
Case "Organisation"
NewImage = 0
Case "Funktionstelle"
NewImage = 0
Case "Personal"
NewImage = 2
Case "Server"
NewImage = 8
Case "Verwaltung durch", "VerwaltungDurch"
NewImage = 10
Case "Verwaltung mit", "VerwaltungMit"
NewImage = 12
End Select
If node.Nodes.Count > 0 Then NewImage = NewImage + 1
Return NewImage
End Function
#End Region
#Region "AllgMainObjekte"
Private Sub BeA_FunktionDetail1_C1Bezeihungen_DoubleClicked(keyvalue As Integer, Typ As String, NewWindow As Boolean) Handles AllgMainObjekte1.Beziehungen_DoubleClicked
If NewWindow = False Then
Me.TreeStruktur.SelectedNode = Me.Uebersicht.FindNode(Me.TreeStruktur.Nodes, keyvalue, keyvalue)
Else
Dim f As New frmUebersicht(keyvalue)
f.MdiParent = Me.MdiParent
f.Show()
End If
End Sub
Private Sub AllgMainObjekte1_DragDrop(sender As Object, e As DragEventArgs) Handles AllgMainObjekte1.DragDrop
'20130402_Sequenznr des Root-Nodes auslesen und als SequenzNr übergeben
Dim DBOBjektname = Uebersicht.Get_DBObjektname(Me.Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, Me.TreeStruktur.SelectedNode))
Dim DBObjekt As New Object
Datenklasse.CreateNew(DBOBjektname, DBObjekt)
DBObjekt.get_data(Me.AllgMainObjekte1.KeyValue)
Dim sequenznr As Integer = DBObjekt.isequenz.value
DBObjekt.dispose()
Me.AllgMainObjekte1.Add_New_Beziehung(newnode.Tag, Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, newnode), newnode.Text, TargetDBObject, Change_Keys, sequenznr)
End Sub
Private Sub AllgMainObjekte1_DragEnter(sender As Object, e As DragEventArgs) Handles AllgMainObjekte1.DragEnter
'See if there is a TreeNode being dragged
If e.Data.GetDataPresent("DevComponents.AdvTree.Node", True) Then
'TreeNode found allow move effect
e.Effect = DragDropEffects.Move
Else
'No TreeNode found, prevent move
e.Effect = DragDropEffects.None
End If
End Sub
Dim newnode As New DevComponents.AdvTree.Node
Private Sub AllgMainObjekte1_DragOver(sender As Object, e As DragEventArgs) Handles AllgMainObjekte1.DragOver
If e.Data.GetDataPresent("DevComponents.AdvTree.Node", True) = False Then Exit Sub
Dim DestinationNode As DevComponents.AdvTree.Node
Dim pt As Point
pt = Me.TreeStruktur.PointToClient(New Point(e.X, e.Y))
DestinationNode = TreeStruktur.GetNodeAt(pt)
newnode = CType(e.Data.GetData("DevComponents.AdvTree.Node"), DevComponents.AdvTree.Node)
Dim type1 As Integer
Dim type2 As Integer
type1 = Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, newnode)
type2 = Datenklasse.Get_Selectiontype(Me.AllgMainObjekte1.Type)
For Each dr As DataRow In Globals.Objekt_Beziehung.Rows
If dr.Item("Objekt1") = type1 And dr.Item("Objekt2") = type2 And dr.Item("Aktiv") = True Then
Me.TargetDBObject = dr.Item("Objektname")
Me.Change_Keys = dr.Item("Key_Umdrehen")
e.Effect = DragDropEffects.Move
Exit Sub
End If
Next
e.Effect = DragDropEffects.None
Exit Sub
End Sub
#End Region
Private Sub evh_Update_TreeSearch(parentform As Object) Handles evh.Update_TreeSearch
Try
If Me.Handle = parentform.handle Then
Uebersicht.Update_TreeSearch(0, 0, Me.TreeStruktur)
End If
Catch
End Try
End Sub
Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click
If AllgMainObjekte1.isDirty Then
If MsgBox("Daten wurden verändert. Wollen Sie diese speichern?", MsgBoxStyle.Question + MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
Me.OnTreeRefresh = True
AllgMainObjekte1.Save_Data(False)
Me.OnTreeRefresh = False
Else
Me.AllgMainObjekte1.isDirty = False
End If
End If
Dim f As New frmSuche
f.SuchData = Globals.treedata_for_search
f.SuchTree = Me.TreeStruktur
f.MdiParent = Me.MdiParent
f.txtSuchbegriff.Text = Trim(ToolStriptxtSuche.Text)
f.Show()
End Sub
Private Sub FensterGrösseSpeichernToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles FensterGrösseSpeichernToolStripMenuItem.Click
WHandler.set_Windowsize(1, Me.Width, Me.Height)
WHandler.set_Windowsize(11, Me.SplitContainer1.SplitterDistance, 0)
End Sub
Private Sub TreeStruktur_MouseDown(sender As Object, e As MouseEventArgs) Handles TreeStruktur.MouseDown
If e.Button = Windows.Forms.MouseButtons.Right Then
xpoint = e.X
ypoint = e.Y
End If
End Sub
End Class