diff --git a/app/DD-Record-Organiser/frmForm_Constructor_Main_2.vb b/app/DD-Record-Organiser/frmForm_Constructor_Main_2.vb index 39d7644..2bbc2d3 100644 --- a/app/DD-Record-Organiser/frmForm_Constructor_Main_2.vb +++ b/app/DD-Record-Organiser/frmForm_Constructor_Main_2.vb @@ -103,6 +103,7 @@ Public Class frmForm_Constructor_Main_2 ' Check_Record_Changed() CloseWDDocview() Save_Grid_Layout() + Save_Splitter_Layout() ClassWindowLocation.SaveFormLocationSize(Me, CONSTRUCTORID, CURRENT_SCREEN_ID, "CONSTRUCTOR_MAIN") End Sub @@ -149,57 +150,122 @@ Public Class frmForm_Constructor_Main_2 #Region "Layout" Sub Save_POSGrid_Layout() - Dim EntityRegex As New RegularExpressions.Regex("\s+\(\d+\)") - Dim EntityName As String = EntityRegex.Replace(ACT_EBENE_STRING & "_POS", "") - Dim Filename As String = String.Format("{0}-{1}-{2}-UserLayout.xml", grvwGridPos.Name, EntityName, CONSTRUCTORID) - Dim XMLPath = System.IO.Path.Combine(Application.UserAppDataPath(), Filename) - grvwGridPos.SaveLayoutToXml(XMLPath) + Try + Dim EntityRegex As New RegularExpressions.Regex("\s+\(\d+\)") + Dim EntityName As String = EntityRegex.Replace(ACT_EBENE_STRING & "_POS", "") + Dim Filename As String = String.Format("{0}-{1}-{2}-UserLayout.xml", grvwGridPos.Name, EntityName, CONSTRUCTORID) + Dim XMLPath = System.IO.Path.Combine(Application.UserAppDataPath(), Filename) + grvwGridPos.SaveLayoutToXml(XMLPath) + Catch ex As Exception + MsgBox("Error in Save_POSGrid_Layout:" & vbNewLine & ex.Message) + End Try End Sub Sub Load_POSGrid_Layout() - Dim EntityRegex As New RegularExpressions.Regex("\s+\(\d+\)") - Dim EntityName As String = EntityRegex.Replace(ACT_EBENE_STRING & "_POS", "") - Dim Filename As String = String.Format("{0}-{1}-{2}-UserLayout.xml", grvwGridPos.Name, EntityName, CONSTRUCTORID) - Dim XMLPath = System.IO.Path.Combine(Application.UserAppDataPath(), Filename) - If File.Exists(XMLPath) Then - grvwGridPos.RestoreLayoutFromXml(XMLPath) - grvwGridPos.ClearColumnsFilter() - 'grvwGrid.ClearGrouping() - grvwGridPos.ClearSelection() - grvwGridPos.OptionsView.ShowPreview = False - End If + Try + Dim EntityRegex As New RegularExpressions.Regex("\s+\(\d+\)") + Dim EntityName As String = EntityRegex.Replace(ACT_EBENE_STRING & "_POS", "") + Dim Filename As String = String.Format("{0}-{1}-{2}-UserLayout.xml", grvwGridPos.Name, EntityName, CONSTRUCTORID) + Dim XMLPath = System.IO.Path.Combine(Application.UserAppDataPath(), Filename) + If File.Exists(XMLPath) Then + grvwGridPos.RestoreLayoutFromXml(XMLPath) + grvwGridPos.ClearColumnsFilter() + 'grvwGrid.ClearGrouping() + grvwGridPos.ClearSelection() + grvwGridPos.OptionsView.ShowPreview = False + End If + Catch ex As Exception + MsgBox("Error in Load_POSGrid_Layout:" & vbNewLine & ex.Message) + End Try End Sub Sub Save_Grid_Layout() - If ACT_EBENE_STRING Is Nothing Then - Exit Sub - End If + Try + If ACT_EBENE_STRING Is Nothing Then + Exit Sub + End If - Dim XMLPath = Get_Grid_Layout_Filename() - grvwGrid.SaveLayoutToXml(XMLPath) - ' Update_Status_Label(True, "Grid Layout Loaded") + Dim XMLPath = Get_Grid_Layout_Filename() + grvwGrid.SaveLayoutToXml(XMLPath) + ' Update_Status_Label(True, "Grid Layout Loaded") + Catch ex As Exception + MsgBox("Error in Save_Grid_Layout:" & vbNewLine & ex.Message) + End Try End Sub Sub Load_Grid_Layout() - Dim XMLPath = Get_Grid_Layout_Filename() - If File.Exists(XMLPath) And GRID_TYPE = GridType.Grid Then - grvwGrid.RestoreLayoutFromXml(XMLPath) - grvwGrid.ClearColumnsFilter() - 'grvwGrid.ClearGrouping() - grvwGrid.ClearSelection() - grvwGrid.OptionsView.ShowPreview = False + Try + Dim XMLPath = Get_Grid_Layout_Filename() + If File.Exists(XMLPath) And GRID_TYPE = GridType.Grid Then + grvwGrid.RestoreLayoutFromXml(XMLPath) + grvwGrid.ClearColumnsFilter() + 'grvwGrid.ClearGrouping() + grvwGrid.ClearSelection() + grvwGrid.OptionsView.ShowPreview = False - 'Update_Status_Label(True, "Grid Layout Loaded") - End If + 'Update_Status_Label(True, "Grid Layout Loaded") + End If + Catch ex As Exception + MsgBox("Error in Load_Grid_Layout: " & vbNewLine & ex.Message) + End Try End Sub + + Sub Load_Splitter_Layout() + Try + Dim XMLPath As String = Get_Splitter_Layout_Filename() + Dim layout As New ClassLayout(XMLPath) + Dim settings As System.Collections.Generic.List(Of ClassSetting) + settings = layout.Load() + + If settings.Count = 0 Then + settings.Add(New ClassSetting("SplitViewTopSplitterPosition", SplitContainerTop.SplitterPosition)) + settings.Add(New ClassSetting("SplitViewMainSplitterPosition", SplitContainerMain.SplitterPosition)) + layout.Save(settings) + End If + + For Each setting As ClassSetting In settings + Select Case setting._name + Case "SplitViewTopSplitterPosition" + SplitContainerTop.SplitterPosition = Integer.Parse(setting._value) + Case "SplitViewMainSplitterPosition" + SplitContainerMain.SplitterPosition = Integer.Parse(setting._value) + End Select + Next + Catch ex As Exception + MsgBox("Fehler in Load_Splitter_Layout:" & vbNewLine & ex.Message) + End Try + End Sub + + Sub Save_Splitter_Layout() + Try + Dim XMLPath = Get_Splitter_Layout_Filename() + Dim layout As New ClassLayout(XMLPath) + Dim settings As New System.Collections.Generic.List(Of ClassSetting) + settings.Add(New ClassSetting("SplitViewTopSplitterPosition", SplitContainerTop.SplitterPosition)) + settings.Add(New ClassSetting("SplitViewMainSplitterPosition", SplitContainerMain.SplitterPosition)) + layout.Save(settings) + Catch ex As Exception + MsgBox("Error in Save_Splitter_Layout:" & vbNewLine & ex.Message) + End Try + End Sub + + Function GetSafeFilename(filename As String) + Return String.Join("_", filename.Split(Path.GetInvalidFileNameChars())) + End Function + + Private Function Get_Splitter_Layout_Filename() + Dim Filename As String = String.Format("{0}-SplitterLayout.xml", CONSTRUCTORID) + Return System.IO.Path.Combine(Application.UserAppDataPath(), Filename) + End Function + Private Function Get_POSGrid_Layout_Filename() Dim EntityRegex As New RegularExpressions.Regex("\s+\(\d+\)") Dim EntityName As String = EntityRegex.Replace(ACT_EBENE_STRING, "") - Dim Filename As String = String.Format("{0}-{1}-{2}-UserLayout.xml", grvwGrid.Name, EntityName, CONSTRUCTORID) + Dim Filename As String = String.Format("{0}-{1}-{2}-UserLayout.xml", grvwGrid.Name, GetSafeFilename(EntityName), CONSTRUCTORID) Return System.IO.Path.Combine(Application.UserAppDataPath(), Filename) End Function Private Function Get_Grid_Layout_Filename() Dim EntityRegex As New RegularExpressions.Regex("\s+\(\d+\)") Dim EntityName As String = EntityRegex.Replace(ACT_EBENE_STRING, "") - Dim Filename As String = String.Format("{0}-{1}-{2}-UserLayout.xml", grvwGrid.Name, EntityName, CONSTRUCTORID) + Dim Filename As String = String.Format("{0}-{1}-{2}-UserLayout.xml", grvwGrid.Name, GetSafeFilename(EntityName), CONSTRUCTORID) Return System.IO.Path.Combine(Application.UserAppDataPath(), Filename) End Function #End Region @@ -370,29 +436,57 @@ Public Class frmForm_Constructor_Main_2 Next End Sub - Public Function Get_Grid_Sql(ConstructorId As Integer, FormId As Integer) - If GRID_TYPE = GridType.Grid Then - If LogErrorsOnly = False Then ClassLogger.Add(" >> GridType = Grid", False) - CURRENT_ENTITYSQL = "SELECT T.* FROM VWTEMP_PMO_FORM" & FormId.ToString & " T" - Else 'Tiles und Carousel bekommen Quick View - CURRENT_ENTITYSQL = String.Format("SELECT SQL_QUICK_VIEW FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0} AND FORM_ID = {1}", ConstructorId, FormId) - CURRENT_ENTITYSQL = ClassDatabase.Execute_Scalar(CURRENT_ENTITYSQL, True) - If CURRENT_ENTITYSQL = String.Empty Then - If LogErrorsOnly = False Then ClassLogger.Add(" >> No Quick-View Configured", False) - CURRENT_ENTITYSQL = "SELECT T.* FROM VWTEMP_PMO_FORM" & FormId.ToString & " T" - If IS_SINGLE_RECORD = True Or CURRENT_FORM_TYPE = 5 Then + 'Public Function Get_Grid_Sql(ConstructorId As Integer, FormId As Integer) + ' If GRID_TYPE = GridType.Grid Then + ' CURRENT_ENTITYSQL = "SELECT T.* FROM VWTEMP_PMO_FORM" & FormId.ToString & " T" + ' Else 'Tiles und Carousel bekommen Quick View + ' CURRENT_ENTITYSQL = String.Format("SELECT SQL_QUICK_VIEW FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0} AND FORM_ID = {1}", ConstructorId, FormId) + ' CURRENT_ENTITYSQL = ClassDatabase.Execute_Scalar(CURRENT_ENTITYSQL, True) + ' If CURRENT_ENTITYSQL = String.Empty Then + ' CURRENT_ENTITYSQL = "SELECT T.* FROM VWTEMP_PMO_FORM" & FormId.ToString & " T" + ' If IS_SINGLE_RECORD = True Or CURRENT_FORM_TYPE = 5 Then + ' Else + ' GRID_TYPE = GridType.Grid + ' GridControlMain.MainView = grvwGrid + ' VIEW_ID = 3 + ' End If + + + ' GridControlMain.MainView = grvwGrid + ' End If + ' End If + 'End Function + + Public Function Get_Grid_Sql(ConstructorId As Integer, FormId As Integer) + Try + If GRID_TYPE = GridType.Grid Then + If LogErrorsOnly = False Then ClassLogger.Add(" >> GridType = Grid", False) + CURRENT_ENTITYSQL = "SELECT T.* FROM VWTEMP_PMO_FORM" & FormId.ToString & " T" + Else 'Tiles und Carousel bekommen Quick View + CURRENT_ENTITYSQL = String.Format("SELECT SQL_QUICK_VIEW FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0} AND FORM_ID = {1}", ConstructorId, FormId) + CURRENT_ENTITYSQL = ClassDatabase.Execute_Scalar(CURRENT_ENTITYSQL, True) + If CURRENT_ENTITYSQL = String.Empty Then + If LogErrorsOnly = False Then ClassLogger.Add(" >> No Quick-View Configured", False) + CURRENT_ENTITYSQL = "SELECT T.* FROM VWTEMP_PMO_FORM" & FormId.ToString & " T" + If IS_SINGLE_RECORD = True Or CURRENT_FORM_TYPE = 5 Then + + Else + GRID_TYPE = GridType.Grid + GridControlMain.MainView = grvwGrid + VIEW_ID = 3 + End If + ' GridControlMain.MainView = grvwGrid Else - GRID_TYPE = GridType.Grid - GridControlMain.MainView = grvwGrid - VIEW_ID = 3 + If LogErrorsOnly = False Then ClassLogger.Add(" >> Quick-View is configured", False) End If - ' GridControlMain.MainView = grvwGrid - Else - If LogErrorsOnly = False Then ClassLogger.Add(" >> Quick-View is configured", False) End If - End If + Catch ex As Exception + ClassLogger.Add("Error in Get_Grid_Sql: " & vbNewLine & ex.Message, True) + MsgBox("Error in Get_Grid_Sql: " & vbNewLine & ex.Message) + End Try End Function + Public Function Get_Pos_SQL(FormId As Integer) POS_SQL = "SELECT T.* FROM VWTEMP_PMO_FORM" & FormId.ToString & " T, TBPMO_RECORD_CONNECT t1 where T.[Record-ID] = T1.RECORD2_ID AND T1.RECORD1_ID = @PARENT_ID" End Function @@ -889,6 +983,10 @@ Public Class frmForm_Constructor_Main_2 tsButtonShowWorkflowTasks.Enabled = True ClassControlValues.LoadDefaultValues(CURRENT_FORM_ID, SELECTED_RECORD_ID, pnlDetails.Controls) ClassControlValues.LoadControlValuesList(SELECTED_RECORD_ID, CURRENT_FORM_ID, CtrlBuilder.AllControls) + + ' Im gegensatz zu EnableEditMode muss hier nur der save button enabled werden + tsButtonSave.Enabled = True + EDIT_STATE = EditState.Insert RECORD_CHANGED = True End If @@ -1005,6 +1103,13 @@ Public Class frmForm_Constructor_Main_2 MsgBox("Error in Save Data:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) End Try + If CtrlCommandUI.IsInsert Then + tsButtonSave.Enabled = False + Else + DisableEditMode() + End If + + CtrlCommandUI.IsInsert = False EDIT_STATE = EditState.None RECORD_CHANGED = False SAVE_ROUTINE_ACTIVE = False @@ -1019,6 +1124,7 @@ Public Class frmForm_Constructor_Main_2 Update_Status_Label(True, "Der Datensatz '" & SELECTED_RECORD_ID & "' wurde erfolgreich gelöscht - " & Now, EditState.Update) Update_Record_Label(SELECTED_RECORD_ID) Load_Tree_View_Data() + DisableEditMode() End If End If EDIT_STATE = EditState.None @@ -1368,6 +1474,7 @@ Public Class frmForm_Constructor_Main_2 'Überprüfen ob es für diese Entität Wiedervorlagen gibt? Check_FOLLOWUP_IsConfigured(CURRENT_FORM_ID) Load_Grid_Layout() + Load_Splitter_Layout() End If If POS_ENTITY > 0 Then TabDetails.Text = "Kopfdaten" @@ -1562,10 +1669,11 @@ Public Class frmForm_Constructor_Main_2 EDIT_STATE = EditState.None Lock_RecordControls(True) 'Me.pnlDetails.Enabled = False - CtrlCommandUI.IsInsert = False + 'CtrlCommandUI.IsInsert = False End If Update_Record_OnChange() End If + CtrlCommandUI.IsInsert = False RECORD_CHANGED = False End If End Sub