Imports DevComponents Imports System.Data.SqlClient Imports System.Data.SqlDbType Imports System.IO Imports System.Data Public Class LCStrukturEditor Dim clslc As New TKB.VV.Lifecycle.clslifeCycle Dim produkt As New TKB.VV.Lifecycle.clsProdukt Private Sub LCStrukturEditor_Load(sender As Object, e As EventArgs) Handles MyBase.Load clslc.Load_Treestrukutr(Me.TreeStruktur, True, 1) Me.TreeStruktur.ExpandAll() load_images() Me.TreeStruktur.SelectedNode = Me.TreeStruktur.Nodes(0) End Sub Sub load_images() Me.ImgList.Images.Clear() Dim filesList As String() = Directory.GetFiles(Application.StartupPath + "\LCIcons") Dim files As String For Each files In filesList 'files = files.Replace(files.Substring(0, files.LastIndexOf("\") + 1), "") ImgList.Images.Add(Bitmap.FromFile(files)) Next End Sub Private Sub NeuesElementToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NeuesElementToolStripMenuItem.Click Dim s As String s = InputBox("Name des Strukturelementes", "Neues Strukturelement") If s <> "" Then Produkt.Add_New(Me.TreeStruktur.SelectedNode.Tag) produkt.bIstStruktur = New SqlTypes.SqlBoolean(CType(True, Boolean)) produkt.sBezeichnung = New SqlTypes.SqlString(CType(s, String)) If produkt.Get_Image_for_Structure(Me.TreeStruktur.SelectedNode.Level) = True Then produkt.iImageindex = New SqlTypes.SqlInt32(CType(Me.TreeStruktur.SelectedNode.ImageIndex, Int32)) Else produkt.iImageindex = New SqlTypes.SqlInt32(CType(-1, Int32)) End If produkt.Save_Data() Dim tn As New DevComponents.AdvTree.Node tn.Text = produkt.sBezeichnung.Value tn.Tag = produkt.iLC_ProduktNr.Value tn.ImageIndex = produkt.iImageindex.Value Me.TreeStruktur.SelectedNode.Nodes.Add(tn) 'Me.TreeStruktur.SelectedNode.Nodes.Sort() Me.TreeStruktur.SelectedNode = clslc.FindNode(Me.TreeStruktur.Nodes, produkt.iLC_ProduktNr.Value, produkt.iLC_ProduktNr.Value) End If End Sub Private Sub TSBtnQuit_Click(sender As Object, e As EventArgs) Handles TSBtnQuit.Click Me.Close() End Sub Private Sub UmbenennenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles UmbenennenToolStripMenuItem.Click Dim s As String s = Me.TreeStruktur.SelectedNode.Text s = InputBox("Name", "Element umbenennen", s) If s <> "" Then produkt.Get_Produkt(Me.TreeStruktur.SelectedNode.Tag) produkt.sBezeichnung = New SqlTypes.SqlString(CType(s, String)) produkt.daMutiert_am = New SqlTypes.SqlDateTime(CType(Now, DateTime)) produkt.iMutierer = New SqlTypes.SqlInt32(CType(Globals.clsmitarbeiter.iMitarbeiternr.Value, Int32)) produkt.Save_Data() Me.TreeStruktur.SelectedNode.Text = s If Me.TreeStruktur.SelectedNode.Parent Is Nothing Then 'Me.TreeStruktur.Nodes.Sort() Else 'Me.TreeStruktur.SelectedNode.Parent.Nodes.Sort() End If End If End Sub Private Sub EintragLöschenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles EintragLöschenToolStripMenuItem.Click Delete_Entries() Me.TreeStruktur.SelectedNode = Me.TreeStruktur.Nodes(0) End Sub Sub Delete_Entries() Dim i As Integer 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 Dim s As String s = produkt.Check_Delete(Allnodes(i), 2) If s <> "" Then MsgBox("Das Element oder ein untergeornetes Element wird noch verwendet und kann nicht gelöscht werden." + vbCrLf + vbCrLf + s, MsgBoxStyle.Exclamation, "Produkt löschen") Exit Sub End If Next For i = Allnodes.Count - 1 To 0 Step -1 produkt.Delete_Produkt(Allnodes(i)) Try Dim tn As New DevComponents.AdvTree.Node tn = clslc.FindNode(Me.TreeStruktur.Nodes, Allnodes(i), Allnodes(i)) tn.Remove() Catch ex As Exception End Try Next End Sub 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 Sub SymbolÄndernToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SymbolÄndernToolStripMenuItem.Click Dim f As New frmIconSelector f.Images = Me.ImgList f.ShowDialog() If f.DialogResult = Windows.Forms.DialogResult.OK Then Me.TreeStruktur.SelectedNode.ImageIndex = f.SelectedImage produkt.Get_Produkt(Me.TreeStruktur.SelectedNode.Tag) produkt.iImageindex = New SqlTypes.SqlInt32(CType(f.SelectedImage, Int32)) produkt.Save_Data() End If End Sub Private Sub NeuesRootElementToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NeuesRootElementToolStripMenuItem.Click Dim s As String s = InputBox("Name des Strukturelementes", "Neues Strukturelement") If s <> "" Then produkt.Add_New(0) produkt.bIstStruktur = New SqlTypes.SqlBoolean(CType(True, Boolean)) produkt.sBezeichnung = New SqlTypes.SqlString(CType(s, String)) produkt.iImageindex = New SqlTypes.SqlInt32(CType(-1, Int32)) produkt.Save_Data() Dim tn As New DevComponents.AdvTree.Node tn.Text = produkt.sBezeichnung.Value tn.Tag = produkt.iLC_ProduktNr.Value tn.ImageIndex = produkt.iImageindex.Value Me.TreeStruktur.Nodes.Add(tn) 'Me.TreeStruktur.Nodes.Sort() Me.TreeStruktur.SelectedNode = clslc.FindNode(Me.TreeStruktur.Nodes, produkt.iLC_ProduktNr.Value, produkt.iLC_ProduktNr.Value) End If End Sub Private Sub TreeStruktur_AfterNodeDrop(sender As Object, e As DevComponents.AdvTree.TreeDragDropEventArgs) Handles TreeStruktur.AfterNodeDrop For Each n As DevComponents.AdvTree.Node In e.Nodes produkt.Get_Produkt(n.Tag) Try produkt.iLC_ProduktNr_Parent = New SqlTypes.SqlInt32(CType(e.NewParentNode.Tag, Int32)) Catch produkt.iLC_ProduktNr_Parent = New SqlTypes.SqlInt32(CType(0, Int32)) End Try produkt.Save_Data() Save_Order(n) Next Me.TreeStruktur.SelectedNode = clslc.FindNode(Me.TreeStruktur.Nodes, e.Node.Tag, e.Node.Tag) End Sub Public Sub Save_Order(ByRef n As DevComponents.AdvTree.Node) Dim parentno As Integer Dim sortkey As Integer Try parentno = n.Parent.Tag sortkey = parentno * 10 For Each n1 As DevComponents.AdvTree.Node In n.Parent.Nodes produkt.Get_Produkt(n1.Tag) sortkey = sortkey + 1 produkt.iSort = New SqlTypes.SqlInt32(CType(sortkey, Int32)) produkt.Save_Data() Next Catch parentno = 0 For Each n1 As DevComponents.AdvTree.Node In Me.TreeStruktur.Nodes produkt.Get_Produkt(n1.Tag) sortkey = sortkey + 1 produkt.iSort = New SqlTypes.SqlInt32(CType(sortkey, Int32)) produkt.Save_Data() Next End Try End Sub Private Sub SymbolEntfernenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SymbolEntfernenToolStripMenuItem.Click produkt.Get_Produkt(Me.TreeStruktur.SelectedNode.Tag) produkt.iImageindex = New SqlTypes.SqlInt32(CType(-1, Int32)) produkt.Save_Data() Me.TreeStruktur.SelectedNode.ImageIndex = -1 End Sub End Class