Imports System.ComponentModel Imports DevComponents.AdvTree Public Class frmdokumentvorlagen Dim m_toSelect As Boolean = False Property Vorlagenselect As Boolean Get Return m_toSelect End Get Set(value As Boolean) m_toSelect = value If value = True Then Me.tsbtnnew.Visible = False Me.ToolStripButton1.Visible = False Me.ToolStripButton2.Visible = False Me.ToolStripButton4.Visible = False End If End Set End Property Private Sub frmdokumentvorlagen_Load(sender As Object, e As EventArgs) Handles MyBase.Load Load_Tree() End Sub #Region "LoadTree" Sub Load_Tree() Me.treestruktur.Nodes.Clear() Get_tree() Dim db As New clsDB Dim s As String = "SELECT dbo.dms_vorlage.nreintrag, dbo.dms_vorlage.strukturnr, dbo.dms_vorlage.Bezeichnung, dbo.DMS_Struktur.Bezeichnung as Node FROM dbo.dms_vorlage INNER JOIN dbo.DMS_Struktur ON dbo.dms_vorlage.strukturnr = dbo.DMS_Struktur.Eintragnr where dbo.dms_vorlage.aktiv=1" db.Get_Tabledata("DMS", "", s) For Each dr As DataRow In db.dsDaten.Tables(0).Rows Dim n As DevComponents.AdvTree.Node n = SearchTheTreeView(Me.treestruktur, dr.Item("node")) If Not n Is Nothing Then Me.treestruktur.SelectedNode = n Dim tn As New DevComponents.AdvTree.Node tn.Text = dr.Item("Bezeichnung") tn.Tag = "V:" + dr.Item("nreintrag").ToString tn.ImageIndex = 2 Me.treestruktur.SelectedNode.Nodes.Add(tn) End If Next Me.treestruktur.ExpandAll() End Sub Sub Get_tree() Dim db As New clsDB db.Get_Tabledata("DMS_Struktur", "", "Select * from dms_struktur where aktiv=1") Load_Treeview(db.dsDaten, Me.treestruktur) End Sub Private Sub Load_Treeview(ByVal oSourceData As DataSet, ByRef tree As AdvTree) If Not (oSourceData Is Nothing) Then Dim oView As DataView = oSourceData.Tables(0).DefaultView Dim oTable As DataTable = oView.Table Dim oDS As DataSet = New DataSet() oDS.Tables.Add(oTable.Copy()) If oDS.Relations.Contains("SelfRefenceRelation") = False Then oDS.Relations.Add("SelfRefenceRelation", oDS.Tables(0).Columns("eintragnr"), oDS.Tables(0).Columns("parentid")) End If oTable.Dispose() oTable = Nothing LoadTreeView(oDS, tree) oDS.Dispose() oDS = Nothing End If End Sub ''' ''' Tree aufbauen ''' ''' ''' ''' Private Sub LoadTreeView(ByVal oDS As DataSet, ByRef oTreeview As AdvTree) 'Dim oTreeView As TreeView = New TreeView() Dim oDataRow As DataRow For Each oDataRow In oDS.Tables(0).Rows If Not oDataRow.IsNull("Parentid") Then If oDataRow.Item("Parentid") = 0 Then Dim oNode As New DevComponents.AdvTree.Node oNode.Text = oDataRow("Bezeichnung").ToString() oNode.Tag = oDataRow("eintragnr").ToString oNode.ImageIndex = 0 oNode.ImageIndex = 0 oTreeview.Nodes.Add(oNode) RecursivelyLoadTree(oDataRow, oNode) End If End If Next oDataRow oDS.Dispose() oDS = Nothing End Sub ''' ''' Child-Nodes hinzufügen ''' ''' ''' ''' Private Sub RecursivelyLoadTree(ByVal oDataRow As DataRow, ByRef oNode As DevComponents.AdvTree.Node) Dim oChildRow As DataRow For Each oChildRow In oDataRow.GetChildRows("SelfRefenceRelation") Dim oChildNode As New DevComponents.AdvTree.Node() oChildNode.Text = oChildRow("Bezeichnung").ToString() oChildNode.Tag = oChildRow("eintragnr").ToString() If oChildRow("eintragnr") = 0 Then oChildNode.ImageIndex = 0 oChildNode.ImageIndex = 0 Else oChildNode.ImageIndex = 1 oChildNode.ImageIndex = 1 End If oNode.Nodes.Add(oChildNode) RecursivelyLoadTree(oChildRow, oChildNode) Next oChildRow End Sub Dim NodesThatMatch As New List(Of DevComponents.AdvTree.Node) Private Function SearchTheTreeView(ByVal TV As AdvTree, ByVal TextToFind As String) As DevComponents.AdvTree.Node ' Empty previous NodesThatMatch.Clear() ' Keep calling RecursiveSearch For Each TN As DevComponents.AdvTree.Node In TV.Nodes If TN.Text = TextToFind Then NodesThatMatch.Add(TN) End If RecursiveSearch(TN, TextToFind) Next If NodesThatMatch.Count > 0 Then Return NodesThatMatch(0) Else Return Nothing End If End Function Private Sub RecursiveSearch(ByVal treeNode As DevComponents.AdvTree.Node, ByVal TextToFind As String) ' Keep calling the test recursively. For Each TN As DevComponents.AdvTree.Node In treeNode.Nodes If TN.Text = TextToFind Then NodesThatMatch.Add(TN) End If RecursiveSearch(TN, TextToFind) Next End Sub Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click Me.Close() End Sub #End Region Private Sub tsbtnnew_Click(sender As Object, e As EventArgs) Handles tsbtnnew.Click Dim f As New frmImportVorlage Dim strukturnr As String strukturnr = Me.treestruktur.SelectedNode.Tag If strukturnr.IndexOf("V:") > -1 Then f.Strukturnr = Me.treestruktur.SelectedNode.Parent.Tag Else f.Strukturnr = Me.treestruktur.SelectedNode.Tag End If f.ShowDialog() If f.DialogResult = DialogResult.OK Then Load_Tree() Me.treestruktur.SelectedNode = SearchTheTreeView(Me.treestruktur, f.TextBox1.Text) End If End Sub Private Sub ToolStripButton4_Click(sender As Object, e As EventArgs) Handles ToolStripButton4.Click If Me.treestruktur.SelectedNode.Tag.ToString.IndexOf("V:") > -1 Then Dim f As New frmImportVorlage f.TextBox1.Text = Me.treestruktur.SelectedNode.Text f.TextBox2.Visible = False f.Label2.Visible = False f.Button1.Visible = False f.TextBox1.Select() f.eintragnr = Me.treestruktur.SelectedNode.Tag f.Text = "Vorlagenbezeichnung ändern" f.ShowDialog() If f.DialogResult = DialogResult.OK Then Load_Tree() Me.treestruktur.SelectedNode = SearchTheTreeView(Me.treestruktur, f.TextBox1.Text) End If Else MsgBox("Es ist keine Vorlage für die Änderung gewählt.", vbExclamation) End If End Sub Private Sub ToolStripButton2_Click(sender As Object, e As EventArgs) Handles ToolStripButton2.Click If Me.treestruktur.SelectedNode.Tag.ToString.IndexOf("V:") > -1 Then If MsgBox("Möchten Sie die Vorlage '" + Me.treestruktur.SelectedNode.Text + "' wirklich löschen?", vbYesNo + vbQuestion) = MsgBoxResult.Yes Then Dim db As New clsDB Dim s As String s = Me.treestruktur.SelectedNode.Tag.ToString.Replace("V:", "") db.Get_Tabledata("DMS", "", "Select * from dms_vorlage where nreintrag=" + s) db.dsDaten.Tables(0).Rows(0).Item(4) = False db.dsDaten.Tables(0).Rows(0).Item(6) = Now db.dsDaten.Tables(0).Rows(0).Item(7) = Globals.ActUser db.Update_Data() Load_Tree() End If Else MsgBox("Es ist keine Vorlage zum Löschen gewählt.", vbExclamation) End If End Sub Private Sub NeueVorlageToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NeueVorlageToolStripMenuItem.Click tsbtnnew_Click(sender, e) End Sub Private Sub VorlageÄndernToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles VorlageÄndernToolStripMenuItem.Click ToolStripButton4_Click(sender, e) End Sub Private Sub VorlagelöschenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles VorlagelöschenToolStripMenuItem.Click ToolStripButton2_Click(sender, e) End Sub Private Sub ContextMenuStrip1_Opening(sender As Object, e As CancelEventArgs) Handles ContextMenuStrip1.Opening If Me.treestruktur.SelectedNode.Tag.ToString.IndexOf("V:") = -1 Then Me.VorlageÄndernToolStripMenuItem.Enabled = False Me.VorlagelöschenToolStripMenuItem.Enabled = False Else Me.VorlageÄndernToolStripMenuItem.Enabled = True Me.VorlagelöschenToolStripMenuItem.Enabled = True End If If Me.Vorlagenselect = True Then Me.NeueVorlageToolStripMenuItem.Visible = False Me.VorlageÄndernToolStripMenuItem.Visible = False Me.VorlagelöschenToolStripMenuItem.Visible = False Me.VorlageAuswählenToolStripMenuItem.Visible = True Else Me.NeueVorlageToolStripMenuItem.Visible = True Me.VorlageÄndernToolStripMenuItem.Visible = True Me.VorlagelöschenToolStripMenuItem.Visible = True Me.VorlageAuswählenToolStripMenuItem.Visible = False End If End Sub Private Sub VorlageAuswählenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles VorlageAuswählenToolStripMenuItem.Click If Me.treestruktur.SelectedNode.Tag.ToString.IndexOf("V:") < 0 Then MsgBox("Es wirde keine Vorlage ausgwählt.", vbInformation) Exit Sub End If Me.DialogResult = DialogResult.OK Me.Close() End Sub Private Sub treestruktur_DoubleClick(sender As Object, e As EventArgs) Handles treestruktur.DoubleClick If Me.Vorlagenselect = True Then VorlageAuswählenToolStripMenuItem_Click(sender, e) End If End Sub End Class