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

1229 lines
48 KiB
VB.net

Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Imports System.Reflection
Public Class frmUebersicht
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
#Region "Deklarationen"
Dim Uebersicht As New clsUebersicht
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
#End Region
#Region "Formular"
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
Private Sub frmUebersicht_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 frmUebersicht_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Refresh_Tree(Me.KeyValue)
sec.Set_Form_Security(Me)
If Me.tsbtnReadonly.Enabled = False Then
Me.TreeStruktur.AllowDrop = False
End If
Me.AllgMainObjekte1.ConnectionFilename = Globals.ConnectionFileName
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
End Sub
Sub Refresh_Tree(ByVal Keyvalue As Integer, Optional NodeCollection As TreeNodeCollection = Nothing)
OnTreeRefresh = True
If Keyvalue = -1 Then
Me.Uebersicht.treedata_for_search.Rows.Clear()
Me.Uebersicht.treedata_for_search.Columns.Clear()
End If
Me.Cursor = Cursors.WaitCursor
Me.TreeStruktur.BeginUpdate()
Try
Me.TreeStruktur.Nodes.Clear()
Catch
End Try
Uebersicht.Load_Treeview(Me.TreeStruktur)
Dim i As Integer
Try
For i = 0 To allNodes.Count - 1
If allNodes(i).IsExpanded Then
If Not NodeCollection Is Nothing Then
TreeStruktur.SelectedNode = Me.Uebersicht.FindNode(NodeCollection, allNodes(i).Tag, allNodes(i).Tag)
Else
TreeStruktur.SelectedNode = Me.Uebersicht.FindNode(Me.TreeStruktur.Nodes, allNodes(i).Tag, allNodes(i).Tag)
End If
TreeStruktur.SelectedNode.Expand()
End If
Next
Catch ex As Exception
End Try
OnTreeRefresh = False
If Keyvalue <> -1 Then
If Not NodeCollection Is Nothing Then
Me.TreeStruktur.SelectedNode = Me.Uebersicht.FindNode(NodeCollection, Keyvalue, Keyvalue)
Else
Me.TreeStruktur.SelectedNode = Me.Uebersicht.FindNode(Me.TreeStruktur.Nodes, Keyvalue, Keyvalue)
End If
End If
Me.TreeStruktur.EndUpdate()
Me.TreeStruktur.SelectedNode = Me.TreeStruktur.SelectedNode
Try
Me.TreeStruktur.SelectedNode.EnsureVisible()
Catch
End Try
Me.Cursor = Cursors.Default
End Sub
Protected Function Get_All_Expanded_Nodes()
If OnTreeRefresh = True Then Exit Function
allNodes.Clear()
Dim aln As List(Of TreeNode)
aln = GetAllNodes()
Dim i As Integer
For i = 0 To aln.Count - 1
If aln(i).IsExpanded Then allNodes.Add(aln(i))
Next
aln.Clear()
aln = Nothing
End Function
Protected Function GetAllNodes() As List(Of TreeNode)
Dim allNodes As List(Of TreeNode) = New List(Of TreeNode)()
' start recursion for each root node of the treeview
For i As Integer = 0 To TreeStruktur.Nodes.Count - 1
GetAllNodes(TreeStruktur.Nodes(i), allNodes)
Next
Return allNodes
End Function
Protected Sub GetAllNodes(ByVal subRoot As TreeNode, ByVal allNodes As List(Of TreeNode))
' check for null (this can be removed since within th
If (subRoot Is Nothing) Then
Exit Sub
End If
' add subroot
allNodes.Add(subRoot)
' add all it's children
For i As Integer = 0 To subRoot.Nodes.Count - 1
GetAllNodes(subRoot.Nodes(i), allNodes)
Next
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
Private 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.TreeStruktur.SelectedNode = Uebersicht.SearchNode(Me.TreeStruktur, Trim(Me.ToolStriptxtSuche.Text))
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.TreeStruktur.SelectedNode = Uebersicht.FindNextNode(Me.TreeStruktur)
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
TSBtnSuche_Click(sender, e)
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.TreeStruktur.SelectedNode = Uebersicht.FindPrevNode(Me.TreeStruktur)
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.TreeStruktur.SelectedNode = Uebersicht.FindFirst(Me.TreeStruktur)
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.TreeStruktur.SelectedNode = Uebersicht.FindLastNode(Me.TreeStruktur)
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 "TreeStruktur"
Private _prevNode As TreeNode
Public SelectedBackColor As Color
Public SelectedForeColor As Color
Private Sub TreeStruktur_AfterCollapse(sender As Object, e As TreeViewEventArgs) Handles TreeStruktur.AfterCollapse
Get_All_Expanded_Nodes()
End Sub
Private Sub TreeStruktur_AfterExpand(sender As Object, e As TreeViewEventArgs) Handles TreeStruktur.AfterExpand
Get_All_Expanded_Nodes()
End Sub
Protected Sub MultiSelectFileTreeView_AfterSelect(sender As Object, e As System.Windows.Forms.TreeViewEventArgs) Handles TreeStruktur.AfterSelect
If OnTreeRefresh Then Exit Sub
Try
Me.TreeStruktur.BeginUpdate()
Dim bBoth As Boolean = ModifierKeys = (Keys.Shift Or Keys.Control)
'
Dim bControl As Boolean = (ModifierKeys = Keys.Control)
Dim bShift As Boolean = (ModifierKeys = Keys.Shift)
If Not (bBoth OrElse bControl OrElse bShift) Then
'just a plain old selection
ClearChecksRecursive(Me.TreeStruktur.Nodes)
e.Node.Checked = True
Me.TreeStruktur.SelectedNode = e.Node
Return
End If
If bControl Then
' no clear, just do it
e.Node.Checked = Not e.Node.Checked
Me.TreeStruktur.SelectedNode = e.Node
End If
If bShift OrElse bBoth Then
If bShift Then
ClearChecksRecursive(Me.TreeStruktur.Nodes)
End If
Dim TopNode As New TreeNode()
Dim BottomNode As New TreeNode()
If _prevNode.Level <> TreeStruktur.SelectedNode.Level Then
TopNode = TreeStruktur.SelectedNode.Parent.Nodes(0)
BottomNode = e.Node
Else
TopNode = If((_prevNode.Index < TreeStruktur.SelectedNode.Index), _prevNode, TreeStruktur.SelectedNode)
BottomNode = If((TreeStruktur.SelectedNode.Index > _prevNode.Index), TreeStruktur.SelectedNode, _prevNode)
End If
Dim x As Integer = TopNode.Index
While x <= BottomNode.Index
Dim n As TreeNode = TreeStruktur.SelectedNode.Parent.Nodes(x)
n.Checked = True
'If n.Tag.[GetType]() <> GetType(FileInfo) Then
' n.Collapse()
'End If
System.Math.Max(System.Threading.Interlocked.Increment(x), x - 1)
End While
Return
End If
Me.TreeStruktur.EndUpdate()
Catch ex As Exception
Finally
Me.TreeStruktur.EndUpdate()
End Try
End Sub
Private Sub TreeStruktur_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles TreeStruktur.AfterSelect
If OnTreeRefresh 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
Dim bBoth As Boolean = ModifierKeys = (Keys.Shift Or Keys.Control)
Dim bControl As Boolean = (ModifierKeys = Keys.Control)
Dim bShift As Boolean = (ModifierKeys = Keys.Shift)
If Not (bBoth OrElse bControl OrElse bShift) Then
'no modifier keys, so clear all nodes and select just this one
'ClearChecksRecursive(Me.Nodes)
e.Node.Checked = True
Me.TreeStruktur.SelectedNode = e.Node
Else
Return
End If
'Me.TreeStruktur.BeginUpdate()
Me.SuspendLayout()
Me.AllgMainObjekte1.Generic_Event_Handler = Globals.Generic_Event_Handler
Me.Panel2.Visible = True
Me.Panel2.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.ResumeLayout()
'Me.TreeStruktur.EndUpdate()
Exit Sub
End Sub
Protected Sub MultiSelectFileTreeView_BeforeSelect(sender As Object, e As TreeViewCancelEventArgs) Handles TreeStruktur.BeforeSelect
Try
If Me.AllgMainObjekte1.isDirty Then
'If MsgBox("Daten wurden verändert. Wollen Sie diese speichern?", MsgBoxStyle.Question + MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
' OnTreeRefresh = True
' AllgMainObjekte1.Save_Data(False)
' OnTreeRefresh = False
'End If
End If
_prevNode = Me.TreeStruktur.SelectedNode
Catch ex As Exception
End Try
End Sub
Protected Sub MultiSelectFileTreeView_AfterCheck(sender As Object, e As System.Windows.Forms.TreeViewEventArgs) Handles TreeStruktur.AfterCheck
SelectedBackColor = SystemColors.Highlight
SelectedForeColor = SystemColors.HighlightText
Try
e.Node.BackColor = If((e.Node.Checked = True), SelectedBackColor, SystemColors.Window)
e.Node.ForeColor = If((e.Node.Checked = True), SelectedForeColor, Me.ForeColor)
If e.Node.Checked Then
Dim nodeType As Type = e.Node.Tag.[GetType]()
'If nodeType = GetType(DirectoryInfo) OrElse nodeType = GetType(DriveInfo) Then
' e.Node.Expand()
'End If
End If
Catch ex As Exception
End Try
End Sub
Protected Sub ClearChecksRecursive(nodes As TreeNodeCollection)
Try
For Each node As TreeNode In nodes
node.Checked = False
ClearChecksRecursive(node.Nodes)
Next
Catch ex As Exception
Finally
End Try
End Sub
Private Sub TreeStruktur_DragDrop(sender As Object, e As DragEventArgs) Handles TreeStruktur.DragDrop
If e.Data.GetDataPresent("C1.Win.C1TrueDBGrid.C1TrueDBGrid", True) = True Then
Dim Grid As New C1.Win.C1TrueDBGrid.C1TrueDBGrid
Grid = CType(e.Data.GetData("C1.Win.C1TrueDBGrid.C1TrueDBGrid"), C1.Win.C1TrueDBGrid.C1TrueDBGrid)
e.Effect = DragDropEffects.None
Dim selectedTreeview As TreeView = CType(sender, TreeView)
Dim pt As Point = CType(sender, TreeView).PointToClient(New Point(e.X, e.Y))
Dim targetNode As TreeNode = selectedTreeview.GetNodeAt(pt)
'AllgMainObjekte1.Update_Beziehung(targetNode.Tag, Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, targetNode), Grid)
End If
If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", True) Then
Dim cnodes As New Collection
If evh.Datacolleation.Count > 0 Then
ncol = evh.Datacolleation
Else
Globals.ncol.Clear()
Get_Checked_Nodes_root(Me.TreeStruktur.Nodes)
End If
Dim DestinationNode As TreeNode
Dim SourceNode As TreeNode
SourceNode = CType(e.Data.GetData("System.Windows.Forms.TreeNode"), TreeNode)
Dim pt As Point
pt = Me.TreeStruktur.PointToClient(New Point(e.X, e.Y))
DestinationNode = TreeStruktur.GetNodeAt(pt)
If SourceNode.Tag = DestinationNode.Tag Then
MsgBox("Ein Knoten kann nicht auf sich selber zeigen - Funktion wird abgebrochen")
Exit Sub
End If
If check_destination(SourceNode, DestinationNode) = False Then
MsgBox("Ein Knoten kann nicht auf ein Unterknoten in der eigenen Unterstruktur verschoben wrden - Funktion wird abgebrochen")
Exit Sub
End If
Dim SelTag As Integer
For i = 1 To Globals.ncol.Count
SelTag = Globals.ncol.Item(i)
Dim DBOBjektname = Uebersicht.Get_DBObjektname(Me.Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, DestinationNode))
Dim DBObjekt As New Object
Datenklasse.CreateNew(DBOBjektname, DBObjekt)
'DBObjekt.get_data(SourceNode.Tag)
DBObjekt.get_data(SelTag)
DBObjekt.iparentid = New SqlInt32(CType(DestinationNode.Tag, Int32))
DBObjekt.save_data()
DBObjekt.dispose()
Next
Me.Get_All_Expanded_Nodes()
evh.Fire_Struktur_Changed(SourceNode.Tag)
e.Effect = DragDropEffects.None
evh.Datacolleation.Clear()
End If
End Sub
Private Function check_destination(ByVal stn As TreeNode, ByVal dtn As TreeNode) As Boolean
Dim ptn As New TreeNode
Try
ptn = dtn
For i As Integer = 1 To 100
If ptn.Tag = stn.Tag Then Return False
ptn = ptn.Parent
Next
Return True
Catch ex As Exception
Return True
End Try
End Function
Private Sub TreeView1_NodeMouseClick(sender As Object, e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles TreeStruktur.NodeMouseClick
If e.Button = Windows.Forms.MouseButtons.Right Then
Globals.ncol.Clear()
Me.Get_Checked_Nodes(Me.TreeStruktur.Nodes)
If Globals.ncol.Count > 1 Then Exit Sub
End If
TreeStruktur.SelectedNode = e.Node
Active_Node = e.Node
If e.Button = Windows.Forms.MouseButtons.Right Then
TreeStruktur.SelectedNode = e.Node
End If
End Sub
Private Sub TreeStruktur_DragEnter(sender As Object, e As DragEventArgs) Handles TreeStruktur.DragEnter
If e.Data.GetDataPresent("C1.Win.C1TrueDBGrid.C1TrueDBGrid", True) = True Then
'TreeNode found allow move effect
e.Effect = DragDropEffects.Move
Else
'No TreeNode found, prevent move
If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", True) Then
'TreeNode found allow move effect
e.Effect = DragDropEffects.Move
Else
'No TreeNode found, prevent move
e.Effect = DragDropEffects.None
End If
End If
If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", True) Then
Dim DestinationNode As TreeNode
Dim SourceNode As TreeNode
SourceNode = CType(e.Data.GetData("System.Windows.Forms.TreeNode"), TreeNode)
Me.TreeStruktur.SelectedNode = SourceNode
Dim pt As Point
pt = Me.TreeStruktur.PointToClient(New Point(e.X, e.Y))
DestinationNode = TreeStruktur.GetNodeAt(pt)
Try
If Me.Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, DestinationNode) = Me.Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, SourceNode) Then
'TreeNode found allow move effect
e.Effect = DragDropEffects.Move
Else
'No TreeNode found, prevent move
e.Effect = DragDropEffects.None
End If
Catch ex As Exception
e.Effect = DragDropEffects.None
End Try
End If
End Sub
Private Sub changeNodeBackColor(ByVal backColor As Color, Optional ByVal node As TreeNode = Nothing)
TreeStruktur.BeginUpdate()
Try
If lastnode IsNot Nothing Then
Dim FS As New Font("Microsoft Sans Serif; 8.25pt", 8.25, FontStyle.Regular)
lastnode.NodeFont = FS
FS = Nothing
End If
'lastnode.BackColor = node.BackColor
Catch
End Try
If node IsNot Nothing Then
Dim FS As New Font("Microsoft Sans Serif; 8.25pt", 8.25, FontStyle.Bold)
node.NodeFont = FS
FS = Nothing
'.BackColor = backColor
lastnode = node
End If
' For Each n As TreeNode In If(node IsNot Nothing, node.Nodes, TreeStruktur.Nodes)
' changeNodeBackColor(backColor, n)
'
' Next
TreeStruktur.EndUpdate()
End Sub
Dim lastnode As New TreeNode
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.Move
Else
If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", True) Then
Dim DestinationNode As TreeNode
Dim SourceNode As TreeNode
SourceNode = CType(e.Data.GetData("System.Windows.Forms.TreeNode"), TreeNode)
Dim pt As Point
pt = Me.TreeStruktur.PointToClient(New Point(e.X, e.Y))
DestinationNode = TreeStruktur.GetNodeAt(pt)
'changeNodeBackColor(Color.Blue, DestinationNode)
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.Effect = DragDropEffects.Move
Else
'No TreeNode found, prevent move
e.Effect = DragDropEffects.None
End If
Catch ex As Exception
e.Effect = DragDropEffects.None
End Try
Const ScrollRegion As Single = 20
Dim pt1 As Point = TreeStruktur.PointToClient(Cursor.Position)
If (pt1.Y + ScrollRegion) > TreeStruktur.Height Then
SendMessage(TreeStruktur.Handle, 277&, 1&, vbNull)
ElseIf (pt1.Y) < TreeStruktur.Top + ScrollRegion Then
SendMessage(TreeStruktur.Handle, 277&, 0&, vbNull)
End If
End If
End If
End Sub
Private Sub TreeStruktur_ItemDrag(sender As Object, e As ItemDragEventArgs) Handles TreeStruktur.ItemDrag
DoDragDrop(e.Item, DragDropEffects.Move)
End Sub
#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("System.Windows.Forms.TreeNode", 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 TreeNode
Private Sub AllgMainObjekte1_DragOver(sender As Object, e As DragEventArgs) Handles AllgMainObjekte1.DragOver
If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", True) = False Then Exit Sub
Dim DestinationNode As TreeNode
Dim pt As Point
pt = Me.TreeStruktur.PointToClient(New Point(e.X, e.Y))
DestinationNode = TreeStruktur.GetNodeAt(pt)
newnode = CType(e.Data.GetData("System.Windows.Forms.TreeNode"), TreeNode)
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
#Region "Datenbank"
#End Region
#Region "EVH-Ereignisse"
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
Refresh_Tree(-1)
Dim tn As New TreeNode
tn = Uebersicht.FindNode(Me.TreeStruktur.Nodes, Parentid, "")
Me.TreeStruktur.SelectedNode = Uebersicht.FindNode(tn.Nodes, Keyvalue, "")
Else
Dim sn As Integer = Me.TreeStruktur.SelectedNode.Tag
Dim PN As Integer = Me.TreeStruktur.SelectedNode.Parent.Tag
Refresh_Tree(-1)
Dim tn As New TreeNode
tn = Uebersicht.FindNode(Me.TreeStruktur.Nodes, PN, "")
Me.TreeStruktur.SelectedNode = Uebersicht.FindNode(tn.Nodes, sn, "")
End If
Catch
End Try
End Sub
Private Sub evh_MainObject_Saved(ByVal Keyvalue As Integer, ByVal Parentid As Integer) Handles evh.MainObject_Saved
Try
If Me.TreeStruktur.SelectedNode.Tag = Keyvalue Then
'gaga
Dim DBObjekt As New Object
Dim s As String
s = Datenklasse.Get_SelectionTypeText(Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, Active_Node))
Datenklasse.CreateNew("_DataClass.db." + s, DBObjekt)
DBObjekt.get_data(Keyvalue)
Active_Node.Text = DBObjekt.sbezeichnung.ToString
Me.TreeStruktur.SelectedNode = Active_Node
Me.SortTreeNodeCollection(Active_Node.Parent.Nodes)
Me.AllgMainObjekte1.Refresh_Beziehungen()
'Refresh_Tree(-1)
'Dim tn As New TreeNode
'tn = Uebersicht.FindNode(Me.TreeStruktur.Nodes, Parentid, "")
'Me.TreeStruktur.SelectedNode = Uebersicht.FindNode(tn.Nodes, Keyvalue, "")
'Me.AllgMainObjekte1.Refresh_Beziehungen()
Else
Dim ntn As TreeNode
Dim DBObjekt As New Object
ntn = Uebersicht.FindNode(Me.TreeStruktur.Nodes, Keyvalue, "")
Try
Dim s As String
s = Datenklasse.Get_SelectionTypeText(Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, ntn))
Datenklasse.CreateNew("_DataClass.db." + s, DBObjekt)
DBObjekt.get_data(Keyvalue)
ntn.Text = DBObjekt.sbezeichnung.ToString
Me.SortTreeNodeCollection(ntn.Parent.Nodes)
Exit Sub
Catch ex As Exception
End Try
Dim sn As Integer = Me.TreeStruktur.SelectedNode.Tag
Dim PN As Integer = Me.TreeStruktur.SelectedNode.Parent.Tag
Refresh_Tree(-1)
Dim tn As New TreeNode
tn = Uebersicht.FindNode(Me.TreeStruktur.Nodes, PN, "")
Me.TreeStruktur.SelectedNode = Uebersicht.FindNode(tn.Nodes, sn, "")
Me.AllgMainObjekte1.Refresh_Beziehungen()
End If
Catch
End Try
Exit Sub
'Dim tn As New TreeNode
'tn = Uebersicht.FindNode(Me.TreeStruktur.Nodes, Parentid, "")
'Me.TreeStruktur.SelectedNode = Uebersicht.FindNode(tn.Nodes, Keyvalue, "")
'Me.TreeStruktur.SelectedNode.Text=
'Dim tn As New TreeNode
'tn = Uebersicht.FindNode(Me.TreeStruktur.Nodes, Keyvalue, "")
'If tn Is Nothing Then
' Me.Refresh_Tree(Me.AllgMainObjekte1.KeyValue)
' Me.AllgMainObjekte1.Refresh_Details()
' Exit Sub
'Else
' tn.Text = Bezeichnung
' If tn.Tag = Me.AllgMainObjekte1.KeyValue Then Me.AllgMainObjekte1.Refresh_Details()
'End If
End Sub
Private Sub evh_Strucktur_Changed(ByVal keyvalue As Integer, ByVal treehanlde As Integer) Handles evh.Strucktur_Changed
Try
If keyvalue = -1 Or keyvalue <> TreeStruktur.SelectedNode.Tag Then
Refresh_Tree(Me.TreeStruktur.SelectedNode.Tag)
Else
Refresh_Tree(keyvalue)
End If
Catch
Refresh_Tree(keyvalue)
End Try
End Sub
Private Sub evh_MainObject_Deleted(ByVal keyvalue As Integer, ByVal parentid As Integer) Handles evh.MainObject_Deleted
Try
Dim tn1 As New TreeNode
tn1 = Uebersicht.FindNode(Me.TreeStruktur.Nodes, keyvalue, "")
Try
If Globals.Treehandle <> Me.TreeStruktur.Handle Then
Try
Dim tn2 As New TreeNode
tn2 = Me.TreeStruktur.SelectedNode
Me.TreeStruktur.Nodes.Remove(tn1)
Me.TreeStruktur.SelectedNode = tn2
tn2 = Nothing
Catch
End Try
Else
Delete_Childs(keyvalue)
Me.TreeStruktur.Nodes.Remove(tn1)
End If
Exit Sub
Catch ex As Exception
Exit Sub
End Try
Catch ex As Exception
End Try
Try
Dim sn As Integer = Me.TreeStruktur.SelectedNode.Tag
Dim PN As Integer = Me.TreeStruktur.SelectedNode.Parent.Tag
Delete_Childs(keyvalue)
If onDelete Then Exit Sub
Try
If sn = keyvalue Then
Me.Refresh_Tree(parentid)
Try
Me.TreeStruktur.SelectedNode.Expand()
Catch
End Try
Else
Refresh_Tree(-1)
Dim tn As New TreeNode
tn = Uebersicht.FindNode(Me.TreeStruktur.Nodes, PN, "")
Me.TreeStruktur.SelectedNode = Uebersicht.FindNode(tn.Nodes, sn, "")
End If
Catch
End Try
Catch ex As Exception
End Try
End Sub
Private Sub Delete_Childs(ByVal keyvalue As Integer)
Try
Dim DBOBjektname = Uebersicht.Get_DBObjektname(Me.Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, Me.TreeStruktur.SelectedNode))
Dim tn As New TreeNode
tn = Uebersicht.FindNode(Me.TreeStruktur.Nodes, keyvalue, "")
If Not tn Is Nothing Then
ncol.Clear()
Me.Get_Sub_Nodes(tn.Nodes)
Dim i As Integer
For i = 1 To ncol.Count
Me.TreeStruktur.SelectedNode = Uebersicht.FindNode(Me.TreeStruktur.Nodes, ncol.Item(i), "")
Try
Dim DBObjekt As New Object
Datenklasse.CreateNew(DBOBjektname, DBObjekt)
DBObjekt.get_data(Me.TreeStruktur.SelectedNode.Tag)
DBObjekt.delete_data()
DBObjekt.dispose()
Application.DoEvents()
Catch
End Try
Next
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
#End Region
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 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 = Uebersicht.treedata_for_search
'f.SuchTree = Me.TreeStruktur
f.MdiParent = Me.MdiParent
f.txtSuchbegriff.Text = Trim(ToolStriptxtSuche.Text)
f.Show()
End Sub
Public Function Get_Checked_Nodes_root(ByVal Nodes As TreeNodeCollection)
For Each node As TreeNode In Nodes
If node.Checked = True Then
Globals.ncol.Add(node.Tag)
End If
Get_Checked_Nodes_root(node.Nodes)
Next
End Function
Public Function Get_Checked_Nodes(ByVal Nodes As TreeNodeCollection)
For Each node As TreeNode In Nodes
If node.Checked = True Then
Globals.ncol.Add(node.Tag)
If node.Nodes.Count > 0 Then Get_Sub_Nodes(node.Nodes)
End If
Get_Checked_Nodes(node.Nodes)
Next
End Function
Public Function Get_Sub_Nodes(ByVal Nodes As TreeNodeCollection)
For Each node As TreeNode In Nodes
Globals.ncol.Add(node.Tag)
If node.Nodes.Count > 0 Then Get_Sub_Nodes(node.Nodes)
Get_Sub_Nodes(node.Nodes)
Next
End Function
Public Function Get_Checked_Nodes_Count(ByVal Nodes As TreeNodeCollection) As Integer
For Each node As TreeNode In Nodes
If node.Checked = True Then
Globals.ncol.Add(node.Tag)
End If
Get_Checked_Nodes(node.Nodes)
Next
Return Globals.ncol.Count
End Function
Private Sub NeuesElementToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NeuesElementToolStripMenuItem.Click
Me.AllgMainObjekte1.Add_Entry(Me.TreeStruktur.SelectedNode.Tag)
End Sub
Dim OnDelete As Boolean = False
Private Sub ElementLöschenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ElementLöschenToolStripMenuItem.Click
Globals.Treehandle = Me.TreeStruktur.Handle
Dim sn As Integer = Me.TreeStruktur.SelectedNode.Parent.Tag
Dim cn As New Collection
For i = 1 To Globals.ncol.Count
cn.Add(ncol.Item(i))
Next
If cn.Count > 1 Then
If mymsg.Show_MessageYesNo(4) <> MsgBoxResult.Yes Then
cn = Nothing
Exit Sub
End If
End If
For i = 1 To cn.Count
Me.TreeStruktur.SelectedNode = Uebersicht.FindNode(Me.TreeStruktur.Nodes, cn.Item(i), "")
Try
If cn.Count > 1 Then
Me.OnDelete = True
Me.AllgMainObjekte1.Delete_Entry(Me.TreeStruktur.SelectedNode.Tag, Me.TreeStruktur.SelectedNode.Parent.Tag, False)
Me.OnDelete = False
Else
Me.AllgMainObjekte1.Delete_Entry(Me.TreeStruktur.SelectedNode.Tag, Me.TreeStruktur.SelectedNode.Parent.Tag, True)
End If
Catch ex As Exception
Finally
End Try
Next
cn = Nothing
Me.Uebersicht.treedata_for_search.Rows.Clear()
Me.Uebersicht.treedata_for_search.Columns.Clear()
For Each dr As DataRow In Globals.Objekt.Rows
Uebersicht.Load_Treedata(dr.Item("Bezeichnung"))
Next
Globals.Treehandle = 0
'Me.Refresh_Tree(sn, Nothing)
' Dim tn As New TreeNode
' tn = Uebersicht.FindNode(Me.TreeStruktur.Nodes, sn, "")
' Me.TreeStruktur.SelectedNode = tn
'Me.AllgMainObjekte1.Delete_Entry(Me.TreeStruktur.SelectedNode.Tag, Me.TreeStruktur.SelectedNode.Parent.Tag)
'Me.Uebersicht.treedata_for_search.Rows.Clear()
'Me.Uebersicht.treedata_for_search.Columns.Clear()
'Me.Refresh_Tree(sn, Nothing)
'Try
' Me.TreeStruktur.SelectedNode.ExpandAll()
' Me.TreeStruktur.SelectedNode.EnsureVisible()
'Catch ex As Exception
'End Try
End Sub
Private Sub ctxMenuTree_Opening(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles ctxMenuTree.Opening
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 Get_Checked_Nodes_Count(Me.TreeStruktur.Nodes) > 1 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 TreeStruktur_DragLeave(sender As Object, e As EventArgs) Handles TreeStruktur.DragLeave
ncol.Clear()
Get_Checked_Nodes_root(Me.TreeStruktur.Nodes)
If ncol.Count > 0 Then evh.Datacolleation = ncol
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()
ncol.Clear()
Get_Checked_Nodes(Me.TreeStruktur.Nodes)
f.ProgressBar1.Value = 0
f.ProgressBar1.Maximum = ncol.Count
For i = 1 To ncol.Count
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)), ncol.Item(i))
If i = 1 Then
ds.Tables.Add(dt.Copy)
Else
For Each r As DataRow In dt.Rows
ds.Tables(0).ImportRow(r)
Next
End If
Next
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()
ncol.Clear()
Get_Checked_Nodes(Me.TreeStruktur.Nodes)
f1.ProgressBar1.Value = 0
f1.ProgressBar1.Maximum = ncol.Count
For i = 1 To ncol.Count
Dim arr(3) As String
Dim tn As New TreeNode
f1.ProgressBar1.Value = f1.ProgressBar1.Value + 1
Application.DoEvents()
tn = Uebersicht.FindNode(Me.TreeStruktur.Nodes, ncol.Item(i), "")
evh.Fire_Export_Vorbereiten_Clicked(Datenklasse.Get_SelectionTypeText(Uebersicht.TreeView_GetRootNode(Me.TreeStruktur, Me.TreeStruktur.SelectedNode)), tn.Text, tn.Tag)
Next
f1.Close()
f1.Dispose()
End Sub
Private Sub FensterGrösseSpeichernToolStripMenuItem_Click_1(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 InEinemNeuenFensterÖffnenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles InEinemNeuenFensterÖffnenToolStripMenuItem.Click
Dim f As New frmUebersicht(Me.TreeStruktur.SelectedNode.Tag)
f.MdiParent = Me.MdiParent
f.Show()
End Sub
'Private Sub SyncVerwaltungDurchMitDateneigentuemerToolStripMenuItem_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
Private Sub fneuebeziehung_C1Beziehungen_DoubleClicked(keyvalue As Integer, Typ As String, NewWindows As Boolean) Handles fneuebeziehung.C1Beziehungen_DoubleClicked
If NewWindows = 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 SortTreeNodeCollection(ByVal collection As TreeNodeCollection)
' Copy the Nodes to an array
Dim nodes(collection.Count - 1) As TreeNode
collection.CopyTo(nodes, 0)
' Sort the nodes based on Text
Array.Sort(nodes, New TreeNodeComparer)
' Copy the nodes back into the collection
collection.Clear()
For Each node As TreeNode In nodes
' optionally, this would be the time to sort the child collections
' SortTreeNodeCollection(node.ChildNodes)
collection.Add(node)
Next
End Sub
Private Sub ToolStriptxtSuche_Click(sender As Object, e As EventArgs) Handles ToolStriptxtSuche.Click
End Sub
End Class
Public Class TreeNodeComparer : Implements IComparer
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
' Assumes objects are TreeNodes, otherwise will throw an InvalidCastException
Return String.Compare(CType(x, TreeNode).Text, CType(y, TreeNode).Text)
End Function
End Class