MS_05072016

This commit is contained in:
SchreiberM
2016-07-05 16:47:27 +02:00
parent 96bf81b88c
commit b9388d045a
6 changed files with 543 additions and 267 deletions

View File

@@ -52,6 +52,8 @@ Public Class frmConstructor_Main
Private DT_TREEVIEW_CONFIGURATION As DataTable
Private TREEVIEW_IMAGELIST As ImageList
Private CONTROL_NAVIGATION As Boolean = False
Private CONTROL_NAVIGATION_LOADED As Boolean = False
Private EBENE2_PARENT_ID As Integer
Private EBENE3_PARENT_ID As Integer
@@ -261,9 +263,8 @@ Public Class frmConstructor_Main
Dim bimage() As Byte = row.Item("NODE_IMAGE")
If Not IsDBNull(bimage) Then
Dim Node_image = ByteArrayToBitmap(bimage)
TREEVIEW_IMAGELIST.Images.Add(row.Item("TYPE_NODE"), Node_image)
TREEVIEW_IMAGELIST.Images.Add("LEVEL#ENTITY" & row.Item("TYPE_NODE").ToString & row.Item("ENTITY_ID"), Node_image)
End If
Next
TreeViewMain.ImageList = TREEVIEW_IMAGELIST
Catch ex As Exception
@@ -458,6 +459,9 @@ Public Class frmConstructor_Main
End Function
Private Function Get_Grid_Layout_Filename()
Dim EntityRegex As New RegularExpressions.Regex("\s+\(\d+\)")
If CONTROL_NAVIGATION = True Then
ACT_EBENE_STRING = "NODE_NAVIGATION"
End If
Dim EntityName As String = EntityRegex.Replace(ACT_EBENE_STRING, "")
Dim Filename As String = String.Format("{0}-{1}-{2}-UserLayout.xml", grvwGrid.Name, GetSafeFilename(EntityName), CONSTRUCTORID)
Return System.IO.Path.Combine(Application.UserAppDataPath(), Filename)
@@ -720,22 +724,22 @@ Public Class frmConstructor_Main
End If
End Function
Public Function Get_Grid_Row_Handle(value As String)
Try
Dim rowHandle As Integer = DT_SELECTION.Rows.IndexOf(DT_SELECTION.Rows.Find(value))
If rowHandle > 0 Then
If GRID_TYPE = GridType.Grid Then
grvwGrid.FocusedRowHandle = rowHandle
ElseIf GRID_TYPE = GridType.Tiles Then
grvwTiles.FocusedRowHandle = rowHandle
Else
grvwCarousel.FocusedRowHandle = rowHandle
End If
End If
Catch ex As Exception
ClassLogger.Add("Error in Search_RowHandle: " & ex.Message, False)
End Try
End Function
'Public Function Get_Grid_Row_Handle(value As String)
' Try
' Dim rowHandle As Integer = DT_SELECTION.Rows.IndexOf(DT_SELECTION.Rows.Find(value))
' If rowHandle > 0 Then
' If GRID_TYPE = GridType.Grid Then
' grvwGrid.FocusedRowHandle = rowHandle
' ElseIf GRID_TYPE = GridType.Tiles Then
' grvwTiles.FocusedRowHandle = rowHandle
' Else
' grvwCarousel.FocusedRowHandle = rowHandle
' End If
' End If
' Catch ex As Exception
' ClassLogger.Add("Error in Search_RowHandle: " & ex.Message, False)
' End Try
'End Function
Public Function Get_Grid_Column_Count() As Integer
If GRID_TYPE = GridType.Grid Then
Return grvwGrid.Columns.Count
@@ -807,95 +811,101 @@ Public Class frmConstructor_Main
e.Info.ImageIndex = -1
End If
End Sub
Sub Column_Row_Handler()
Sub Column_Row_Handler(Optional RECID As Integer = 0, Optional _navload As Boolean = False)
Dim sw As New Stopwatch
sw.Start()
Dim elapsed As Double
If _FormClosing = True Then 'Or SaveRoutine_Active = True
Exit Sub
End If
'Aussteigen, wenng erade die Entität gewechselt wird
If ENTITY_LOADED = False Then
Exit Sub
End If
If RightMouse_Clicked Then
Exit Sub
End If
Dim Grid_RecordID = Get_Focused_Row_Cell_Value("Record-ID")
If IsNothing(Grid_RecordID) Then
Console.WriteLine("No Record ID selectable")
Else
If Grid_RecordID = 0 Then
Console.WriteLine("Grid_RecordID = 0")
If RECID = 0 Then
If _FormClosing = True Then 'Or SaveRoutine_Active = True
Exit Sub
End If
'Aussteigen, wenng erade die Entität gewechselt wird
If ENTITY_LOADED = False Then
Exit Sub
End If
If RightMouse_Clicked Then
Exit Sub
End If
Dim Grid_RecordID = Get_Focused_Row_Cell_Value("Record-ID")
If IsNothing(Grid_RecordID) Then
Console.WriteLine("No Record ID selectable")
Else
If Grid_RecordID = RECORD_ID And ENTITY_RECORD_COUNT > 1 Then
Exit Sub
End If
If LogErrorsOnly = False Then ClassLogger.Add(" >> RowHandler: RID: " & Grid_RecordID.ToString & " - " & Now, False)
'Hier jetzt erst das Anzeigen für einen selektierten Datensatz
If GRID_TYPE = GridType.Grid Then
If IsTopFirstRow Then
IsTopFirstRow = False
'grvwGrid.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus
'grvwGrid.OptionsBehavior.Editable = Not IsTopFirstRow
'grvwGrid.OptionsSelection.EnableAppearanceFocusedCell = Not IsTopFirstRow
'grvwGrid.OptionsSelection.EnableAppearanceFocusedRow = Not IsTopFirstRow
'grvwGrid.OptionsSelection.EnableAppearanceHideSelection = Not IsTopFirstRow
End If
ElseIf GRID_TYPE = GridType.Carousel Then
If IsTopFirstRow Then
IsTopFirstRow = False
grvwCarousel.OptionsBehavior.Editable = Not IsTopFirstRow
End If
ElseIf GRID_TYPE = GridType.Tiles Then
If IsTopFirstRow Then
IsTopFirstRow = False
grvwTiles.OptionsBehavior.Editable = Not IsTopFirstRow
End If
End If
'Wird jetzt bei BeforeRowChange überprüft
'Check_Record_Changed()
DisableEditMode()
VerknüpfungenAnzeigenToolStripMenuItem.Enabled = True
elapsed = sw.Elapsed.TotalSeconds
sw.Stop()
sw.Reset()
If LogErrorsOnly = False Then ClassLogger.Add(" >> Precheck Row took " & Format(elapsed, "0.000000000") & " seconds", False)
sw.Start()
' muss vor show selected record data kommen,
' sodass die datasource für die angehakten werte existiert (checked list box)
CtrlBuilder.WatchRecordChanges = False
ClassControlValues.LoadControlValuesListWithPlaceholders(ENTITY_ID, Grid_RecordID, PARENT_RECORDID, CtrlBuilder.AllControls, ENTITY_ID)
CtrlBuilder.WatchRecordChanges = True
Show_Selected_Record_Data(Grid_RecordID, False)
Dim sw1 As New Stopwatch
sw1.Start()
Check_Rights()
elapsed = sw1.Elapsed.TotalSeconds
sw1.Stop()
If LogErrorsOnly = False Then ClassLogger.Add(" >> Check Rights took " & Format(elapsed, "0.000000000") & " seconds", False)
If TCDetails.SelectedTabPage Is Nothing Then
Exit Sub
End If
If TabPos.PageVisible = True And TCDetails.SelectedTabPage.Text.StartsWith("Posi") Then
Clear_GridPos_View()
Dim POS_GRID_RECORD = Get_Focused_Row_Cell_Value_pos("Record-ID")
Load_Pos_Data()
Load_POSGrid_Layout()
End If
If RECORD_ID > 0 Then
If RIGHT_ONLY_READ = False Then
tsButtonEdit.Enabled = True
End If
Get_RecordCounts_Nodes()
If Grid_RecordID = 0 Then
Console.WriteLine("Grid_RecordID = 0")
Else
RECID = Grid_RecordID
End If
End If
End If
If RECID = RECORD_ID And ENTITY_RECORD_COUNT > 1 Then
Exit Sub
End If
If LogErrorsOnly = False Then ClassLogger.Add(" >> RowHandler: RID: " & RECID.ToString & " - " & Now, False)
'Hier jetzt erst das Anzeigen für einen selektierten Datensatz
If GRID_TYPE = GridType.Grid Then
If IsTopFirstRow Then
IsTopFirstRow = False
'grvwGrid.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus
'grvwGrid.OptionsBehavior.Editable = Not IsTopFirstRow
'grvwGrid.OptionsSelection.EnableAppearanceFocusedCell = Not IsTopFirstRow
'grvwGrid.OptionsSelection.EnableAppearanceFocusedRow = Not IsTopFirstRow
'grvwGrid.OptionsSelection.EnableAppearanceHideSelection = Not IsTopFirstRow
End If
ElseIf GRID_TYPE = GridType.Carousel Then
If IsTopFirstRow Then
IsTopFirstRow = False
grvwCarousel.OptionsBehavior.Editable = Not IsTopFirstRow
End If
ElseIf GRID_TYPE = GridType.Tiles Then
If IsTopFirstRow Then
IsTopFirstRow = False
grvwTiles.OptionsBehavior.Editable = Not IsTopFirstRow
End If
End If
'Wird jetzt bei BeforeRowChange überprüft
'Check_Record_Changed()
DisableEditMode()
VerknüpfungenAnzeigenToolStripMenuItem.Enabled = True
elapsed = sw.Elapsed.TotalSeconds
sw.Stop()
sw.Reset()
If LogErrorsOnly = False Then ClassLogger.Add(" >> Precheck Row took " & Format(elapsed, "0.000000000") & " seconds", False)
sw.Start()
' muss vor show selected record data kommen,
' sodass die datasource für die angehakten werte existiert (checked list box)
CtrlBuilder.WatchRecordChanges = False
ClassControlValues.LoadControlValuesListWithPlaceholders(ENTITY_ID, RECID, PARENT_RECORDID, CtrlBuilder.AllControls, ENTITY_ID)
CtrlBuilder.WatchRecordChanges = True
Show_Selected_Record_Data(RECID, False)
Dim sw1 As New Stopwatch
sw1.Start()
Check_Rights()
elapsed = sw1.Elapsed.TotalSeconds
sw1.Stop()
If LogErrorsOnly = False Then ClassLogger.Add(" >> Check Rights took " & Format(elapsed, "0.000000000") & " seconds", False)
If TCDetails.SelectedTabPage Is Nothing Then
Exit Sub
End If
If TabPos.PageVisible = True And TCDetails.SelectedTabPage.Text.StartsWith("Posi") Then
Clear_GridPos_View()
Dim POS_GRID_RECORD = Get_Focused_Row_Cell_Value_pos("Record-ID")
Load_Pos_Data()
Load_POSGrid_Layout()
End If
If RECORD_ID > 0 Then
If RIGHT_ONLY_READ = False Then
tsButtonEdit.Enabled = True
End If
If CONTROL_NAVIGATION = False Then
Get_RecordCounts_Nodes()
End If
End If
'Liste der geänderten Control Values leeren
CtrlBuilder.ControlsChanged.Clear()
@@ -904,6 +914,9 @@ Public Class frmConstructor_Main
Console.WriteLine("Column_Row_Handler took {0}ms to load", sw.ElapsedMilliseconds)
sw.Reset()
If LogErrorsOnly = False Then ClassLogger.Add(" >>>> Column/Row Change took " & Format(elapsed, "0.000000000") & " seconds", False)
If CONTROL_NAVIGATION = True And _navload = False Then
SearchNode(TreeViewMain.Nodes, RECORD_ID)
End If
End Sub
Sub Check_Rights()
@@ -913,6 +926,8 @@ Public Class frmConstructor_Main
tsmi_RecordDelete.Enabled = True
MassenänderungToolStripMenuItem.Enabled = True
DeleteToolStripMenuItem.Enabled = True
UmbenennenToolStripMenuItem.Enabled = True
DateiMitDatensatzVerknüpfenToolStripMenuItem.Enabled = True
CopyToolStripMenuItem.Enabled = True
RecordKopierenToolStripMenuItem.Enabled = True
PropertiesToolStripMenuItem.Enabled = True
@@ -964,6 +979,8 @@ Public Class frmConstructor_Main
tsButtonDelete.Enabled = False
tsmi_RecordDelete.Enabled = False
MassenänderungToolStripMenuItem.Enabled = False
UmbenennenToolStripMenuItem.Enabled = False
DateiMitDatensatzVerknüpfenToolStripMenuItem.Enabled = False
PropertiesToolStripMenuItem.Enabled = False
CopyToolStripMenuItem.Enabled = False
DeleteToolStripMenuItem.Enabled = False
@@ -1049,16 +1066,76 @@ Public Class frmConstructor_Main
Next
TreeViewMain.Refresh()
End Sub
Private Sub NodeRecursive(ByVal n As TreeNode, searchRecord As Integer)
Dim aNode As TreeNode
For Each aNode In n.Nodes
If Not IsNothing(aNode.Tag) Then
If aNode.Tag.ToString.Contains("RECORD-ID") Then
Dim Record = Return_RECORD_forTag(aNode.Tag)
If IsNumeric(Record) And Record <> 0 And searchRecord = Record Then
TreeViewMain.SelectedNode = aNode
Exit Sub
End If
End If
End If
NodeRecursive(aNode, searchRecord)
Next
End Sub
Public Sub SearchNode(tncoll As TreeNodeCollection, searchRecord As Integer)
Try
Dim n As TreeNode
For Each n In TreeViewMain.Nodes
NodeRecursive(n, searchRecord)
Next
Catch ex As Exception
ClassLogger.Add("Error in SearchNode: " & ex.Message, True)
End Try
End Sub
Private Sub TreeViewMain_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles TreeViewMain.AfterSelect
DisableEditMode()
SetSelectedNodeStyle(TreeViewMain.Nodes)
If CONTROL_NAVIGATION = False Then
SetSelectedNodeStyle(TreeViewMain.Nodes)
Else
ACT_EBENE_STRING = "NODE_NAVIGATION"
Dim SelectedNode As TreeNode = TryCast(TreeViewMain.SelectedNode, TreeNode)
If SelectedNode IsNot Nothing Then
SelectedNode.NodeFont = New Font(TreeViewMain.Font.FontFamily, TreeViewMain.Font.Size, FontStyle.Bold)
SelectedNode.Text = SelectedNode.Text
End If
End If
Load_Tree_View_Data()
If CONTROL_NAVIGATION = True Then
Dim SelectedNode As TreeNode = TryCast(TreeViewMain.SelectedNode, TreeNode)
If SelectedNode IsNot Nothing Then
If LogErrorsOnly = False Then ClassLogger.Add(" >> NodeTag: " & SelectedNode.Tag.ToString, False)
If SelectedNode.Tag.ToString.Contains("RECORD-ID") Then
Dim Record = Return_RECORD_forTag(SelectedNode.Tag)
If Record <> 0 Then
Column_Row_Handler(Record, True)
LocateRecordById(RECORD_ID)
End If
End If
End If
End If
End Sub
Private Sub TreeViewMain_BeforeSelect(sender As Object, e As TreeViewCancelEventArgs) Handles TreeViewMain.BeforeSelect
If grvwGrid.Columns.Count > 0 Then
Save_Grid_Layout()
If CONTROL_NAVIGATION = False Then
If grvwGrid.Columns.Count > 0 Then
Save_Grid_Layout()
End If
Else
If Not IsNothing(TreeViewMain.SelectedNode) Then
TreeViewMain.SelectedNode.NodeFont = New Font(TreeViewMain.Font.FontFamily, TreeViewMain.Font.Size, FontStyle.Regular)
End If
End If
End Sub
@@ -1083,11 +1160,24 @@ Public Class frmConstructor_Main
Dim controlID = foundRowsLevel0(i)("CONTROL_ID")
Dim nodetext = foundRowsLevel0(i)("ID2")
Dim Type_node = foundRowsLevel0(i)("TYPE_NODE")
Dim RECORD_ID = foundRowsLevel0(i)("RECORD_ID")
Dim LEVEL0_NODE As TreeNode
LEVEL0_NODE = New TreeNode(nodetext)
LEVEL0_NODE.Tag = LevelEntity & "CONTROL-ID" & controlID.ToString & "#" & ID
LEVEL0_NODE.ImageIndex = 0
LEVEL0_NODE.SelectedImageIndex = 0
If Not IsDBNull(RECORD_ID) Then
LEVEL0_NODE.Tag = LevelEntity & "CONTROL-ID" & controlID.ToString & "#" & ID & "#RECORD-ID" & RECORD_ID.ToString
Else
LEVEL0_NODE.Tag = LevelEntity & "CONTROL-ID" & controlID.ToString & "#" & ID
End If
Dim index As Integer = 0
For Each img As String In TREEVIEW_IMAGELIST.Images.Keys
If img.Replace("LEVEL#ENTITY", "") = Type_node.ToString & LevelEntity.ToString Then
Exit For
End If
index += 1
Next
LEVEL0_NODE.ImageIndex = index
LEVEL0_NODE.SelectedImageIndex = index
TreeViewMain.Nodes.Add(LEVEL0_NODE)
'### LEVEL 1 laden #######
Dim expressionLevel1 As String
@@ -1096,63 +1186,203 @@ Public Class frmConstructor_Main
foundRowsLevel1 = DT_TREEVIEW_PER_CONTROLS.Select(expressionLevel1)
Dim j As Integer
For j = 0 To foundRowsLevel1.GetUpperBound(0)
Dim ID2 = foundRowsLevel1(j)("GUID")
Dim LevelEntity2 = foundRowsLevel1(j)("ENTITY_ID")
Dim controlID2 = foundRowsLevel1(j)("CONTROL_ID")
Dim nodetext2 = foundRowsLevel1(j)("ID2")
Dim ID1 = foundRowsLevel1(j)("GUID")
Dim LevelEntity1 = foundRowsLevel1(j)("ENTITY_ID")
Dim controlID1 = foundRowsLevel1(j)("CONTROL_ID")
Dim nodetext1 = foundRowsLevel1(j)("ID2")
Dim Type_node1 = foundRowsLevel1(i)("TYPE_NODE")
RECORD_ID = foundRowsLevel1(i)("RECORD_ID")
' Node erstellen..
Dim LEVEL1_NODE As TreeNode
LEVEL1_NODE = New TreeNode(nodetext2)
LEVEL1_NODE.Tag = LevelEntity2 & "CONTROL-ID" & controlID2.ToString & "#" & ID2
LEVEL1_NODE.ImageIndex = 1
LEVEL1_NODE.SelectedImageIndex = 1
LEVEL1_NODE = New TreeNode(nodetext1)
If Not IsDBNull(RECORD_ID) Then
LEVEL1_NODE.Tag = LevelEntity1 & "CONTROL-ID" & controlID1.ToString & "#" & ID1 & "#RECORD-ID" & RECORD_ID.ToString
Else
LEVEL1_NODE.Tag = LevelEntity1 & "CONTROL-ID" & controlID1.ToString & "#" & ID1
End If
index = 0
For Each img As String In TREEVIEW_IMAGELIST.Images.Keys
If img.Replace("LEVEL#ENTITY", "") = Type_node1 & LevelEntity1.ToString Then
Exit For
End If
index += 1
Next
LEVEL1_NODE.ImageIndex = index
LEVEL1_NODE.SelectedImageIndex = index
' ..und einfügen
LEVEL0_NODE.Nodes.Add(LEVEL1_NODE)
'### LEVEL 2 laden #######
Dim expressionLevel2 As String
expressionLevel2 = "TYPE_NODE = 2 AND PARENT_GUID = " & ID2 'Einschränkung auf Type und Parent_Guid
expressionLevel2 = "TYPE_NODE = 2 AND PARENT_GUID = " & ID1 'Einschränkung auf Type und Parent_Guid
Dim foundRowsLevel2() As DataRow
foundRowsLevel2 = DT_TREEVIEW_PER_CONTROLS.Select(expressionLevel2)
Dim k As Integer
For k = 0 To foundRowsLevel2.GetUpperBound(0)
Dim ID3 = foundRowsLevel2(k)("GUID")
Dim LevelEntity3 = foundRowsLevel2(k)("ENTITY_ID")
Dim controlID3 = foundRowsLevel2(k)("CONTROL_ID")
Dim nodetext3 = foundRowsLevel2(k)("ID2")
Dim ID2 = foundRowsLevel2(k)("GUID")
Dim LevelEntity2 = foundRowsLevel2(k)("ENTITY_ID")
Dim controlID2 = foundRowsLevel2(k)("CONTROL_ID")
Dim nodetext2 = foundRowsLevel2(k)("ID2")
RECORD_ID = foundRowsLevel2(k)("RECORD_ID")
' Node erstellen..
Dim LEVEL2_NODE As TreeNode
LEVEL2_NODE = New TreeNode(nodetext3)
LEVEL2_NODE.Tag = LevelEntity3 & "CONTROL-ID" & controlID3.ToString & "#" & ID3
LEVEL2_NODE.ImageIndex = 2
LEVEL2_NODE.SelectedImageIndex = 2
LEVEL2_NODE = New TreeNode(nodetext2)
If Not IsDBNull(RECORD_ID) Then
LEVEL2_NODE.Tag = LevelEntity2 & "CONTROL-ID" & controlID2.ToString & "#" & ID2 & "#RECORD-ID" & RECORD_ID.ToString
Else
LEVEL2_NODE.Tag = LevelEntity2 & "CONTROL-ID" & controlID2.ToString & "#" & ID2
End If
index = 0
For Each img As String In TREEVIEW_IMAGELIST.Images.Keys
If img.Replace("LEVEL#ENTITY", "") = "2" & LevelEntity2.ToString Then
Exit For
End If
index += 1
Next
LEVEL2_NODE.ImageIndex = index
LEVEL2_NODE.SelectedImageIndex = index
' ..und einfügen
LEVEL1_NODE.Nodes.Add(LEVEL2_NODE)
'### LEVEL 3 laden #######
Dim expressionLevel3 As String
expressionLevel3 = "TYPE_NODE = 3 AND PARENT_GUID = " & ID3 'Einschränkung auf Type und Parent_Guid
expressionLevel3 = "TYPE_NODE = 3 AND PARENT_GUID = " & ID2 'Einschränkung auf Type und Parent_Guid
Dim foundRowsLevel3() As DataRow
foundRowsLevel3 = DT_TREEVIEW_PER_CONTROLS.Select(expressionLevel3)
Dim l As Integer
For l = 0 To foundRowsLevel3.GetUpperBound(0)
Dim ID4 = foundRowsLevel3(k)("GUID")
Dim LevelEntity4 = foundRowsLevel3(k)("ENTITY_ID")
Dim controlID4 = foundRowsLevel3(k)("CONTROL_ID")
Dim nodetext4 = foundRowsLevel3(k)("ID2")
Dim ID3 = foundRowsLevel3(l)("GUID")
Dim LevelEntity3 = foundRowsLevel3(l)("ENTITY_ID")
Dim controlID3 = foundRowsLevel3(l)("CONTROL_ID")
Dim nodetext3 = foundRowsLevel3(l)("ID2")
RECORD_ID = foundRowsLevel3(l)("RECORD_ID")
' Node erstellen..
Dim LEVEL3_NODE As TreeNode
LEVEL3_NODE = New TreeNode(nodetext4)
LEVEL3_NODE.Tag = LevelEntity3 & "CONTROL-ID" & controlID4.ToString & "#" & ID4
LEVEL3_NODE.ImageIndex = 3
LEVEL3_NODE.SelectedImageIndex = 3
LEVEL3_NODE = New TreeNode(nodetext3)
If Not IsDBNull(RECORD_ID) Then
LEVEL3_NODE.Tag = LevelEntity3 & "CONTROL-ID" & controlID3.ToString & "#" & ID3 & "#RECORD-ID" & RECORD_ID.ToString
Else
LEVEL3_NODE.Tag = LevelEntity3 & "CONTROL-ID" & controlID3.ToString & "#" & ID3
End If
index = 0
For Each img As String In TREEVIEW_IMAGELIST.Images.Keys
If img.Replace("LEVEL#ENTITY", "") = "3" & LevelEntity3.ToString Then
Exit For
End If
index += 1
Next
LEVEL3_NODE.ImageIndex = index
LEVEL3_NODE.SelectedImageIndex = index
' ..und einfügen
LEVEL2_NODE.Nodes.Add(LEVEL3_NODE)
Next
'### LEVEL 4 laden #######
Dim expressionLevel4 As String
expressionLevel4 = "TYPE_NODE = 4 AND PARENT_GUID = " & ID3 'Einschränkung auf Type und Parent_Guid
Dim foundRowsLevel4() As DataRow
foundRowsLevel4 = DT_TREEVIEW_PER_CONTROLS.Select(expressionLevel4)
Dim m As Integer
For m = 0 To foundRowsLevel4.GetUpperBound(0)
Dim ID5 = foundRowsLevel4(m)("GUID")
Dim LevelEntity5 = foundRowsLevel4(m)("ENTITY_ID")
Dim controlID5 = foundRowsLevel4(m)("CONTROL_ID")
Dim nodetext5 = foundRowsLevel4(m)("ID2")
RECORD_ID = foundRowsLevel4(m)("RECORD_ID")
' Node erstellen..
Dim LEVEL4_NODE As TreeNode
LEVEL4_NODE = New TreeNode(nodetext5)
If Not IsDBNull(RECORD_ID) Then
LEVEL4_NODE.Tag = LevelEntity5 & "CONTROL-ID" & controlID5.ToString & "#" & ID5 & "#RECORD-ID" & RECORD_ID.ToString
Else
LEVEL4_NODE.Tag = LevelEntity5 & "CONTROL-ID" & controlID5.ToString & "#" & ID5
End If
Next
'### Level 2 Ende ########
Next
index = 0
For Each img As String In TREEVIEW_IMAGELIST.Images.Keys
If img.Replace("LEVEL#ENTITY", "") = "4" & LevelEntity5.ToString Then
Exit For
End If
index += 1
Next
LEVEL4_NODE.ImageIndex = index
LEVEL4_NODE.SelectedImageIndex = index
' ..und einfügen
LEVEL3_NODE.Nodes.Add(LEVEL4_NODE)
'### LEVEL 5 laden #######
Dim expressionLevel5 As String
expressionLevel5 = "TYPE_NODE = 5 AND PARENT_GUID = " & ID5 'Einschränkung auf Type und Parent_Guid
Dim foundRowsLevel5() As DataRow
foundRowsLevel5 = DT_TREEVIEW_PER_CONTROLS.Select(expressionLevel5)
Dim n As Integer
For n = 0 To foundRowsLevel5.GetUpperBound(0)
Dim ID6 = foundRowsLevel5(n)("GUID")
Dim LevelEntity6 = foundRowsLevel5(n)("ENTITY_ID")
Dim controlID6 = foundRowsLevel5(n)("CONTROL_ID")
Dim nodetext6 = foundRowsLevel5(n)("ID2")
RECORD_ID = foundRowsLevel5(n)("RECORD_ID")
' Node erstellen..
Dim LEVEL5_NODE As TreeNode
LEVEL5_NODE = New TreeNode(nodetext6)
If Not IsDBNull(RECORD_ID) Then
LEVEL5_NODE.Tag = LevelEntity6 & "CONTROL-ID" & controlID6.ToString & "#" & ID6 & "#RECORD-ID" & RECORD_ID.ToString
Else
LEVEL5_NODE.Tag = LevelEntity6 & "CONTROL-ID" & controlID6.ToString & "#" & ID6
End If
index = 0
For Each img As String In TREEVIEW_IMAGELIST.Images.Keys
If img.Replace("LEVEL#ENTITY", "") = "5" & LevelEntity6.ToString Then
Exit For
End If
index += 1
Next
LEVEL5_NODE.ImageIndex = index
LEVEL5_NODE.SelectedImageIndex = index
' ..und einfügen
LEVEL4_NODE.Nodes.Add(LEVEL5_NODE)
'#####
'### LEVEL 5 laden #######
Dim expressionLevel6 As String
expressionLevel6 = "TYPE_NODE = 6 AND PARENT_GUID = " & ID6 'Einschränkung auf Type und Parent_Guid
Dim foundRowsLevel6() As DataRow
foundRowsLevel6 = DT_TREEVIEW_PER_CONTROLS.Select(expressionLevel6)
Dim o As Integer
For o = 0 To foundRowsLevel6.GetUpperBound(0)
Dim ID7 = foundRowsLevel6(o)("GUID")
Dim LevelEntity7 = foundRowsLevel6(o)("ENTITY_ID")
Dim controlID7 = foundRowsLevel6(o)("CONTROL_ID")
Dim nodetext7 = foundRowsLevel6(o)("ID2")
RECORD_ID = foundRowsLevel6(o)("RECORD_ID")
' Node erstellen..
Dim LEVEL6_NODE As TreeNode
LEVEL6_NODE = New TreeNode(nodetext7)
If Not IsDBNull(RECORD_ID) Then
LEVEL6_NODE.Tag = LevelEntity7 & "CONTROL-ID" & controlID7.ToString & "#" & ID7 & "#RECORD-ID" & RECORD_ID.ToString
Else
LEVEL6_NODE.Tag = LevelEntity7 & "CONTROL-ID" & controlID7.ToString & "#" & ID7
End If
index = 0
For Each img As String In TREEVIEW_IMAGELIST.Images.Keys
If img.Replace("LEVEL#ENTITY", "") = "6" & LevelEntity7.ToString Then
Exit For
End If
index += 1
Next
LEVEL6_NODE.ImageIndex = index
LEVEL6_NODE.SelectedImageIndex = index
' ..und einfügen
LEVEL5_NODE.Nodes.Add(LEVEL6_NODE)
'#####
Next
Next ' Level 5 Ende
Next 'Level 4 Ende
Next 'Level 3 Ende
Next ' Level 2 Ende
Next 'Level 1 Ende
Next
Else
MsgBox("Check the Control Navigation Option or inform Digital Data!", MsgBoxStyle.Critical)
Me.Close()
@@ -1251,8 +1481,39 @@ Public Class frmConstructor_Main
End If
End If
End Function
Private Function Return_RECORD_forTag(NodeString As String)
If IsNumeric(NodeString) Then
Return NodeString
Else
Dim staticListItems = NodeString.Split("#")
If staticListItems(2).Contains("RECORD-ID") Then
Try
Dim _RECORD = staticListItems(2).ToString.Replace("RECORD-ID", "")
If IsNumeric(_RECORD) Then
Return _RECORD
Else
Return 0
End If
Catch ex As Exception
ClassLogger.Add("Unexpected Error in Return_RECORD_forTag ('" & NodeString & "'): " & ex.Message, True)
Return 0
End Try
Else
Return 0
End If
End If
End Function
Sub Load_Tree_View_Data()
Try
If CONTROL_NAVIGATION = True Then
If CONTROL_NAVIGATION_LOADED = True Then
Exit Sub
Else
CONTROL_NAVIGATION_LOADED = True
End If
End If
Dim sw As New Stopwatch
sw.Start()
Dim SelectedNode As TreeNode = TryCast(TreeViewMain.SelectedNode, TreeNode)
@@ -1261,57 +1522,49 @@ Public Class frmConstructor_Main
ENTITY_LOADED = False
ENTITY_ID = Return_ENTITY_FOR_TAG(SelectedNode.Tag)
CURRENT_FORM_ID = ENTITY_ID
Dim parentNode As TreeNode = TryCast(SelectedNode.Parent, TreeNode)
ACT_EBENE = 2
CURRENT_ACT_LEVEL = 2
If parentNode IsNot Nothing Then
Dim grandParentNode As TreeNode = TryCast(parentNode.Parent, TreeNode)
If grandParentNode IsNot Nothing Then
ACT_EBENE = 3
CURRENT_ACT_LEVEL = 3
End If
Else
ACT_EBENE = 1
CURRENT_ACT_LEVEL = 1
End If
Dim result = (From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
Select form
Where form.Item("FORM_ID") = ENTITY_ID).Single()
Select form
Where form.Item("FORM_ID") = ENTITY_ID).Single()
CONSTRUCTOR_DETAIL_ID = result.Item("GUID")
'DT_WINDREAM_RESULTLIST = DT_WINDREAM_RESULTLIST_DEF
'Dim sql_ResultList = "select * from TBPMO_USER_WINDREAM_RESULTLIST_CONFIG where USER_ID = " & USER_GUID & " AND CONSTRUCTOR_DETAIL_ID = " & CONSTRUCTOR_DETAIL_ID
'Dim DT As DataTable = ClassDatabase.Return_Datatable(sql_ResultList, "GET USER_RESULTLIST KONFIG")
'If DT.Rows.Count = 1 Then
' USER_RESULTLIST_CONFIG_GUID = DT.Rows(0).Item(0)
' DT_WINDREAM_RESULTLIST = Nothing
' DT_WINDREAM_RESULTLIST = DT
'Else
' USER_RESULTLIST_CONFIG_GUID = 0
'If USER_LANGUAGE <> "de-DE" Then
' 'Grid wird in englisch dargestellt!
' gridGUID = 3
'End If
'Dim filteredDatatable = DT_WINDREAM_RESULTLIST_DEF.Copy()
'For Each row As DataRow In filteredDatatable.Rows
' If row.Item(0) <> gridGUID Then
' row.Delete()
' End If
'Next
'filteredDatatable.AcceptChanges()
'If filteredDatatable.Rows.Count = 1 Then
'DT_WINDREAM_RESULTLIST = Nothing
'DT_WINDREAM_RESULTLIST = filteredDatatable
'End If
'End If
If CONTROL_NAVIGATION = True Then
If SelectedNode.Tag.ToString.Contains("RECORD_ID") Then
Console.WriteLine("Record beinhaltet")
End If
Console.WriteLine("CONTROL Navigacion")
Else
Dim parentNode As TreeNode = TryCast(SelectedNode.Parent, TreeNode)
ACT_EBENE = 2
CURRENT_ACT_LEVEL = 2
If parentNode IsNot Nothing Then
Dim grandParentNode As TreeNode = TryCast(parentNode.Parent, TreeNode)
If grandParentNode IsNot Nothing Then
ACT_EBENE = 3
CURRENT_ACT_LEVEL = 3
End If
Else
ACT_EBENE = 1
CURRENT_ACT_LEVEL = 1
End If
End If
Dim elapsed As Double
elapsed = sw.Elapsed.TotalSeconds
If LogErrorsOnly = False Then ClassLogger.Add(" >> Load_Tree_View_Data1 took " & Format(elapsed, "0.000000000") & " seconds", False)
Get_RecordCounts_Nodes()
If CONTROL_NAVIGATION = True Then
If SelectedNode.Tag.ToString.Contains("RECORD_ID") Then
Console.WriteLine("Record beinhaltet")
End If
Console.WriteLine("CONTROL Navigacion")
Else
Get_RecordCounts_Nodes()
End If
Load_Entity_Data(ACT_EBENE)
sw.Stop()
@@ -1327,6 +1580,9 @@ Public Class frmConstructor_Main
Sub Get_RecordCounts_Nodes()
Try
If CONTROL_NAVIGATION = True Then
Exit Sub
End If
Dim selnode As TreeNode = TreeViewMain.SelectedNode
Dim a As Integer = 0
For Each childNodeLevel1 As TreeNode In selnode.Nodes
@@ -1752,7 +2008,8 @@ Public Class frmConstructor_Main
If EDIT_STATE = EditState.Insert Then
'Die Daten neu laden
Load_Entity_Data_Only()
Get_Grid_Row_Handle(NEW_RECORD_ID)
LocateRecordById(RECORD_ID)
'Get_Grid_Row_Handle(NEW_RECORD_ID)
Else
'Die Daten neu laden
Load_Entity_Data_Only()
@@ -1763,6 +2020,7 @@ Public Class frmConstructor_Main
' Laden der Daten bedeutet nicht dass Daten vom Benutzer geändert wurden!
RECORD_CHANGED = False
End If
End If
End If
@@ -2813,13 +3071,15 @@ Public Class frmConstructor_Main
End If
HideColumns()
Dim selnode As TreeNode = TreeViewMain.SelectedNode
Dim origtext As String = selnode.Text
If origtext.Contains(" (") Then
Dim existingstring = origtext.Substring(0, origtext.IndexOf("(") - 1)
selnode.Text = String.Format("{0} ({1})", existingstring, Get_Grid_Row_Count())
Else
selnode.Text = String.Format("{0} ({1})", selnode.Text, Get_Grid_Row_Count())
If CONTROL_NAVIGATION = False Then
Dim selnode As TreeNode = TreeViewMain.SelectedNode
Dim origtext As String = selnode.Text
If origtext.Contains(" (") Then
Dim existingstring = origtext.Substring(0, origtext.IndexOf("(") - 1)
selnode.Text = String.Format("{0} ({1})", existingstring, Get_Grid_Row_Count())
Else
selnode.Text = String.Format("{0} ({1})", selnode.Text, Get_Grid_Row_Count())
End If
End If
Catch ex As Exception
MsgBox("Error in LoadGrid_Selection:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
@@ -3304,7 +3564,6 @@ Public Class frmConstructor_Main
#Region "WindreamSuche"
Private Sub Check_windream_Show(FORM_VIEW_ID As Integer)
Try
'Dim sql = "SELECT * FROM TBPMO_FORM_VIEW WHERE WINDREAM_SEARCH <> '' AND GUID = " & FORM_VIEW_ID
'Dim DTWD As DataTable = ClassDatabase.Return_Datatable(sql)
Dim wdsearch = DT_TBPMO_FORM_VIEW.Rows(0).Item("WINDREAM_SEARCH")
@@ -5365,6 +5624,7 @@ Public Class frmConstructor_Main
' Rename file.
My.Computer.FileSystem.RenameFile(OldName, NewName)
RUN_WDSEARCH_GRID("RECORD")
ContextMenuStripResultFiles.Close()
End If
Catch ex As Exception
MsgBox("Unexpected Error in Renaming files: " & ex.Message, MsgBoxStyle.Critical)