Fix NodeId display, prepare multiselect, select active ribbon page on ribbon merging

This commit is contained in:
Jonathan Jenne
2023-07-24 16:00:32 +02:00
parent ea5ea5f205
commit 5cb526e7a4
7 changed files with 209 additions and 146 deletions

View File

@@ -3,20 +3,17 @@ Imports DevExpress.XtraTreeList.Columns
Imports DevExpress.XtraTreeList.Nodes.Operations
Imports DevExpress.XtraTreeList.Nodes
Imports DevExpress.XtraSplashScreen
Imports System.Threading
Imports DevExpress.Utils
Imports DevExpress.XtraScheduler
Imports DevExpress.Data
Imports DD_Record_Organizer.frmConstructor_Main
Imports DevExpress.Data.Filtering.Helpers.SubExprHelper.CriteriaTokens
Imports DevExpress.XtraEditors
Imports DevExpress.XtraGrid.Views.Grid
Imports DevExpress.XtraPrinting
Imports System.Threading
Imports System.Text
Imports System.IO
Imports DD_LIB_Standards
Imports System.Runtime.InteropServices
Imports DD_LIB_Standards
Imports DigitalData.Modules.Base
Public Class frmNodeNavigation
<DllImport("Shell32", CharSet:=CharSet.Auto, SetLastError:=True)>
@@ -399,109 +396,117 @@ Public Class frmNodeNavigation
End Sub
End Class
Private Sub TreeListDevexpress_FocusedNodeChanged(sender As Object, e As FocusedNodeChangedEventArgs) Handles TreeListDevexpress.FocusedNodeChanged
FocusedNode = Nothing
If oFilterActive Then
Exit Sub
End If
For Each treeListNode As DevExpress.XtraTreeList.Nodes.TreeListNode In TreeListDevexpress.Selection
FocusedNode = treeListNode
RPGNodes.Enabled = True
Dim oID = treeListNode.Id
Console.Write($"Node ID: {oID}")
Dim PID = treeListNode.ParentNode
Dim Column_pRecord As DevExpress.XtraTreeList.Columns.TreeListColumn = TreeListDevexpress.Columns("RECORD_ID")
Dim Column_Caption As DevExpress.XtraTreeList.Columns.TreeListColumn = TreeListDevexpress.Columns("NODE_CAPTION")
Dim pRecord = e.Node.GetDisplayText(Column_pRecord)
Dim oNode_Caption = e.Node.GetDisplayText(Column_Caption)
If oID > 0 Then
Update_Status_Label(True, oID)
Else
Exit Sub
End If
Dim oNodeInfo = $"NodeGUID {oID}"
Console.Write(oNodeInfo)
If pRecord.Length > 0 Then
oNodeInfo += $" - RecordID {pRecord}"
Node_AfterSelect = True
'Dim sw As New SW("TreeViewMain_AfterSelect1")
' Dim swAll As New SW("TreeViewMain_AfterSelect")
DisableEditMode()
Dim fl = FORM_LOADED
Dim firstORFOLLWOWIN = False
If e.Node Is Nothing Then
Exit Sub
End If
' ClassNodeNavigation.Check_NODE_CONFIG_ID(oEntityID, SelectedNode)
'For Each treeListNode As TreeListNode In TreeListDevexpress.Selection
'FocusedNode = TreeListNode
CURRENT_RECORD_ID = pRecord
ClassHelper.GetDocrecordLinks(CURRENT_RECORD_ID)
CURRENT_ENTITY_ID = oEntityID
CURRENT_NODE_GUID = oID
SELECTED_NODE_CAPTION = oNode_Caption
CURRENT_SEARCH_TYPE = "RECORD"
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(oEntityID, CURRENT_RECORD_ID, 0, CtrlBuilder.AllControls, oEntityID)
CtrlBuilder.WatchRecordChanges = True
Show_Selected_Record_Data(CURRENT_RECORD_ID)
FocusedNode = e.Node
RPGNodes.Enabled = True
Dim oNodeId = e.Node.Id
Console.Write($"Node ID: {oNodeId}")
Dim oRowObject = TreeListDevexpress.GetRow(oNodeId)
If TypeOf oRowObject IsNot DataRowView Then
Exit Sub
End If
If oNodeId = 0 Then
Exit Sub
End If
Dim oRowView As DataRowView = oRowObject
Dim oRow As DataRow = oRowView.Row
Dim oGuid = oRow.Item("GUID")
Dim oNodeCaption = oRow.Item("NODE_CAPTION")
Dim oRecordId = oRow.ItemEx("RECORD_ID", 0)
Dim oHasRecordId = (oRecordId > 0)
Dim oParentNode = e.Node.ParentNode
If oHasRecordId Then
Update_Status_Label(True, $"NodeGUID {oGuid} - RecordID {oRecordId}", EditState.None)
Else
Update_Status_Label(True, $"NodeGUID {oGuid}", EditState.None)
End If
If oHasRecordId Then
'oNodeInfo += $" - RecordID {oRecordId}"
Node_AfterSelect = True
'Dim sw As New SW("TreeViewMain_AfterSelect1")
' Dim swAll As New SW("TreeViewMain_AfterSelect")
DisableEditMode()
' ClassNodeNavigation.Check_NODE_CONFIG_ID(oEntityID, SelectedNode)
CURRENT_RECORD_ID = oRecordId
ClassHelper.GetDocrecordLinks(CURRENT_RECORD_ID)
CURRENT_ENTITY_ID = oEntityID
CURRENT_NODE_GUID = oNodeId
SELECTED_NODE_CAPTION = oNodeCaption
CURRENT_SEARCH_TYPE = "RECORD"
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(oEntityID, CURRENT_RECORD_ID, 0, CtrlBuilder.AllControls, oEntityID)
CtrlBuilder.WatchRecordChanges = True
Show_Selected_Record_Data(CURRENT_RECORD_ID)
ClassRightManagement.Check_Set_Rights(CURRENT_RECORD_ID, oEntityID)
CONTROL_HANDLING()
ClassRightManagement.Check_Set_Rights(CURRENT_RECORD_ID, oEntityID)
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
Else
bbtnitmRecEdit.Enabled = True
In_Visible_Record_Group(True)
End If
End If
If RIGHT_RECORD_AND_FILE_READ_ONLY = True Then
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
Else
bbtnitmRecEdit.Enabled = True
In_Visible_Record_Group(True)
End If
' 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
If RIGHT_READ_ONLY_DOC = False Then
Doc_ReadOnlyHandler(True)
If RIGHT_RECORD_AND_FILE_READ_ONLY = True Then
bbtnitmRecEdit.Enabled = False
bbtnitmRecSave.Enabled = False
Else
bbtnitmRecEdit.Enabled = True
In_Visible_Record_Group(True)
End If
'Liste der geänderten Control Values leeren
CtrlBuilder.ControlsChanged.Clear()
Load_DocGrid_Layout()
'Load_Grid_Layout()
'Load_Variants_Grid_Layout()
'swAll.Done()
Node_AfterSelect = False
Else
End If
Update_Status_Label(True, oNodeInfo, EditState.None)
Next
If RIGHT_READ_ONLY_DOC = False Then
Doc_ReadOnlyHandler(True)
End If
'Liste der geänderten Control Values leeren
CtrlBuilder.ControlsChanged.Clear()
Load_DocGrid_Layout()
'Load_Grid_Layout()
'Load_Variants_Grid_Layout()
'swAll.Done()
Node_AfterSelect = False
End If
End Sub
Public Sub Update_Status_Label(visible As Boolean, Optional text As String = "", Optional state As EditState = EditState.None)
@@ -800,23 +805,38 @@ Public Class frmNodeNavigation
End Sub
Sub Update_Record_Label(RecordId As Integer)
Try
Dim SQL As String = "SELECT ADDED_WHO, CONVERT(VARCHAR(16),ADDED_WHEN,20) AS ADDED_WHEN, COALESCE(CHANGED_WHO,'') AS CHANGED_WHO, COALESCE(CONVERT(VARCHAR(16),CHANGED_WHEN,20),'') AS CHANGED_WHEN FROM TBPMO_RECORD WHERE GUID = " & RecordId
Dim expression = "[Record-ID] = " & RecordId
Dim resultDT As DataTable
resultDT = MYDB_ECM.GetDatatable(SQL)
Dim oSql As String = $"SELECT
ADDED_WHO,
CONVERT(VARCHAR(16),ADDED_WHEN,20) AS ADDED_WHEN,
COALESCE(CHANGED_WHO,'') AS CHANGED_WHO,
COALESCE(CONVERT(VARCHAR(16),CHANGED_WHEN,20),'') AS CHANGED_WHEN
FROM TBPMO_RECORD WHERE GUID = {RecordId}"
Dim oTable As DataTable
oTable = MYDB_ECM.GetDatatable(oSql)
If Not IsNothing(resultDT) Then
If resultDT.Rows.Count = 0 Then
If Not IsNothing(oTable) Then
If oTable.Rows.Count = 0 Then
Exit Sub
End If
Dim oRow As DataRow = oTable.Rows(0)
bsitmRecordID.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
Dim CreateChangeString = String.Format("Added by '{0}', when: {1}", resultDT.Rows(0).Item(0), resultDT.Rows(0).Item(1))
If CtrlCommandUI.IsInsert = False Then
CreateChangeString = CreateChangeString + String.Format(" - Changed by '{0}', when: {1}", resultDT.Rows(0).Item(2), resultDT.Rows(0).Item(3))
Dim oAddedWho = oRow.Item(0)
Dim oAddedWhen = oRow.Item(1)
Dim oChangedWho = oRow.Item(2)
Dim oChangedWhen = oRow.Item(3)
Dim CreateChangeString = String.Format("Added by '{0}', when: {1}", oAddedWho, oAddedWhen)
If CtrlCommandUI.IsInsert = False AndAlso (oRow.ItemEx(2, "") <> "") Then
CreateChangeString += String.Format(" - Changed by '{0}', when: {1}", oChangedWho, oChangedWhen)
End If
bsitmRecordID.Caption = String.Format("Record ({0}) - {1}", RecordId, CreateChangeString.ToString)
'bsitmRecordID.Caption = String.Format("Record ({0}) - {1}", RecordId, CreateChangeString.ToString)
bsitmRecordID.Caption = String.Format("{0}", CreateChangeString.ToString)
bsitmRecordID.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
End If
Catch ex As Exception
@@ -824,7 +844,7 @@ Public Class frmNodeNavigation
End Try
End Sub
Async Function Show_Selected_Record_Data(Rec_ID As Integer) As Threading.Tasks.Task
Function Show_Selected_Record_Data(Rec_ID As Integer) As Threading.Tasks.Task
Dim oHandle = SplashScreenManager.ShowOverlayForm(Me)
Try
@@ -833,7 +853,7 @@ Public Class frmNodeNavigation
Select form
Where form.Item("GUID") = oEntityID).Single()
Update_Status_Label(False, "")
'Update_Status_Label(False, "")
LOGGER.Debug("RECORD ID: " & Rec_ID.ToString)
'Me.pnlControls.Visible = True
@@ -1472,7 +1492,7 @@ Public Class frmNodeNavigation
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Customer_Run_Procedures: ", ex.Message)
End Try
End Sub
Async Function RUN_WDSEARCH_GRID(osplashscreen As Boolean) As Threading.Tasks.Task
Function RUN_WDSEARCH_GRID(osplashscreen As Boolean) As Threading.Tasks.Task
Dim oHandle As IOverlaySplashScreenHandle
If osplashscreen Then
oHandle = SplashScreenManager.ShowOverlayForm(Me)
@@ -2859,4 +2879,8 @@ Public Class frmNodeNavigation
Private Sub bbtnitmRecSave_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnitmRecSave.ItemClick
Save_Record()
End Sub
Private Sub GridViewDoc_Search_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles GridViewDoc_Search.SelectionChanged
Dim oDocuments = ClassWindreamDocGrid.GetSelectedDocuments(GridViewDoc_Search)
End Sub
End Class