Imports DevExpress.XtraTreeList Imports DevExpress.XtraTreeList.Columns Imports DevExpress.XtraTreeList.Nodes.Operations Imports DevExpress.XtraTreeList.Nodes Imports DevExpress.XtraSplashScreen Imports System.Threading Public Class frmNodeNavigation Dim DTNODES As DataTable Dim DT_ADDING_USERS As DataTable Dim DT_VWPMO_CONSTRUCTOR_FORMS As DataTable Private RunningTask As Task Private RunningTaskTokenSource As New CancellationTokenSource Private RunningTaskToken = RunningTaskTokenSource.Token Private oEntityID As Int16 Private oConstructID As Int16 Private CONSTRUCTOR_DETAIL_ID As Int16 Public Sub New(pEntityID As Int16, oConstructID As Int16) ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() oEntityID = pEntityID oConstructID = oConstructID ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. End Sub Private Sub frmNodeNavigation_Load(sender As Object, e As EventArgs) Handles Me.Load Dim Sql = String.Format("SELECT *, [dbo].[FNPMO_GETOBJECTCAPTION]('{0}','FORMVIEW_TITLE' + CONVERT(VARCHAR(5), FORM_VIEW_ID), {1}) AS 'CAPTION' " & "FROM VWPMO_CONSTRUCTOR_FORMS WHERE SCREEN_ID = {2} AND CONSTRUCT_ID = {3} ORDER BY SEQUENCE", USER_LANGUAGE, CURRENT_SCREEN_ID, CURRENT_SCREEN_ID, oConstructID) DT_VWPMO_CONSTRUCTOR_FORMS = ClassDatabase.Return_Datatable(Sql, True) Load_nodes() End Sub Async Function Load_nodes() As Threading.Tasks.Task Dim oHandle = SplashScreenManager.ShowOverlayForm(Me) Try Load_Datafor_Entity() Dim oToken = RunningTaskTokenSource.Token Dim Sql = String.Format("select T.GUID,T.RECORD_ID, T.NODE_CONFIG_ID,T.NODE_CAPTION,T.ID1, T.BACK_COLOR,T.PARENT_GUID from VWPMO_STRUCTURE_NODES T INNER JOIN VWPMO_CONSTRUCTOR_FORMS T1 ON T.ENTITY_ID = T1.FORM_ID WHERE T1.CONSTRUCT_ID = {0}", 1) DTNODES = ClassDatabase.Return_Datatable(Sql, True) Sql = String.Format("select T.* from TBPMO_STRUCTURE_NODES_CONFIGURATION T INNER JOIN VWPMO_CONSTRUCTOR_FORMS T1 ON T.ENTITY_ID = T1.FORM_ID WHERE T1.CONSTRUCT_ID = {0}", 1) Dim DT_TREEVIEW_CONFIGURATION = ClassDatabase.Return_Datatable(Sql) For Each row As DataRow In DT_TREEVIEW_CONFIGURATION.Rows Try Dim bimage = row.Item("NODE_IMAGE") If Not IsDBNull(bimage) Then Dim Node_image = ByteArrayToBitmap(bimage) ImageCollection1.AddImage(Node_image, row.Item("GUID")) End If Catch ex As Exception End Try Next TreeListDevexpress.DataSource = DTNODES TreeListDevexpress.KeyFieldName = "GUID" TreeListDevexpress.ParentFieldName = "PARENT_GUID" TreeListDevexpress.StateImageList = ImageCollection1 Try TreeListDevexpress.Columns.ColumnByName("colRECORD_ID").Visible = False Catch ex As Exception End Try Try TreeListDevexpress.Columns.ColumnByName("colNODE_CONFIG_ID").Visible = False Catch ex As Exception End Try Try TreeListDevexpress.Columns.ColumnByName("colBACK_COLOR").Visible = False TreeListDevexpress.Columns.ColumnByName("colID1").Visible = False Catch ex As Exception End Try Catch ex As Exception Finally SplashScreenManager.CloseOverlayForm(oHandle) End Try End Function Private Sub TreeListDevexpress_ColumnFilterChanged(sender As Object, e As EventArgs) Dim tree As TreeList = TryCast(sender, TreeList) Dim filteredColumns As List(Of TreeListColumn) = tree.Columns.Cast(Of TreeListColumn)().Where(Function(c) c.FilterInfo.AutoFilterRowValue IsNot Nothing).ToList() If filteredColumns.Count = 0 Then tree.CollapseAll() Return End If tree.BeginUpdate() For Each col As TreeListColumn In filteredColumns Dim op As New CollapseChildrenOperation(col.FilterInfo.AutoFilterRowValue.ToString(), col) tree.NodesIterator.DoOperation(op) Next col tree.EndUpdate() End Sub Public Class CollapseChildrenOperation Inherits TreeListOperation Private filterValue As String Private column As TreeListColumn Public Sub New(ByVal filter As String, ByVal col As TreeListColumn) filterValue = filter column = col End Sub Private Function IsNodeMatchFilter(ByVal node As TreeListNode, ByVal column As TreeListColumn) As Boolean Return node.GetDisplayText(column).Contains(filterValue) End Function Public Overrides Sub Execute(ByVal node As TreeListNode) If IsNodeMatchFilter(node, column) Then node.TreeList.MakeNodeVisible(node) CollapseChildren(node) End If End Sub Public Sub CollapseChildren(ByVal node As TreeListNode) 'node.Visible = true; For Each childNode As TreeListNode In node.Nodes CollapseChildren(childNode) Next childNode node.Expanded = False End Sub End Class Private Sub TreeListDevexpress_FocusedNodeChanged(sender As Object, e As FocusedNodeChangedEventArgs) Handles TreeListDevexpress.FocusedNodeChanged For Each treeListNode As DevExpress.XtraTreeList.Nodes.TreeListNode In TreeListDevexpress.Selection Dim oID = treeListNode.Id Dim PID = treeListNode.ParentNode Dim Column_RecID As DevExpress.XtraTreeList.Columns.TreeListColumn = TreeListDevexpress.Columns("RECORD_ID") Dim RecID = e.Node.GetDisplayText(Column_RecID) Console.WriteLine(oID) Next End Sub Private Sub TreeListDevexpress_GetStateImage(sender As Object, e As GetStateImageEventArgs) Handles TreeListDevexpress.GetStateImage Dim Column_Config_ID As DevExpress.XtraTreeList.Columns.TreeListColumn = TreeListDevexpress.Columns("NODE_CONFIG_ID") Dim configid = e.Node.GetDisplayText(Column_Config_ID) e.Node.StateImageIndex = ImageCollection1.Images.Keys.IndexOf(configid) End Sub Sub Load_Adding_users() Try Dim oSql = String.Format("SELECT * FROM TBPMO_ENTITY_USERRIGHT_ADDING where ENTITY_ID IN (SELECT FORM_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0})", oConstructID) DT_ADDING_USERS = ClassDatabase.Return_Datatable(oSql, False) Catch ex As Exception ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, "Error in Load_Adding_users") End Try End Sub Private Sub Load_Configurable_Nodes() Try Dim oSql = String.Format("SELECT * FROM TBPMO_STRUCTURE_NODES_CONFIGURATION where TYPE_NODE = 1000 AND ENTITY_ID IN (SELECT FORM_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0})", oConstructID) NODE_CONFIGURABLE_NODES_DT = ClassDatabase.Return_Datatable(oSql, False) Catch ex As Exception ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, "Error in Load_Configurable_Nodes") End Try End Sub Sub Load_Datafor_Entity() Try If oEntityID <> CURRENT_ENTITY_ID Then LOGGER.Info("Entity-Data needs to be reloaded...") CURRENT_ENTITY_ID = oEntityID CURRENT_CONSTRUCTOR_ID = oConstructID Load_Adding_users() Load_Configurable_Nodes() End If Dim sw As New SW("Load_Datafor_Entity") 'If NODE_NAVIGATION = True Then ' ENTITY_ID = ClassNodeNavigation.Return_ENTITY_FOR_TAG(SelectedNode.Tag) ' CURRENT_ENTITY_ID = ENTITY_ID 'End If Dim result = (From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable() Select form Where form.Item("FORM_ID") = oEntityID).Single() CONSTRUCTOR_DETAIL_ID = result.Item("GUID") ' CONSTRUCT_EXPAND = result.Item("EXPAND") Dim FORM_DATE_FORMAT = result.Item("DATE_FORMAT") If FORM_DATE_FORMAT <> USER_DATE_FORMAT Then CURRENT_DATE_FORMAT = USER_DATE_FORMAT Else CURRENT_DATE_FORMAT = FORM_DATE_FORMAT End If 'LOCK_CONTROLS_BG_LOAD = result.Item("LOCK_CONTROLS_BG_LOAD") FAU_AD_DOMAIN = "" FAU_AD_SERVER = "" FAU_AD_USER = "" FAU_AD_USER_PW = "" If DT_ADDING_USERS.Rows.Count > 0 Then 'Überprüfen ob für diese Entität ein spezifischer windream-User verwendet wird, wenn Dateien abgelegt werden? Dim query1 = From _user In DT_ADDING_USERS.AsEnumerable() Select _user Where _user.Item("ENTITY_ID") = oEntityID Dim Rows1 = query1.ToList() For Each _row In Rows1 FAU_AD_DOMAIN = _row.Item("AD_DOMAIN").ToString() FAU_AD_SERVER = _row.Item("AD_SERVER").ToString() FAU_AD_USER = _row.Item("AD_USER").ToString() Dim wrapper As New ClassEncryption("!35452didalog=") Dim PWplainText As String ' DecryptData throws if the wrong password is used. Try PWplainText = wrapper.DecryptData(_row.Item("AD_USER_PW").ToString()) Catch ex As Exception LOGGER.Warn("- the Password for FileAddingUser '" & FAU_AD_USER & "' could not be decrypted") PWplainText = "" End Try FAU_AD_USER_PW = PWplainText Next End If sw.Done() ' Load_Entity_Data_CONTROLS_RECORDS() Catch ex As Exception ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, "Load_Datafor_Entity: " & ex.StackTrace) End Try End Sub End Class