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