3.7.2 Optimierungen und Button Knoten hinzufügen

This commit is contained in:
Developer01
2026-03-16 09:49:12 +01:00
parent 570d1161f8
commit 3a44abf77b
26 changed files with 1051 additions and 4761 deletions

View File

@@ -44,6 +44,8 @@ Public Class frmNodeNavigation
Private Property DT_RESULTLIST_OPTIONS As DataTable
Private Property DT_RESULTLIST_VARIABLE_VALUE As DataTable
Private Property DT_ENTITY_DATA As DataTable
Private Property DT_CONFIGURABLE_NODES As DataTable
Private Property ENTITY_TYPE As String = ""
Private Property DT_TBPMO_FORM_VIEW As DataTable
Private Property DT_CONSTRUCT_VIEW As DataTable
@@ -267,14 +269,14 @@ Public Class frmNodeNavigation
imageInit.EndInit()
End If
End Try
TreeListDevexpress.StateImageList = ImageCollection1
TreeListDevexpress.BeginUpdate()
Try
TreeListDevexpress.DataSource = DT_STRUCTURE_NODES
TreeListDevexpress.KeyFieldName = "GUID"
TreeListDevexpress.ParentFieldName = "PARENT_GUID"
TreeListDevexpress.Columns("SEQUENCE").SortOrder = SortOrder.Ascending
TreeListDevexpress.StateImageList = ImageCollection1
Dim oVisibleColumns As New System.Collections.Generic.HashSet(Of String)(StringComparer.OrdinalIgnoreCase) From {"NODE_CAPTION"}
For Each oColumn As TreeListColumn In TreeListDevexpress.Columns
@@ -283,7 +285,7 @@ Public Class frmNodeNavigation
Finally
TreeListDevexpress.EndUpdate()
End Try
TreeListDevexpress.Refresh() ' ✅ Erzwingt sofortiges Neuzeichnen der Icons
JumptoNode()
Catch ex As Exception
@@ -406,8 +408,8 @@ Public Class frmNodeNavigation
CurrentNodeConfigId = oNodeConfigId
AvailableConfigNodes.Clear()
If Not IsNothing(NODE_CONFIGURABLE_NODES_DT) Then
Dim oNodeConfigList = NODE_CONFIGURABLE_NODES_DT.Select($"PARENT_NODE = {oNodeConfigId}").
If Not IsNothing(DT_CONFIGURABLE_NODES) Then
Dim oNodeConfigList = DT_CONFIGURABLE_NODES.Select($"PARENT_NODE = {oNodeConfigId}").
Cast(Of DataRow).
Select(Function(row) New frmNewNode.NodeConfig() With {
.Id = row.Item("GUID"),
@@ -417,7 +419,7 @@ Public Class frmNodeNavigation
End If
NNLogger.Info($"Node changed: NodeID={oNodeConfigId}, NodeGUID={oGuid}, ConfigNodesFound={AvailableConfigNodes.Count}, " &
$"ButtonVisible={btnCreateNewNode.Visibility}, ConfigTableRows={If(IsNothing(NODE_CONFIGURABLE_NODES_DT), 0, NODE_CONFIGURABLE_NODES_DT.Rows.Count)}")
$"ButtonVisible={btnCreateNewNode.Visibility}, ConfigTableRows={If(IsNothing(DT_CONFIGURABLE_NODES), 0, DT_CONFIGURABLE_NODES.Rows.Count)}")
' NEUE zentrale Methode aufrufen statt direkter Manipulation
@@ -465,9 +467,6 @@ Public Class frmNodeNavigation
btnCreateNewNode.Enabled = False
Else
Record_Group_Enable(True)
' btnCreateNewNode.Enabled = True
End If
If RIGHT_READ_ONLY_DOC = False Then
@@ -508,11 +507,11 @@ Public Class frmNodeNavigation
End Sub
' Neue zentrale Methode zum konsistenten Setzen des Button-Status
Private Sub UpdateCreateNodeButtonState()
Try
' *** HIER: Eingangsdiagnose ***
Try ' *** HIER: Eingangsdiagnose ***
NNLogger.Debug($"UpdateCreateNodeButtonState called - Visibility={btnCreateNewNode.Visibility}, " &
$"CurrentEnabled={btnCreateNewNode.Enabled}, AvailableNodes={AvailableConfigNodes.Count}, " &
$"ConfigTableExists={Not IsNothing(NODE_CONFIGURABLE_NODES_DT)}")
$"ConfigTableExists={Not IsNothing(DT_CONFIGURABLE_NODES)}, " &
$"RIGHT_RECORD_AND_FILE_READ_ONLY={RIGHT_RECORD_AND_FILE_READ_ONLY}")
If btnCreateNewNode.Visibility <> DevExpress.XtraBars.BarItemVisibility.Always Then
Exit Sub
@@ -520,12 +519,14 @@ Public Class frmNodeNavigation
' Button aktivieren wenn:
' 1. Konfigurierbare Nodes existieren UND
' 2. Verfügbare Config-Nodes für aktuellen Node vorhanden sind
' 2. Verfügbare Config-Nodes für aktuellen Node vorhanden sind UND
' 3. Benutzer hat Schreibrechte (nicht Read-Only)
Dim shouldEnable As Boolean = False
If Not IsNothing(NODE_CONFIGURABLE_NODES_DT) AndAlso
NODE_CONFIGURABLE_NODES_DT.Rows.Count > 0 AndAlso
AvailableConfigNodes.Count > 0 Then
If Not IsNothing(DT_CONFIGURABLE_NODES) AndAlso
DT_CONFIGURABLE_NODES.Rows.Count > 0 AndAlso
AvailableConfigNodes.Count > 0 AndAlso
RIGHT_RECORD_AND_FILE_READ_ONLY = False Then
shouldEnable = True
End If
@@ -539,7 +540,7 @@ Public Class frmNodeNavigation
If shouldEnable Then
LOGGER.Debug($"btnCreateNewNode ENABLED (AvailableConfigNodes: {AvailableConfigNodes.Count})")
Else
LOGGER.Debug($"btnCreateNewNode DISABLED (ConfigNodes: {AvailableConfigNodes.Count})")
LOGGER.Debug($"btnCreateNewNode DISABLED (ConfigNodes: {AvailableConfigNodes.Count}, ReadOnly: {RIGHT_RECORD_AND_FILE_READ_ONLY})")
End If
Catch ex As Exception
@@ -712,13 +713,13 @@ Public Class frmNodeNavigation
Try
btnCreateNewNode.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
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 = MYDB_ECM.GetDatatable(oSql)
DT_CONFIGURABLE_NODES = MYDB_ECM.GetDatatable(oSql)
NNLogger.Info($"Load_Configurable_Nodes: ConstructID={oConstructID}, " &
$"FoundRows={If(IsNothing(NODE_CONFIGURABLE_NODES_DT), 0, NODE_CONFIGURABLE_NODES_DT.Rows.Count)}")
$"FoundRows={If(IsNothing(DT_CONFIGURABLE_NODES), 0, DT_CONFIGURABLE_NODES.Rows.Count)}")
If Not IsNothing(NODE_CONFIGURABLE_NODES_DT) Then
If NODE_CONFIGURABLE_NODES_DT.Rows.Count > 0 Then
If Not IsNothing(DT_CONFIGURABLE_NODES) Then
If DT_CONFIGURABLE_NODES.Rows.Count > 0 Then
btnCreateNewNode.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
' Initial-State setzen
UpdateCreateNodeButtonState()
@@ -745,7 +746,6 @@ Public Class frmNodeNavigation
End If
Dim sw As New SW("Load_Datafor_Entity")
@@ -1254,6 +1254,8 @@ Public Class frmNodeNavigation
End If
Else
RIGHT_RECORD_AND_FILE_READ_ONLY = False
RIGHT_READ_ONLY_DOC = False
If DT_RIGHTS_GROUP.Rows.Count > 0 Or DT_RIGHTS_USER.Rows.Count > 0 Then
'DATENSATZ-RECHTE
If RIGHT_ADD_R = False Then
@@ -1261,22 +1263,14 @@ Public Class frmNodeNavigation
End If
If RIGHT_EDIT_R = False Then
' tslblLocked.Visible = True
bbtnitmRecEdit.Enabled = False
bbtnitmRecSave.Enabled = False
' tsButtonDelete.Enabled = False
' tsmiMassChanges.Enabled = False
If RIGHT_ADD_R = False Then
bbtnitmRecSave.Enabled = False
End If
End If
If RIGHT_DELETE_R = False Then
' tsButtonDelete.Enabled = False
End If
'DATEI-RECHTE
If RIGHT_READ_ONLY_DOC = True Then
' tslblFileslocked.Visible = True
End If
End If
End If
sw.Done()
@@ -1380,87 +1374,6 @@ Public Class frmNodeNavigation
' Mark the event as handled
e.Handled = True
End Sub
'Private Sub TreeListDevexpress_DoubleClick(sender As Object, e As EventArgs) Handles TreeListDevexpress.DoubleClick
' If TreeListDevexpress.FindFilterText <> "" Then
' TreeListDevexpress.FindFilterText = ""
' End If
' MyFocusedNode = Nothing
' Dim oMyTreeList As TreeList = sender
' Dim oTlHI As TreeListHitInfo = oMyTreeList.CalcHitInfo(oMyTreeList.PointToClient(MousePosition))
' If Not IsNothing(oTlHI.Node) Then
' MyFocusedNode = sender
' End If
'End Sub
'Private Async Sub LoadRecord(pRecord As Integer)
' Try
' CURRENT_RECORD_ID = pRecord
' CURRENT_SEARCH_TYPE = "RECORD"
' ClassHelper.GetDocrecordLinks(CURRENT_RECORD_ID)
' 'Wird jetzt bei BeforeRowChange überprüft
' DisableEditMode()
' ' muss vor show selected record data kommen,
' ' sodass die datasource für die angehakten werte existiert (checked list box)
' CtrlBuilder.WatchRecordChanges = False
' ClassControlValues.LoadControlValuesListWithPlaceholders(CURRENT_ENTITY_ID, CURRENT_RECORD_ID, 0, CtrlBuilder.AllControls, _EntityId)
' CtrlBuilder.WatchRecordChanges = True
' If CURRENT_RECORD_ID > 0 Then
' Await Show_Selected_Record_Data(CURRENT_RECORD_ID)
' End If
' ClassRightManagement.Check_Set_Rights(CURRENT_RECORD_ID, _EntityId)
' CONTROL_HANDLING()
' If CURRENT_RECORD_ID > 0 Then
' If RIGHT_RECORD_AND_FILE_READ_ONLY = False And CtrlCommandUI.IsInsert = False Then
' If DT_CONTROLS_ENTITY.Rows.Count = COUNT_RO_CONTROLS Then
' bbtnitmRecEdit.Enabled = False
' bbtnitmRecSave.Enabled = False
' 'tsButtonDelete.Enabled = False
' Else
' ' bbtnitmEditRec.Enabled = True
' End If
' End If
' If RIGHT_RECORD_AND_FILE_READ_ONLY = True Then
' ' bbtniCopyRecord.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
' ' bbtniNewVariant2.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
' ' bbtniParentLink.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
' ' bbtniWFTask.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
' Else
' ' bbtniCopyRecord.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
' ' bbtniNewVariant2.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
' ' bbtniParentLink.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
' ' bbtniWFTask.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
' End If
' 'tsButtonAdd.Enabled = False
' 'MsgBox(SplitContainerFORM.Collapsed)
' 'MsgBox(SplitContainerMain.Collapsed)
' 'MsgBox(SplitContainerTop.Collapsed)
' End If
' 'Liste der geänderten Control Values leeren
' CtrlBuilder.ControlsChanged.Clear()
' Catch ex As Exception
'NNLogger.Error(ex)
' ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error:", ex.Message & vbNewLine & ex.StackTrace)
' End Try
'End Sub
Private Sub DateiÖffnenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DateiÖffnenToolStripMenuItem.Click
Open_File()
End Sub
@@ -2381,7 +2294,7 @@ Public Class frmNodeNavigation
NNLogger.Warn("Unexpected Error in Drag_Drop: " & ex.Message)
MsgBox("Unexpected Error in DragDrop - Please check the log for further information!", MsgBoxStyle.Exclamation)
Finally
Cursor = Cursors.Default
End Try
End Function
Private DROPPED_CHECKED As Boolean = False
@@ -2434,6 +2347,7 @@ Public Class frmNodeNavigation
Exit Sub
End If
End If
ClassHelper.REMOVE_OLD_DROP_FILES()
ClassHelper.Create_USER_FILE_TABLE()
If Not IsNothing(CURRENT_TBPMO_FILES_USER) Then
If CURRENT_TBPMO_FILES_USER.Rows.Count > 0 Then
@@ -3556,7 +3470,7 @@ Public Class frmNodeNavigation
Exit Sub
End If
Dim oRow = NODE_CONFIGURABLE_NODES_DT.Select($"GUID = {oForm.Id}").First()
Dim oRow = DT_CONFIGURABLE_NODES.Select($"GUID = {oForm.Id}").First()
Dim oCreateRecord = oRow.Item("CREATE_RECORD")
Dim oParentNodeGuid As Integer = MyFocusedNode.Item("GUID")