From 9d123727d4dec78de55be94c95703c7893d5ed35 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Thu, 30 Sep 2021 16:35:43 +0200 Subject: [PATCH 1/4] WIP lookup grid with depending controls --- app/DD_PM_WINDREAM/ClassControlCreator.vb | 301 ++++++++--- app/DD_PM_WINDREAM/ModuleRuntimeVariables.vb | 6 +- app/DD_PM_WINDREAM/clsPatterns.vb | 1 + app/DD_PM_WINDREAM/frmFormDesigner.vb | 2 +- app/DD_PM_WINDREAM/frmMain.vb | 22 +- app/DD_PM_WINDREAM/frmMassValidator.vb | 2 +- app/DD_PM_WINDREAM/frmValidator.Designer.vb | 13 +- app/DD_PM_WINDREAM/frmValidator.resx | 9 + app/DD_PM_WINDREAM/frmValidator.vb | 535 ++++++++++--------- 9 files changed, 539 insertions(+), 352 deletions(-) diff --git a/app/DD_PM_WINDREAM/ClassControlCreator.vb b/app/DD_PM_WINDREAM/ClassControlCreator.vb index 7f4a73d..736c9d6 100644 --- a/app/DD_PM_WINDREAM/ClassControlCreator.vb +++ b/app/DD_PM_WINDREAM/ClassControlCreator.vb @@ -37,7 +37,10 @@ Public Class ClassControlCreator Public Const PREFIX_LINE = "LINE" Public Const PREFIX_BUTTON = "BTN" - Public Shared GridTables As New Dictionary(Of String, Dictionary(Of String, DataTable)) + ''' + ''' Saves the column data for each grid and each column in that grid + ''' + Public Shared Property GridTables As New Dictionary(Of Integer, Dictionary(Of String, RepositoryItem)) ''' ''' Standard Eigenschaften für alle Controls @@ -406,8 +409,9 @@ Public Class ClassControlCreator Return control End Function - Public Shared Function CreateExistingGridControl(row As DataRow, DT_MY_COLUMNS As DataTable, designMode As Boolean) As GridControl + Public Shared Function CreateExistingGridControl(row As DataRow, DT_MY_COLUMNS As DataTable, designMode As Boolean, pPanel As Panel) As GridControl Dim oControl As GridControl = CreateBaseControl(New GridControl(), row, designMode) + Dim oControlId = DirectCast(oControl.Tag, ControlMetadata).Guid Dim oDatatable As New DataTable Dim oView As GridView @@ -420,6 +424,8 @@ Public Class ClassControlCreator If Not designMode Then oView.OptionsBehavior.Editable = Not row.Item("READ_ONLY") oView.OptionsBehavior.ReadOnly = row.Item("READ_ONLY") + 'oView.OptionsBehavior.EditorShowMode = EditorShowMode.Click + oControl.UseEmbeddedNavigator = Not row.Item("READ_ONLY") If row.Item("VKT_ADD_ITEM") = True Then @@ -450,10 +456,10 @@ Public Class ClassControlCreator End With - If GridTables.ContainsKey(oControl.Name) Then - GridTables.Item(oControl.Name).Clear() + If GridTables.ContainsKey(oControlId) Then + GridTables.Item(oControlId).Clear() Else - GridTables.Add(oControl.Name, New Dictionary(Of String, DataTable)()) + GridTables.Add(oControlId, New Dictionary(Of String, RepositoryItem)()) End If For Each oRow As DataRow In DT_MY_COLUMNS.Rows @@ -472,25 +478,27 @@ Public Class ClassControlCreator Dim oConnectionId As Integer = NotNull(oRow.Item("CONNECTION_ID"), 0) Dim oSqlCommand As String = NotNull(oRow.Item("SQL_COMMAND"), "") - If Not clsPatterns.HasComplexPatterns(oSqlCommand) Then - If oConnectionId > 0 And oSqlCommand <> "" Then - Try - Dim oComboboxDataTable As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oConnectionId) - - If oComboboxDataTable Is Nothing Then - LOGGER.Warn("DataTable for SQL [{0}] is nothing. Possible error on SQL Query.") - End If - - GridTables.Item(oControl.Name).Add(oRow.Item("SPALTENNAME"), oComboboxDataTable) - 'GridTables.Add(oRow.Item("SPALTENNAME"), oComboboxDataTable) - Catch ex As Exception - LOGGER.Warn("Could not load data for column {0} in control {1}", oRow.Item("SPALTENNAME"), oControl.Name) - LOGGER.Error(ex) - End Try - End If - End If + If oConnectionId > 0 And oSqlCommand <> "" Then + Try + Dim oComboboxDataTable As DataTable = Nothing + Dim oColumnName As String = oRow.Item("SPALTENNAME") + + If Not clsPatterns.HasComplexPatterns(oSqlCommand) Then + oComboboxDataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oConnectionId) + End If + Dim oRepositoryItem = GridTables_GetRepositoryItemForColumn(oColumnName, oComboboxDataTable, oRow.Item("ADVANCED_LOOKUP")) + If GridTables.Item(oControlId).ContainsKey(oColumnName) Then + GridTables.Item(oControlId).Item(oColumnName) = oRepositoryItem + Else + GridTables.Item(oControlId).Add(oColumnName, oRepositoryItem) + End If + Catch ex As Exception + LOGGER.Warn("Could not load data for column {0} in control {1}", oRow.Item("SPALTENNAME"), oControl.Name) + LOGGER.Error(ex) + End Try + End If Next oView.PopulateColumns(oDatatable) @@ -509,55 +517,132 @@ Public Class ClassControlCreator AddHandler oView.CustomRowCellEdit, Sub(sender As Object, e As CustomRowCellEditEventArgs) Try For Each oRow As DataRow In DT_MY_COLUMNS.Rows - If oRow.Item("SPALTENNAME") = e.Column.FieldName Then - If GridTables.Item(oControl.Name).ContainsKey(e.Column.FieldName) Then - Dim oComboboxDataTable As DataTable = GridTables.Item(oControl.Name).Item(e.Column.FieldName) - - If oComboboxDataTable Is Nothing Then - Throw New ApplicationException($"ComboboxTable for Column {e.Column.FieldName} is empty.") - End If - - If oRow.Item("ADVANCED_LOOKUP") And oComboboxDataTable IsNot Nothing Then - Dim oEditor = New RepositoryItemLookupControl3 With { - .DataSource = oComboboxDataTable, - .DisplayMember = oComboboxDataTable.Columns.Item(0).ColumnName, - .ValueMember = oComboboxDataTable.Columns.Item(0).ColumnName - } - - - 'AddHandler oEditor.SelectedValuesChanged, Sub(_sender As Object, _e As List(Of String)) - ' oView.PostEditor() - ' End Sub - - e.RepositoryItem = oEditor - Else - Dim oEditor = New RepositoryItemComboBox() - Dim oItems As New List(Of String) - - AddHandler oEditor.Validating, Sub(_sender As ComboBoxEdit, _e As CancelEventArgs) - If oItems.Contains(_sender.EditValue) Then - _e.Cancel = False - Else - _e.Cancel = True - End If - - End Sub - For Each oRow2 As DataRow In oComboboxDataTable.Rows - Dim oValue = oRow2.Item(0) - - Try - oValue &= $" | {oRow2.Item(1)}" - Catch ex As Exception - End Try - - oEditor.Items.Add(oValue) - oItems.Add(oValue) - Next - - e.RepositoryItem = oEditor - End If - End If + If oRow.Item("SPALTENNAME") <> e.Column.FieldName Then + Continue For + End If + + If Not GridTables.Item(oControlId).ContainsKey(e.Column.FieldName) Then + Continue For End If + + Dim oEditor = GridTables.Item(oControlId).Item(e.Column.FieldName) + + e.RepositoryItem = oEditor + + +#Region "Old Stuff" + + + + 'Dim oComboboxDataTable As DataTable = GridTables.Item(oControlId).Item(e.Column.FieldName) + + 'If oComboboxDataTable Is Nothing Then + ' Throw New ApplicationException($"ComboboxTable for Column {e.Column.FieldName} is empty.") + 'End If + + + 'If oRow.Item("ADVANCED_LOOKUP") Then + + ' Dim oEditor = New RepositoryItemLookupControl3 + + ' If oComboboxDataTable IsNot Nothing Then + ' oEditor.DisplayMember = oComboboxDataTable.Columns.Item(0).ColumnName + ' oEditor.ValueMember = oComboboxDataTable.Columns.Item(0).ColumnName + ' oEditor.DataSource = oComboboxDataTable + ' End If + + ' 'AddHandler oEditor.SelectedValuesChanged, Sub(_sender As Object, _e As List(Of String)) + ' ' oView.PostEditor() + ' ' End Sub + + ' 'AddHandler oEditor.BeforePopup, Sub(_sender As Object, _e As EventArgs) + ' ' MsgBox("oEditor.BeforePopup") + ' ' Dim oConnectionId As Integer = NotNull(oRow.Item("CONNECTION_ID"), 0) + ' ' Dim oSqlCommand As String = NotNull(oRow.Item("SQL_COMMAND"), "") + ' ' oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, pPanel, True) + + ' ' Dim oTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oConnectionId) + ' ' oEditor.DataSource = oTable + ' ' oEditor.DisplayMember = oComboboxDataTable.Columns.Item(0).ColumnName + ' ' oEditor.ValueMember = oComboboxDataTable.Columns.Item(0).ColumnName + ' ' End Sub + + ' 'AddHandler oEditor.QueryPopUp, Sub() + ' ' MsgBox("oEditor.QueryPopUp") + + ' ' End Sub + + ' 'AddHandler oEditor.Popup, Sub() + ' ' MsgBox("oEditor.Popup") + + ' ' End Sub + + ' 'AddHandler oEditor.ButtonClick, Sub() + ' ' MsgBox("oEditor.ButtonClick") + + ' ' End Sub + + ' AddHandler oEditor.ButtonPressed, Sub(_sender As Object, _e As EventArgs) + ' Dim oEditor2 = DirectCast(_sender, LookupControl3) + + ' 'MsgBox("oEditor.ButtonPressed") + ' Dim oConnectionId As Integer = NotNull(oRow.Item("CONNECTION_ID"), 0) + ' Dim oSqlCommand As String = NotNull(oRow.Item("SQL_COMMAND"), "") + ' oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, pPanel, True) + + ' Dim oTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oConnectionId) + + ' If oTable IsNot Nothing Then + ' oEditor2.Properties.ValueMember = oTable.Columns.Item(0).ColumnName + ' oEditor2.Properties.DisplayMember = oTable.Columns.Item(0).ColumnName + ' oEditor2.Properties.DataSource = oTable + ' oEditor2.DoValidate(PopupCloseMode.Normal) + ' End If + + ' End Sub + + + + ' e.RepositoryItem = oEditor + 'Else + ' If oComboboxDataTable Is Nothing Then + ' Dim oConnectionId As Integer = NotNull(oRow.Item("CONNECTION_ID"), 0) + ' Dim oSqlCommand As String = NotNull(oRow.Item("SQL_COMMAND"), "") + ' oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, pPanel, True) + + ' oComboboxDataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oConnectionId) + ' End If + + ' If oComboboxDataTable Is Nothing Then + ' Continue For + ' End If + + ' Dim oEditor = New RepositoryItemComboBox() + ' Dim oItems As New List(Of String) + + ' AddHandler oEditor.Validating, Sub(_sender As ComboBoxEdit, _e As CancelEventArgs) + ' If oItems.Contains(_sender.EditValue) Then + ' _e.Cancel = False + ' Else + ' _e.Cancel = True + ' End If + + ' End Sub + ' For Each oRow2 As DataRow In oComboboxDataTable.Rows + ' Dim oValue = oRow2.Item(0) + + ' Try + ' oValue &= $" | {oRow2.Item(1)}" + ' Catch ex As Exception + ' End Try + + ' oEditor.Items.Add(oValue) + ' oItems.Add(oValue) + ' Next + + ' e.RepositoryItem = oEditor + 'End If +#End Region Next Catch ex As Exception LOGGER.Warn("Error in CustomRowCellEdit for [{0}]", e.CellValue) @@ -565,10 +650,6 @@ Public Class ClassControlCreator End Try End Sub - 'AddHandler oView.CellValueChanged, Sub(sender As Object, e As CellValueChangedEventArgs) - ' Console.WriteLine("") - ' End Sub - AddHandler oView.ValidateRow, Sub(sender As Object, e As ValidateRowEventArgs) Dim oRow As DataRowView = oView.GetRow(oView.FocusedRowHandle) @@ -599,12 +680,18 @@ Public Class ClassControlCreator AddHandler oView.ValidatingEditor, Sub(sender As Object, e As BaseContainerValidateEditorEventArgs) Dim oValue As String = NotNull(e.Value, "") + 'MsgBox(oValue) + If oValue.Contains(" | ") Then oValue = oValue.Split(" | ").ToList().First() e.Value = oValue End If End Sub + + 'oView.FocusInvalidRow() + + Return oControl End Function @@ -738,4 +825,70 @@ Public Class ClassControlCreator End Try End Function + + Public Shared Sub GridTables_CacheDatatableForColumn(pControlId As Object, pColumnName As Object, pSqlStatement As Object, pConnectionId As Integer, pAdvancedLookup As Boolean) + Try + Dim oTable As DataTable = ClassDatabase.Return_Datatable_ConId(pSqlStatement, pConnectionId) + + ' If no columns for this control have been added, create an empty dict now + If Not GridTables.ContainsKey(pControlId) Then + GridTables.Add(pControlId, New Dictionary(Of String, RepositoryItem)) + End If + + Dim oRepositoryItem = GridTables_GetRepositoryItemForColumn(pColumnName, oTable, pAdvancedLookup) + Dim oColumnDictionary = GridTables.Item(pControlId) + + If oColumnDictionary.ContainsKey(pColumnName) Then + oColumnDictionary.Item(pColumnName) = oRepositoryItem + Else + oColumnDictionary.Add(pColumnName, oRepositoryItem) + End If + Catch ex As Exception + LOGGER.Error(ex) + End Try + End Sub + + Public Shared Function GridTables_GetRepositoryItemForColumn(pColumnName As String, pDataTable As DataTable, pIsAdvancedLookup As Boolean) As RepositoryItem + If pDataTable Is Nothing Then + Return Nothing + End If + + If pIsAdvancedLookup Then + + Dim oEditor = New RepositoryItemLookupControl3 + + If pDataTable IsNot Nothing Then + oEditor.DisplayMember = pDataTable.Columns.Item(0).ColumnName + oEditor.ValueMember = pDataTable.Columns.Item(0).ColumnName + oEditor.DataSource = pDataTable + End If + + Return oEditor + Else + Dim oEditor = New RepositoryItemComboBox() + Dim oItems As New List(Of String) + + AddHandler oEditor.Validating, Sub(_sender As ComboBoxEdit, _e As CancelEventArgs) + If oItems.Contains(_sender.EditValue) Then + _e.Cancel = False + Else + _e.Cancel = True + End If + + End Sub + For Each oRow2 As DataRow In pDataTable.Rows + Dim oValue = oRow2.Item(0) + + Try + oValue &= $" | {oRow2.Item(1)}" + Catch ex As Exception + End Try + + oEditor.Items.Add(oValue) + oItems.Add(oValue) + Next + + Return oEditor + End If + End Function End Class diff --git a/app/DD_PM_WINDREAM/ModuleRuntimeVariables.vb b/app/DD_PM_WINDREAM/ModuleRuntimeVariables.vb index c790f05..cf4a02e 100644 --- a/app/DD_PM_WINDREAM/ModuleRuntimeVariables.vb +++ b/app/DD_PM_WINDREAM/ModuleRuntimeVariables.vb @@ -104,8 +104,8 @@ Module ModuleRuntimeVariables Public CURRENT_SQL_COMAMND As String Public CURRENT_DT_SQL_CONFIG_TABLE As DataTable - Public CURRENT_CLICKED_PROFILE_ID As Integer = 0 - Public CURRENT_CLICKED_PROFILE_TITLE As String + Public Property CURRENT_CLICKED_PROFILE_ID As Integer = 0 + Public Property CURRENT_CLICKED_PROFILE_TITLE As String Public DT_CLIENT_USER As DataTable Public CLIENT_SELECTED As Integer = 0 @@ -114,7 +114,7 @@ Module ModuleRuntimeVariables Public CURR_SELECT_CONTROL As String Public CURR_CHOICE_LIST As String - Public CURR_DT_DEPENDING_CONTROLS As DataTable 'enthält zur Laufzeit die abhängigen Controls + Public Property CURR_DT_DEPENDING_CONTROLS As DataTable 'enthält zur Laufzeit die abhängigen Controls Public CURRENT_DT_MASS_CHANGE_DOCS As DataTable diff --git a/app/DD_PM_WINDREAM/clsPatterns.vb b/app/DD_PM_WINDREAM/clsPatterns.vb index 2b91309..c300df9 100644 --- a/app/DD_PM_WINDREAM/clsPatterns.vb +++ b/app/DD_PM_WINDREAM/clsPatterns.vb @@ -73,6 +73,7 @@ Public Class clsPatterns Catch ex As Exception LOGGER.Error(ex) LOGGER.Info("Error in ReplaceAllValues:" & ex.Message) + Return input End Try End Function diff --git a/app/DD_PM_WINDREAM/frmFormDesigner.vb b/app/DD_PM_WINDREAM/frmFormDesigner.vb index 886d400..25faedf 100644 --- a/app/DD_PM_WINDREAM/frmFormDesigner.vb +++ b/app/DD_PM_WINDREAM/frmFormDesigner.vb @@ -267,7 +267,7 @@ Public Class frmFormDesigner Dim oDTColumnsPerDevExGrid As DataTable = Database_ECM.GetDatatable($"SELECT * FROM TBPM_CONTROL_TABLE WHERE CONTROL_ID = {guid} ORDER BY [SEQUENCE]") ', "FDesignLaodControls") - Dim table = ClassControlCreator.CreateExistingGridControl(row, oDTColumnsPerDevExGrid, True) + Dim table = ClassControlCreator.CreateExistingGridControl(row, oDTColumnsPerDevExGrid, True, pnldesigner) AddHandler table.MouseClick, AddressOf gridControl_MouseClick ' AddHandler table.ColumnHeaderMouseClick, AddressOf table_ColumnHeaderMouseClick diff --git a/app/DD_PM_WINDREAM/frmMain.vb b/app/DD_PM_WINDREAM/frmMain.vb index 903af5d..3c0d238 100644 --- a/app/DD_PM_WINDREAM/frmMain.vb +++ b/app/DD_PM_WINDREAM/frmMain.vb @@ -710,7 +710,9 @@ Public Class frmMain If IsNumeric(_tag) Then If CURRENT_CLICKED_PROFILE_ID <> _tag Then OverviewOrDEtail = "DETAIL" + CURRENT_CLICKED_PROFILE_ID = _tag + LOGGER.Debug("CURRENT_CLICKED_PROFILE_ID set to [{0}]", CURRENT_CLICKED_PROFILE_ID) CURRENT_CLICKED_PROFILE_TITLE = e.Link.Item.Caption GRID_LOAD_TYPE = "PROFILE#" & CURRENT_CLICKED_PROFILE_ID.ToString TimerRefresh.Stop() @@ -1112,7 +1114,6 @@ Public Class frmMain ' Catch ex As Exception ' LOGGER.Warn($"Unexpected Error in freefileforUser [{oUpdate}] - {ex.Message}") ' End Try - 'End If If bwSync.IsBusy Then @@ -1120,16 +1121,14 @@ Public Class frmMain TimerRefresh_running = False End If Try - ' SaveGridLayout() - 'bwSync.ReportProgress(10) LoadNavBar() - 'bwSync.ReportProgress(60) Dim oStopWatch As New RefreshHelper.SW("Decide_Load") Await Decide_Load(False) oStopWatch.Done() - 'bwSync.ReportProgress(95) - If GridControl_Docs.Visible = True And FormOpenClose = False Then RefreshHelper.LoadViewInfo() + If GridControl_Docs.Visible = True And FormOpenClose = False Then + RefreshHelper.LoadViewInfo() + End If Handling_DEBUG_USER() Catch ex As Exception @@ -1137,13 +1136,9 @@ Public Class frmMain End Try Catch ex As Exception LOGGER.Error(ex) + Finally + TimerRefresh_running = False End Try - TimerRefresh_running = False - 'BarEditItem1.Visibility = DevExpress.XtraBars.BarItemVisibility.Always - '' call this method to start your asynchronous Task. - 'bwSync.RunWorkerAsync() - - End Sub Private Sub NotifyIcon1_Click(sender As System.Object, e As EventArgs) Handles NotifyIcon1.Click @@ -1464,6 +1459,7 @@ Public Class frmMain If Len(oHitProfilID) > 0 Then If oHitProfilID > 0 Then CURRENT_CLICKED_PROFILE_ID = oHitProfilID + LOGGER.Debug("CURRENT_CLICKED_PROFILE_ID set to [{0}]", CURRENT_CLICKED_PROFILE_ID) End If End If @@ -2121,9 +2117,11 @@ Public Class frmMain DXMouseEventArgs.GetMouseArgs(e).Handled = True GridViewItem_Clicked = "GROUP" CURRENT_CLICKED_PROFILE_ID = GridView_Docs.GetRowCellValue(GridView_Docs.GetDataRowHandleByGroupRowHandle(hi.RowHandle), GridView_Docs.Columns("PROFILE_ID")) + LOGGER.Debug("CURRENT_CLICKED_PROFILE_ID set to [{0}]", CURRENT_CLICKED_PROFILE_ID) ElseIf hi.InDataRow Then GridViewItem_Clicked = "ROW" CURRENT_CLICKED_PROFILE_ID = GridView_Docs.GetRowCellValue(GridView_Docs.GetDataRowHandleByGroupRowHandle(hi.RowHandle), GridView_Docs.Columns("PROFILE_ID")) + LOGGER.Debug("CURRENT_CLICKED_PROFILE_ID set to [{0}]", CURRENT_CLICKED_PROFILE_ID) Else GridViewItem_Clicked = Nothing End If diff --git a/app/DD_PM_WINDREAM/frmMassValidator.vb b/app/DD_PM_WINDREAM/frmMassValidator.vb index 7864064..809f05e 100644 --- a/app/DD_PM_WINDREAM/frmMassValidator.vb +++ b/app/DD_PM_WINDREAM/frmMassValidator.vb @@ -369,7 +369,7 @@ Public Class frmMassValidator LOGGER.Debug("Versuch Tabelle zu laden") Dim oDTMyColumns As DataTable = Database_ECM.GetDatatable($"SELECT * FROM TBPM_CONTROL_TABLE WHERE CONTROL_ID = {oControlRow.Item("GUID")} ORDER BY SEQUENCE") ', "MV_LoadControls1") - oControl = ClassControlCreator.CreateExistingGridControl(oControlRow, oDTMyColumns, False) + oControl = ClassControlCreator.CreateExistingGridControl(oControlRow, oDTMyColumns, False, pnldesigner) End Select If oControl IsNot Nothing AndAlso TypeOf oControl IsNot Label Then diff --git a/app/DD_PM_WINDREAM/frmValidator.Designer.vb b/app/DD_PM_WINDREAM/frmValidator.Designer.vb index b5b0760..3ffd7fd 100644 --- a/app/DD_PM_WINDREAM/frmValidator.Designer.vb +++ b/app/DD_PM_WINDREAM/frmValidator.Designer.vb @@ -110,6 +110,7 @@ Partial Class frmValidator Me.RibbonStatusBar1 = New DevExpress.XtraBars.Ribbon.RibbonStatusBar() Me.RibbonPage2 = New DevExpress.XtraBars.Ribbon.RibbonPage() Me.FolderBrowserDialog1 = New System.Windows.Forms.FolderBrowserDialog() + Me.BarButtonItem6 = New DevExpress.XtraBars.BarButtonItem() CType(Me.SplitContainer2_DV_Chat, System.ComponentModel.ISupportInitialize).BeginInit() Me.SplitContainer2_DV_Chat.SuspendLayout() CType(Me.SplitContainer1, System.ComponentModel.ISupportInitialize).BeginInit() @@ -452,9 +453,9 @@ Partial Class frmValidator 'RibbonControl1 ' Me.RibbonControl1.ExpandCollapseItem.Id = 0 - Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.bsiError, Me.bsiInformation, Me.bsiDocID, Me.BarButtonItemFileView, Me.BarButtonItem3, Me.BarButtonItem4, Me.bbtniRefresh, Me.bbtniRefreshSearches, Me.bbtniNext, Me.bbtniDelete, Me.bbtniAnnotation, Me.bsiInfo1, Me.bsiInfo2, Me.BbtnitmSave, Me.BarButtonItem2, Me.BarLinkContainerItem1, Me.btnitemConversationEnd, Me.bbtnitem_ConversationNew, Me.BarLinkContainerItem2, Me.BarEditItem1, Me.BarEditItem2, Me.BarEditItem3, Me.btnitemConversation_reload, Me.BarButtonItem5, Me.BarButtonItemAttmt, Me.barbtnitmExport}) + Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.bsiError, Me.bsiInformation, Me.bsiDocID, Me.BarButtonItemFileView, Me.BarButtonItem3, Me.BarButtonItem4, Me.bbtniRefresh, Me.bbtniRefreshSearches, Me.bbtniNext, Me.bbtniDelete, Me.bbtniAnnotation, Me.bsiInfo1, Me.bsiInfo2, Me.BbtnitmSave, Me.BarButtonItem2, Me.BarLinkContainerItem1, Me.btnitemConversationEnd, Me.bbtnitem_ConversationNew, Me.BarLinkContainerItem2, Me.BarEditItem1, Me.BarEditItem2, Me.BarEditItem3, Me.btnitemConversation_reload, Me.BarButtonItem5, Me.BarButtonItemAttmt, Me.barbtnitmExport, Me.BarButtonItem6}) resources.ApplyResources(Me.RibbonControl1, "RibbonControl1") - Me.RibbonControl1.MaxItemId = 29 + Me.RibbonControl1.MaxItemId = 30 Me.RibbonControl1.Name = "RibbonControl1" Me.RibbonControl1.PageCategories.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageCategory() {Me.RibbonPageConversations}) Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1}) @@ -738,6 +739,7 @@ Partial Class frmValidator Me.RibbonPageGroup3.ItemLinks.Add(Me.bbtniNext) Me.RibbonPageGroup3.ItemLinks.Add(Me.bbtniDelete) Me.RibbonPageGroup3.ItemLinks.Add(Me.bbtniAnnotation) + Me.RibbonPageGroup3.ItemLinks.Add(Me.BarButtonItem6) Me.RibbonPageGroup3.Name = "RibbonPageGroup3" resources.ApplyResources(Me.RibbonPageGroup3, "RibbonPageGroup3") ' @@ -774,6 +776,12 @@ Partial Class frmValidator Me.RibbonPage2.Name = "RibbonPage2" resources.ApplyResources(Me.RibbonPage2, "RibbonPage2") ' + 'BarButtonItem6 + ' + resources.ApplyResources(Me.BarButtonItem6, "BarButtonItem6") + Me.BarButtonItem6.Id = 29 + Me.BarButtonItem6.Name = "BarButtonItem6" + ' 'frmValidator ' Me.Appearance.Options.UseFont = True @@ -899,4 +907,5 @@ Partial Class frmValidator Friend WithEvents RibbonPageCust As DevExpress.XtraBars.Ribbon.RibbonPageGroup Friend WithEvents barbtnitmExport As DevExpress.XtraBars.BarButtonItem Friend WithEvents FolderBrowserDialog1 As FolderBrowserDialog + Friend WithEvents BarButtonItem6 As DevExpress.XtraBars.BarButtonItem End Class diff --git a/app/DD_PM_WINDREAM/frmValidator.resx b/app/DD_PM_WINDREAM/frmValidator.resx index 6fb4a3c..24cb54a 100644 --- a/app/DD_PM_WINDREAM/frmValidator.resx +++ b/app/DD_PM_WINDREAM/frmValidator.resx @@ -1063,6 +1063,9 @@ cmVlbiIgLz4NCiAgPC9nPg0KPC9zdmc+Cw== + + Set Grid Focus (DEBUG) + 0, 0 @@ -1787,6 +1790,12 @@ System.Windows.Forms.FolderBrowserDialog, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + BarButtonItem6 + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + frmValidator diff --git a/app/DD_PM_WINDREAM/frmValidator.vb b/app/DD_PM_WINDREAM/frmValidator.vb index 0de8bb0..67b82ad 100644 --- a/app/DD_PM_WINDREAM/frmValidator.vb +++ b/app/DD_PM_WINDREAM/frmValidator.vb @@ -1,89 +1,97 @@ Imports WINDREAMLib Imports System.Threading Imports System.Runtime.InteropServices -Imports Oracle.ManagedDataAccess.Client -Imports Independentsoft Imports System.IO Imports System.Text.RegularExpressions Imports System.ComponentModel Imports DigitalData.Controls.LookupGrid Imports DevExpress.XtraGrid -Imports System.Reflection -Imports DigitalData.Controls.ChatControl -Imports DevExpress.XtraEditors.Repository -Imports DigitalData.Modules.EDMI.API -Imports DigitalData.Modules.EDMI.API.EDMIServiceReference Imports DevExpress.XtraGrid.Views.Grid -Imports DevExpress.XtraEditors.Controls Public Class frmValidator - Dim strFileList() - Dim PROFIL_sortbynewest As Boolean - Dim PROFIL_VEKTORINDEX - Dim PROFIL_FINISH_SQL - Dim PROFIL_LOGINDEX + ''' + ''' Contains all controls for the current profile + ''' + Private Property DT_CONTROLS As DataTable - Dim oErrMsgMissingInput + ''' + ''' Contains all grid columns for the current profile + ''' + Private Property DT_COLUMNS_GRID As DataTable - Private PMDelimiter As String + ''' + ''' Contains all grid columns for the current profile which have an sql but don't have a reference to a control + ''' + Private Property DT_COLUMNS_GRID_WITH_SQL As DataTable - Dim WD_Search As String - Dim finalProfile As Boolean - Dim Move2Folder As String - Private DataASorDB As ClassDataASorDB - Private allgFunk As New ClassAllgemeineFunktionen + ''' + ''' Contains all grid columns for the current profile which have an sql and have a reference to a control + ''' + Private Property DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER As DataTable + + + Private Property PROFIL_sortbynewest As Boolean + Private Property PROFIL_VEKTORINDEX + Private Property PROFIL_FINISH_SQL + Private Property PROFIL_LOGINDEX + + Private Property oErrMsgMissingInput + + Private Property PMDelimiter As String + + Private Property WD_Search As String + Private Property finalProfile As Boolean + Private Property Move2Folder As String + Private Property DataASorDB As ClassDataASorDB + Private Property allgFunk As New ClassAllgemeineFunktionen 'speichert die DocumentDaten - Private navStep As String = Nothing - - Public Shared WMDocPathWindows As String - Public WMDocFileString As String - Private DocPathWindows As String - Dim OLD_Document_Path As String = "" - Dim ValueDTP As Date - Dim AnzDoks As Integer - Dim docCounter As Integer = 1 + Private Property navStep As String = Nothing + + Public Shared Property WMDocPathWindows As String + Private Property WMDocFileString As String + Private Property DocPathWindows As String + Private Property OLD_Document_Path As String = "" + Private Property ValueDTP As Date + Private Property docCounter As Integer = 1 'Anzahl der Validierungsdokumente - Dim Amount_Docs2Validate As Integer - 'Anzahl der validierten Dokumente - Dim Anzahl_validierte_Dok As Integer = 0 - Dim me_closing As Boolean = False - Dim first_control As Control - Dim last_control As Control - Dim _Indexe_Loaded As Boolean = False - - Public Shared idxerr_message As String = "" + Private Property Amount_Docs2Validate As Integer + Private Property me_closing As Boolean = False + Private Property first_control As Control + Private Property last_control As Control + Private Property _Indexe_Loaded As Boolean = False + + Public Shared Property idxerr_message As String = "" Private _CURRENT_INDEX_ARRAY(100, 250) As String - Private _frmValidatorSearch As frmValidatorSearch 'You need a reference to Form1 - Private _dependingControl_in_action As Boolean = False - Private _dependingColumn_in_action As Boolean = False - Private _SetControlValue_in_action As Boolean = False - Private DTCONTROLS As DataTable - Private DTGRID_COLUMNS_WITH_SQL As DataTable - Private DTGRID_COLUMNS As DataTable - Private DTGRID_SQL_DEFINITION As DataTable - Private DTConversations As DataTable - Private DTDYNAMIC_RIGHTS As DataTable + Private Property _frmValidatorSearch As frmValidatorSearch 'You need a reference to Form1 + Private Property _dependingControl_in_action As Boolean = False + Private Property _dependingColumn_in_action As Boolean = False + Private Property _SetControlValue_in_action As Boolean = False + - Private DT_AdditionalSearches_Resultset_Docs As DataTable - Private Right_Conversation_Add As Boolean = False - Private Right_Conversation_Stop As Boolean = False - Private Right_Conversation_Message As Boolean = False + Private Property DTConversations As DataTable + Private Property DTDYNAMIC_RIGHTS As DataTable - Private Conversation_User_Active As Boolean = False - Private ConversationQUDT_Delete As DataTable - Private Conversation_initialized As Boolean = False + Private Property DT_AdditionalSearches_Resultset_Docs As DataTable - Public FormLoaded As Boolean = False - Private ItemWorked As Boolean = False - Private Override As Boolean = False - Private OverrideAll As Boolean = False - Private Override_SQLCommand As String = "" - Private listChangedLookup As New List(Of String) + Private Property Right_Conversation_Add As Boolean = False + Private Property Right_Conversation_Stop As Boolean = False + Private Property Right_Conversation_Message As Boolean = False - Private ControlHandleStarted As Boolean = False + Private Property Conversation_User_Active As Boolean = False + Private Property ConversationQUDT_Delete As DataTable + Private Property Conversation_initialized As Boolean = False + + Public Property FormLoaded As Boolean = False + Private Property ItemWorked As Boolean = False + Private Property Override As Boolean = False + Private Property OverrideAll As Boolean = False + Private Property Override_SQLCommand As String = "" + Private Property listChangedLookup As New List(Of String) + + Private Property ControlHandleStarted As Boolean = False Public Sub New() 'MyBase.New @@ -706,19 +714,40 @@ Public Class frmValidator Try pnldesigner.Controls.Clear() Dim oSQL = $"SELECT [dbo].[FNPM_LANGUAGE_CONTROL_TEXT] (NAME,'{USER_LANGUAGE}',CTRL_TYPE,CTRL_TEXT) CTRL_CAPTION_LANG, * FROM TBPM_PROFILE_CONTROLS WHERE CONTROL_ACTIVE = 1 AND PROFIL_ID = {CURRENT_ProfilGUID} ORDER BY Y_LOC, X_LOC" - DTCONTROLS = DataASorDB.GetDatatable("DD_ECM", oSQL, "TBPM_PROFILE_CONTROLS_LANGUAGE", $"LANGUAGE = '{USER_LANGUAGE}' AND PROFIL_ID = {CURRENT_ProfilGUID}", "Y_LOC, X_LOC") - - oSQL = $"SELECT T1.GUID As CONTROL_ID, T1.PROFIL_ID, T.CONNECTION_ID, T.SQL_COMMAND, T.SPALTENNAME,T.FORMATTYPE,T.FORMATSTRING from TBPM_CONTROL_TABLE T, TBPM_PROFILE_CONTROLS T1 WHERE CONTROL_ACTIVE = 1 AND T.CONTROL_ID = T1.GUID AND T1.PROFIL_ID = {CURRENT_ProfilGUID} AND LEN(T.SQL_COMMAND) > 0 AND T.LOAD_AFT_LOAD_CONTROL = 0 ORDER BY T.SEQUENCE" - DTGRID_COLUMNS_WITH_SQL = DataASorDB.GetDatatable("DD_ECM", oSQL, "DTGRID_COLUMNS_WITH_SQL", $"PROFIL_ID = {CURRENT_ProfilGUID}", "SEQUENCE") + DT_CONTROLS = DataASorDB.GetDatatable("DD_ECM", oSQL, "TBPM_PROFILE_CONTROLS_LANGUAGE", $"LANGUAGE = '{USER_LANGUAGE}' AND PROFIL_ID = {CURRENT_ProfilGUID}", "Y_LOC, X_LOC") oSQL = $"SELECT T.* from TBPM_CONTROL_TABLE T, TBPM_PROFILE_CONTROLS T1 WHERE T1.CONTROL_ACTIVE = 1 AND T.CONTROL_ID = T1.GUID AND T1.PROFIL_ID = {CURRENT_ProfilGUID} ORDER BY T.SEQUENCE" - DTGRID_COLUMNS = DataASorDB.GetDatatable("DD_ECM", oSQL, "TBPM_CONTROL_TABLE", $"PROFIL_ID = {CURRENT_ProfilGUID}", "SEQUENCE") - - oSQL = $"SELECT T1.GUID As CONTROL_ID, T1.PROFIL_ID, T.CONNECTION_ID, T.SQL_COMMAND, T.SPALTENNAME,T.FORMATTYPE,T.FORMATSTRING from TBPM_CONTROL_TABLE T, TBPM_PROFILE_CONTROLS T1 WHERE T1.CONTROL_ACTIVE = 1 AND T.CONTROL_ID = T1.GUID AND T1.PROFIL_ID = {CURRENT_ProfilGUID} AND LEN(T.SQL_COMMAND) > 0 AND T.LOAD_AFT_LOAD_CONTROL = 1 ORDER BY T.SEQUENCE" - DTGRID_SQL_DEFINITION = DataASorDB.GetDatatable("DD_ECM", oSQL, "DTGRID_SQL_DEFINITION", $"PROFIL_ID = {CURRENT_ProfilGUID}", "SEQUENCE") - Dim oCount As Integer = 0 - - For Each oControlRow As DataRow In DTCONTROLS.Rows + DT_COLUMNS_GRID = DataASorDB.GetDatatable("DD_ECM", oSQL, "TBPM_CONTROL_TABLE", $"PROFIL_ID = {CURRENT_ProfilGUID}", "SEQUENCE") + + oSQL = "SELECT T1.GUID As CONTROL_ID, T1.PROFIL_ID, T.CONNECTION_ID, T.SQL_COMMAND, T.SPALTENNAME,T.FORMATTYPE,T.FORMATSTRING from TBPM_CONTROL_TABLE T, TBPM_PROFILE_CONTROLS T1 WHERE T1.CONTROL_ACTIVE = 1 AND T.CONTROL_ID = T1.GUID AND T1.PROFIL_ID = " & CURRENT_ProfilGUID & " AND LEN(T.SQL_COMMAND) > 0 ORDER BY T.SEQUENCE" + DT_COLUMNS_GRID_WITH_SQL = DataASorDB.GetDatatable("DD_ECM", oSQL, "DTGRID_SQL_DEFINITION", $"PROFIL_ID = {CURRENT_ProfilGUID}", "SEQUENCE") + + oSQL = " + SELECT + T1.GUID As CONTROL_ID, + T1.PROFIL_ID, + T.CONNECTION_ID, + T.SQL_COMMAND, + T.SPALTENNAME, + T.FORMATTYPE, + T.FORMATSTRING, + T.ADVANCED_LOOKUP + FROM + TBPM_CONTROL_TABLE T, + TBPM_PROFILE_CONTROLS T1 + WHERE + T1.CONTROL_ACTIVE = 1 AND + T.CONTROL_ID = T1.GUID AND + T1.PROFIL_ID = " & CURRENT_ProfilGUID & " AND + LEN(T.SQL_COMMAND) > 0 AND + T.SQL_COMMAND LIKE '%{#CTRL%' + ORDER BY T.SEQUENCE" + + DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER = DataASorDB.GetDatatable("DD_ECM", oSQL, "DTGRID_SQL_DEFINITION", $"PROFIL_ID = {CURRENT_ProfilGUID}", "SEQUENCE") + + Dim oTabIndexCounter As Integer = 0 + + For Each oControlRow As DataRow In DT_CONTROLS.Rows Dim oMyControl As Control Dim oControlID = oControlRow.Item("GUID") oControlInfo = $"CtrlID: {oControlID} - CtrlName: {oControlRow.Item("NAME")} - CtrlIndex: {oControlRow.Item("INDEX_NAME")}" @@ -761,7 +790,7 @@ Public Class frmValidator oComboBox.BackColor = Color.White End If End Sub -#Region "CONTROL LIST" + LOGGER.Debug("In add_ComboBox - GUID: " & oControlID) Dim oCONID As Integer Try @@ -822,29 +851,6 @@ Public Class frmValidator End If End If -#End Region - - 'Dim oMaxWidth As Integer = oComboBox.Width - - 'Using oGraphics As Graphics = oComboBox.CreateGraphics() - ' Dim oStringLength = oGraphics.MeasureString(Text, oComboBox.Font).Width - ' If oStringLength + 30 > oMaxWidth Then - ' oMaxWidth = oStringLength + 30 - ' End If - 'End Using - - 'Using g As Graphics = Me.CreateGraphics - ' For Each oItem As Object In oComboBox.Items 'Für alle Einträge... - ' Dim g1 As Graphics = oComboBox.CreateGraphics - ' If g1.MeasureString(Text, oComboBox.Font).Width + 30 > oMaxWidth Then - ' oMaxWidth = g1.MeasureString(Text, oComboBox.Font).Width + 30 - ' End If - ' g1.Dispose() - ' Next oItem - 'End Using - - 'oComboBox.DropDownWidth = oMaxWidth - oMyControl = oComboBox End If @@ -884,9 +890,9 @@ Public Class frmValidator AddHandler lookup.Properties.SelectedValuesChanged, AddressOf LookupListChanged 'Wenn Multiselect false dann prüfen ob abhängiges Control If CBool(oControlRow.Item("MULTISELECT")) = False Then - Dim oFilteredData As DataTable = DTCONTROLS.Clone() + Dim oFilteredData As DataTable = DT_CONTROLS.Clone() Dim oExpression = $"SQL_UEBERPRUEFUNG like '%#CTRL#{oMyControl.Name}%'" - DTCONTROLS.Select(oExpression).CopyToDataTable(oFilteredData, LoadOption.PreserveChanges) + DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredData, LoadOption.PreserveChanges) If oFilteredData.Rows.Count >= 1 Then LOGGER.Debug($"createControlsLU - Found {oFilteredData.Rows.Count} Controls which are depending on {oMyControl.Name}") 'AddHandler lookup.EditValueChanged, AddressOf onLookUp1 @@ -894,7 +900,7 @@ Public Class frmValidator End If oExpression = $"SQL_ENABLE like '%#CTRL#{oMyControl.Name}%'" - DTCONTROLS.Select(oExpression).CopyToDataTable(oFilteredData, LoadOption.PreserveChanges) + DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredData, LoadOption.PreserveChanges) If oFilteredData.Rows.Count >= 1 Then LOGGER.Debug($"createControlsLU - Found {oFilteredData.Rows.Count} Controls which' enable state is depending on {oMyControl.Name}") 'AddHandler lookup.EditValueChanged, AddressOf onLookUp1 @@ -902,14 +908,14 @@ Public Class frmValidator End If - oFilteredData = DTCONTROLS.Clone() + oFilteredData = DT_CONTROLS.Clone() oExpression = $"GUID = {oControlRow.Item("GUID")} and Len(SET_CONTROL_DATA) > 0" - DTCONTROLS.Select(oExpression).CopyToDataTable(oFilteredData, LoadOption.PreserveChanges) + DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredData, LoadOption.PreserveChanges) If oFilteredData.Rows.Count = 1 Then 'AddHandler lookup.EditValueChanged, AddressOf onLookUp1 AddHandler lookup.Properties.SelectedValuesChanged, AddressOf onLookUpselectedValue_Control2Set End If - oFilteredData = DTCONTROLS.Clone() + oFilteredData = DT_CONTROLS.Clone() End If @@ -937,61 +943,29 @@ Public Class frmValidator Dim mycheckbox As CheckBox = oMyControl AddHandler mycheckbox.CheckedChanged, AddressOf onCheckBox_CheckedChange - 'prüfen ob abhängiges Control - 'Dim filteredData As DataTable = DTCONTROLS.Clone() - 'Dim oExpression = $"SQL_UEBERPRUEFUNG like '%#CTRL#{oMyControl.Name}%'" - 'DTCONTROLS.Select(oExpression).CopyToDataTable(filteredData, LoadOption.PreserveChanges) - 'If filteredData.Rows.Count = 1 Then - ' AddHandler mycheckbox.CheckedChanged, AddressOf onCheckBox_CheckedChange - 'End If - 'oExpression = $"SQL_ENABLE like '%#CTRL#{oMyControl.Name}%'" - 'DTCONTROLS.Select(oExpression).CopyToDataTable(filteredData, LoadOption.PreserveChanges) - 'If filteredData.Rows.Count >= 1 Then - ' 'AddHandler lookup.EditValueChanged, AddressOf onLookUp1 - ' AddHandler mycheckbox.CheckedChanged, AddressOf onCheckBox_CheckedChange - 'End If - - 'filteredData = DTCONTROLS.Clone() - 'oExpression = $"GUID = {oControlRow.Item("GUID")} and Len(SET_CONTROL_DATA) > 0" - 'DTCONTROLS.Select(oExpression).CopyToDataTable(filteredData, LoadOption.PreserveChanges) - 'If filteredData.Rows.Count >= 1 Then - ' AddHandler mycheckbox.CheckedChanged, AddressOf onCheckBox_CheckedChange - 'End If - 'Dim oCONTROL_ID = DirectCast(oControlRow.Item("GUID"), ClassControlCreator.ControlMetadata).Guid - 'Dim ofilteredData As DataTable = DTCONTROLS.Clone() - 'oExpression = $"GUID = {oCONTROL_ID} and Len(SET_CONTROL_DATA) > 0" - 'DTCONTROLS.Select(oExpression).CopyToDataTable(ofilteredData, LoadOption.PreserveChanges) - 'If ofilteredData.Rows.Count = 1 Then - ' AddHandler mycheckbox.CheckedChanged, AddressOf onCheckBox_CheckedChange - 'End If Case "TABLE" oControlInfo = "TABLE#" & oControlInfo - 'Dim columns As List(Of DD_DMSLiteDataSet.TBPM_CONTROL_TABLERow) = (From r As DD_DMSLiteDataSet.TBPM_CONTROL_TABLERow In DD_DMSLiteDataSet.TBPM_CONTROL_TABLE - ' Where r.CONTROL_ID = oControlRow.Item("GUID") - ' Select r).ToList() - Dim oFilteredDatatable As DataTable = DTGRID_COLUMNS.Clone() + Dim oFilteredDatatable As DataTable = DT_COLUMNS_GRID.Clone() Dim oExpression = $"CONTROL_ID = {oControlRow.Item("GUID")}" - DTGRID_COLUMNS.Select(oExpression, "SEQUENCE").CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges) + DT_COLUMNS_GRID.Select(oExpression, "SEQUENCE").CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges) If oFilteredDatatable.Rows.Count >= 1 Then - LOGGER.Debug($"We got a definition for DTGRID_COLUMNS!!") + LOGGER.Debug("We got a DTGRID_COLUMNS definition for [{0}] ", oControlInfo) Else + LOGGER.Debug("DTGRID_COLUMNS definition for control [{0}] does not contain any rows!", oControlInfo) Continue For End If - - Dim oGrid = ClassControlCreator.CreateExistingGridControl(oControlRow, oFilteredDatatable, False) - + Dim oGrid = ClassControlCreator.CreateExistingGridControl(oControlRow, oFilteredDatatable, False, pnldesigner) AddHandler oGrid.ProcessGridKey, Sub(ByVal _sender As Object, ByVal e As KeyEventArgs) - - If e.KeyCode = Keys.Tab Then Dim gridControl = TryCast(_sender, GridControl) Dim view = TryCast(gridControl.FocusedView, Views.Base.ColumnView) - If (e.Modifiers = Keys.None And view.IsNewItemRow(view.FocusedRowHandle) And view.FocusedColumn.VisibleIndex = view.VisibleColumns.Count - 1) Then + If (e.Modifiers = Keys.None And view.IsNewItemRow(view.FocusedRowHandle) _ + And view.FocusedColumn.VisibleIndex = view.VisibleColumns.Count - 1) Then If view.IsEditing Then view.CloseEditor() Me.SelectNextControl(gridControl, e.Modifiers = Keys.None, True, True, True) @@ -1021,12 +995,12 @@ Public Class frmValidator End If last_control = oMyControl - oMyControl.TabIndex = oCount + oMyControl.TabIndex = oTabIndexCounter End If ' oMyControl.Tag = CInt(oControlRow.Item("GUID")) pnldesigner.Controls.Add(oMyControl) - oCount += 1 + oTabIndexCounter += 1 Catch ex As Exception Dim st As New StackTrace(True) st = New StackTrace(ex, True) @@ -1104,9 +1078,9 @@ Public Class frmValidator oTextbox.BackColor = Color.White End If Dim oCONTROL_ID = DirectCast(oTextbox.Tag, ClassControlCreator.ControlMetadata).Guid - Dim ofilteredData As DataTable = DTCONTROLS.Clone() + Dim ofilteredData As DataTable = DT_CONTROLS.Clone() Dim oExpression = $"GUID = {oCONTROL_ID} and Len(SET_CONTROL_DATA) > 0" - DTCONTROLS.Select(oExpression).CopyToDataTable(ofilteredData, LoadOption.PreserveChanges) + DT_CONTROLS.Select(oExpression).CopyToDataTable(ofilteredData, LoadOption.PreserveChanges) If ofilteredData.Rows.Count = 1 Then Dynamic_SetControlData(oTextbox, ofilteredData.Rows(0)) End If @@ -1123,46 +1097,71 @@ Public Class frmValidator ControlHandleStarted = False Exit Sub End If - Dim box As TextBox = sender - If box.Text <> String.Empty And me_closing = False And _Indexe_Loaded = True And box.Height < 25 Then + + Dim oTextBox As TextBox = sender + If oTextBox.Text <> String.Empty And me_closing = False And _Indexe_Loaded = True And oTextBox.Height < 25 Then If (e.KeyCode = Keys.Return) Or (e.KeyCode = Keys.Tab) Or (e.KeyCode = Keys.Enter) Then Try - Dim CONTROL_ID = DirectCast(box.Tag, ClassControlCreator.ControlMetadata).Guid - Dim oSql = String.Format("select NAME,CONNECTION_ID,SQL_UEBERPRUEFUNG FROM TBPM_PROFILE_CONTROLS WHERE CONTROL_ACTIVE = 1 AND PROFIL_ID = {0} AND SQL_UEBERPRUEFUNG LIKE '%{1}%'", CURRENT_ProfilGUID, box.Name) + Dim CONTROL_ID = DirectCast(oTextBox.Tag, ClassControlCreator.ControlMetadata).Guid + Dim oSql = String.Format("SELECT NAME, CONNECTION_ID, SQL_UEBERPRUEFUNG FROM TBPM_PROFILE_CONTROLS WHERE CONTROL_ACTIVE = 1 AND PROFIL_ID = {0} AND SQL_UEBERPRUEFUNG LIKE '%{1}%'", CURRENT_ProfilGUID, oTextBox.Name) Dim DTCONTROLS_UEBP As DataTable - DTCONTROLS_UEBP = DataASorDB.GetDatatable("DD_ECM", oSql, "TBPM_PROFILE_CONTROLS_SQL_UEP", $"PROFIL_ID = {CURRENT_ProfilGUID} AND SQL_UEBERPRUEFUNG LIKE '%{box.Name}%'") + DTCONTROLS_UEBP = DataASorDB.GetDatatable("DD_ECM", oSql, "TBPM_PROFILE_CONTROLS_SQL_UEP", $"PROFIL_ID = {CURRENT_ProfilGUID} AND SQL_UEBERPRUEFUNG LIKE '%{oTextBox.Name}%'") - If Not IsNothing(DTCONTROLS_UEBP) And DTCONTROLS_UEBP.Rows.Count > 0 Then - For Each ROW As DataRow In DTCONTROLS_UEBP.Rows + If Not IsNothing(DTCONTROLS_UEBP) AndAlso DTCONTROLS_UEBP.Rows.Count > 0 Then + For Each oRow As DataRow In DTCONTROLS_UEBP.Rows Try - Dim displayboxname = ROW.Item(0).ToString - If Not IsDBNull(ROW.Item(1)) And Not IsDBNull(ROW.Item(2)) Then - Dim sql_Statement = ROW.Item(2) - - - sql_Statement = clsPatterns.ReplaceAllValues(sql_Statement, pnldesigner, True) + Dim oControlName = oRow.Item("NAME").ToString + Dim oSqlStatement = oRow.Item("SQL_UEBERPRUEFUNG") + Dim oConnectionId = oRow.Item("CONNECTION_ID") + If Not IsDBNull(oSqlStatement) And Not IsDBNull(oConnectionId) Then + oSqlStatement = clsPatterns.ReplaceAllValues(oSqlStatement, pnldesigner, True) _dependingControl_in_action = True - Depending_Control_Set_Result(displayboxname, sql_Statement, ROW.Item(1)) + Depending_Control_Set_Result(oControlName, oSqlStatement, oConnectionId) _dependingControl_in_action = False End If Catch ex As Exception LOGGER.Error(ex) - LOGGER.Info("Unexpected Error in Display SQL result for control: " & ROW.Item(0).ToString & " - ERROR: " & ex.Message) + LOGGER.Info("Unexpected Error in Display SQL result for control: " & oRow.Item("NAME") & " - ERROR: " & ex.Message) End Try Next End If + If Not IsNothing(DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER) AndAlso DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER.Rows.Count > 0 Then + For Each oRow As DataRow In DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER.Rows + Try + Dim oControlId = oRow.Item("CONTROL_ID") + Dim oSqlStatement = oRow.Item("SQL_COMMAND") + Dim oConnectionId = oRow.Item("CONNECTION_ID") + Dim oColumnName = oRow.Item("SPALTENNAME") + Dim oAdvancedLookup = oRow.Item("ADVANCED_LOOKUP") + + If Not IsDBNull(oSqlStatement) And Not IsDBNull(oSqlStatement) Then + oSqlStatement = clsPatterns.ReplaceAllValues(oSqlStatement, pnldesigner, True) + + ClassControlCreator.GridTables_CacheDatatableForColumn(oControlId, oColumnName, oSqlStatement, oConnectionId, oAdvancedLookup) + + + End If + Catch ex As Exception + LOGGER.Error(ex) + LOGGER.Info("Unexpected Error in Display SQL result for grid column: " & oRow.Item("CONTROL_ID") & " - ERROR: " & ex.Message) + End Try + Next + + + End If + Catch ex As Exception LOGGER.Error(ex) LOGGER.Info("Unexpected Error in Eventhandler Variable SQL Result - ERROR: " & ex.Message) End Try - If box.Name = last_control.Name Then + If oTextBox.Name = last_control.Name Then ' Abschluss() Else SendKeys.Send("{TAB}") @@ -1175,7 +1174,7 @@ Public Class frmValidator Private Sub onCustomButtonClick(sender As System.Object, e As System.EventArgs) Dim oButton As Button = sender Dim oControlID = DirectCast(oButton.Tag, ClassControlCreator.ControlMetadata).Guid - Dim oSQL = ClassControlCreator.GET_CONTROL_PROPERTY(DTCONTROLS, oControlID, "SQL_UEBERPRUEFUNG") + Dim oSQL = ClassControlCreator.GET_CONTROL_PROPERTY(DT_CONTROLS, oControlID, "SQL_UEBERPRUEFUNG") If IsNothing(oSQL) Then LOGGER.Warn("onCustomButtonClick - SQL_UEBERPRUEFUNG IS NOTHING") Exit Sub @@ -1185,7 +1184,7 @@ Public Class frmValidator LOGGER.Warn("onCustomButtonClick - Check_UpdateIndexe = False >> Exit Click") Exit Sub End If - Override_SQLCommand = ClassControlCreator.GET_CONTROL_PROPERTY(DTCONTROLS, oControlID, "SQL2") + Override_SQLCommand = ClassControlCreator.GET_CONTROL_PROPERTY(DT_CONTROLS, oControlID, "SQL2") If IsNothing(Override_SQLCommand) Then Override_SQLCommand = "" End If @@ -1415,9 +1414,9 @@ Public Class frmValidator Checkbox_EnablingControls(oCheckbox) CheckBox_DependingColumn(oCheckbox) Dim oCONTROL_ID = DirectCast(oCheckbox.Tag, ClassControlCreator.ControlMetadata).Guid - Dim ofilteredData As DataTable = DTCONTROLS.Clone() + Dim ofilteredData As DataTable = DT_CONTROLS.Clone() Dim oExpression = $"GUID = {oCONTROL_ID} and Len(SET_CONTROL_DATA) > 0" - DTCONTROLS.Select(oExpression).CopyToDataTable(ofilteredData, LoadOption.PreserveChanges) + DT_CONTROLS.Select(oExpression).CopyToDataTable(ofilteredData, LoadOption.PreserveChanges) If ofilteredData.Rows.Count = 1 Then Dynamic_SetControlData(oCheckbox, ofilteredData.Rows(0)) End If @@ -1573,9 +1572,9 @@ Public Class frmValidator Dim oLOOKUPName = LookupControl.Name LOGGER.Debug($"oLOOKUPValue is [{oLOOKUPValue}]!") Dim oControlID = DirectCast(LookupControl.Tag, ClassControlCreator.ControlMetadata).Guid - Dim oFilteredDatatable As DataTable = DTCONTROLS.Clone() + Dim oFilteredDatatable As DataTable = DT_CONTROLS.Clone() Dim oExpression = $"GUID = {oControlID} and LEN(SET_CONTROL_DATA) > 0" - DTCONTROLS.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges) + DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges) If oFilteredDatatable.Rows.Count = 1 Then LOGGER.Debug($"We got a definition for SetControlValues!!") Else @@ -1700,9 +1699,9 @@ Public Class frmValidator Dim oLOOKUPName = LookupControl.Name LOGGER.Debug($"oLOOKUPValue is [{oLOOKUPValue}]!") Dim oControlID = DirectCast(LookupControl.Tag, ClassControlCreator.ControlMetadata).Guid - Dim oFilteredDatatable As DataTable = DTCONTROLS.Clone() + Dim oFilteredDatatable As DataTable = DT_CONTROLS.Clone() Dim oExpression = $"SQL_UEBERPRUEFUNG like '%#CTRL#{oLOOKUPName}%'" - DTCONTROLS.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges) + DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges) If oFilteredDatatable.Rows.Count > 0 Then LOGGER.Debug($"We got {oFilteredDatatable.Rows.Count} depending controls!!") Else @@ -1821,9 +1820,9 @@ Public Class frmValidator Dim oCheckboxname = pCheckbox.Name LOGGER.Debug($"pCheckStateTrue [{pCheckbox.Checked}]!") Dim oControlID = DirectCast(pCheckbox.Tag, ClassControlCreator.ControlMetadata).Guid - Dim oFilteredDatatable As DataTable = DTCONTROLS.Clone() + Dim oFilteredDatatable As DataTable = DT_CONTROLS.Clone() Dim oExpression = $"SQL_UEBERPRUEFUNG like '%#CTRL#{oCheckboxname}%'" - DTCONTROLS.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges) + DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges) If oFilteredDatatable.Rows.Count > 0 Then LOGGER.Debug($"We got {oFilteredDatatable.Rows.Count} depending controls!!") Else @@ -1942,15 +1941,16 @@ Public Class frmValidator End Sub Private Sub LookupControl_DependingColumn(LookupControl As LookupControl3, SelectedValues As List(Of String)) - Dim oSQLColumnDatatable As DataTable = DTGRID_COLUMNS_WITH_SQL.Clone() + Dim oSQLColumnDatatable As DataTable = DT_COLUMNS_GRID_WITH_SQL.Clone() Dim oExpression = $"SQL_COMMAND like '%#CTRL#{LookupControl.Name}%'" - DTGRID_COLUMNS_WITH_SQL.Select(oExpression).CopyToDataTable(oSQLColumnDatatable, LoadOption.PreserveChanges) + DT_COLUMNS_GRID_WITH_SQL.Select(oExpression).CopyToDataTable(oSQLColumnDatatable, LoadOption.PreserveChanges) If oSQLColumnDatatable.Rows.Count > 0 Then For Each oRow As DataRow In oSQLColumnDatatable.Rows - Dim oDEPENDING_CONTROL_ID = DTGRID_COLUMNS_WITH_SQL.Rows(0).Item("CONTROL_ID") - Dim oCONNID = DTGRID_COLUMNS_WITH_SQL.Rows(0).Item("CONNECTION_ID") - Dim oDEPENDING_COLUMN = DTGRID_COLUMNS_WITH_SQL.Rows(0).Item("SPALTENNAME") - Dim oSqlCommand = DTGRID_COLUMNS_WITH_SQL.Rows(0).Item("SQL_COMMAND") + Dim oDEPENDING_CONTROL_ID = oRow.Item("CONTROL_ID") + Dim oCONNID = oRow.Item("CONNECTION_ID") + Dim oDEPENDING_COLUMN = oRow.Item("SPALTENNAME") + Dim oSqlCommand = oRow.Item("SQL_COMMAND") + Dim oAdvancedLookup = oRow.Item("ADVANCED_LOOKUP") If _dependingColumn_in_action = True Then Exit Sub End If @@ -1959,12 +1959,16 @@ Public Class frmValidator _dependingColumn_in_action = True Try + + Dim oDTDEPENDING_RESULT As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oCONNID, $"LookupControl_DependingColumn - oDEPENDING_CONTROL_ID: {oDEPENDING_CONTROL_ID}") If Not IsNothing(oDTDEPENDING_RESULT) Then LOGGER.Debug($"Trying to fill the DropDown (DC) for ControlID [{oDEPENDING_CONTROL_ID}]..RowCount: [{oDTDEPENDING_RESULT.Rows.Count}] ") For Each oControl As Control In pnldesigner.Controls - If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid = oDEPENDING_CONTROL_ID Then - ClassControlCreator.GridTables.Item(oControl.Name).Add(oDEPENDING_COLUMN, oDTDEPENDING_RESULT) + Dim oControlId = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid + + If oControlId = oDEPENDING_CONTROL_ID Then + ClassControlCreator.GridTables_CacheDatatableForColumn(oControlId, oDEPENDING_COLUMN, oSqlCommand, oCONNID, oAdvancedLookup) _dependingColumn_in_action = False Exit For End If @@ -1979,29 +1983,32 @@ Public Class frmValidator End If End Sub Private Sub CheckBox_DependingColumn(pCheckbox As CheckBox) - Dim oSQLColumnDatatable As DataTable = DTGRID_COLUMNS_WITH_SQL.Clone() + Dim oSQLColumnDatatable As DataTable = DT_COLUMNS_GRID_WITH_SQL.Clone() Dim oExpression = $"SQL_COMMAND like '%#CTRL#{pCheckbox.Name}%'" - DTGRID_COLUMNS_WITH_SQL.Select(oExpression).CopyToDataTable(oSQLColumnDatatable, LoadOption.PreserveChanges) + DT_COLUMNS_GRID_WITH_SQL.Select(oExpression).CopyToDataTable(oSQLColumnDatatable, LoadOption.PreserveChanges) If oSQLColumnDatatable.Rows.Count > 0 Then For Each oRow As DataRow In oSQLColumnDatatable.Rows - Dim oDEPENDING_CONTROL_ID = DTGRID_COLUMNS_WITH_SQL.Rows(0).Item("CONTROL_ID") - Dim oCONNID = DTGRID_COLUMNS_WITH_SQL.Rows(0).Item("CONNECTION_ID") - Dim oDEPENDING_COLUMN = DTGRID_COLUMNS_WITH_SQL.Rows(0).Item("SPALTENNAME") - Dim oSqlCommand = DTGRID_COLUMNS_WITH_SQL.Rows(0).Item("SQL_COMMAND") + Dim oDEPENDING_CONTROL_ID = oRow.Item("CONTROL_ID") + Dim oCONNID = oRow.Item("CONNECTION_ID") + Dim oDEPENDING_COLUMN = oRow.Item("SPALTENNAME") + Dim oSqlCommand = oRow.Item("SQL_COMMAND") + Dim oAdvancedLookup = oRow.Item("ADVANCED_LOOKUP") + If _dependingColumn_in_action = True Then Exit Sub End If + oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, pnldesigner, True) _dependingColumn_in_action = True Try - Dim oDTDEPENDING_RESULT As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oCONNID, $"CheckBox_DependingColumn - oDEPENDING_CONTROL_ID: {oDEPENDING_CONTROL_ID}") If Not IsNothing(oDTDEPENDING_RESULT) Then LOGGER.Debug($"Trying to fill the DropDown (DC) for ControlID [{oDEPENDING_CONTROL_ID}]..RowCount: [{oDTDEPENDING_RESULT.Rows.Count}] ") For Each oControl As Control In pnldesigner.Controls + Dim oControlId = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid = oDEPENDING_CONTROL_ID Then - ClassControlCreator.GridTables.Item(oControl.Name).Add(oDEPENDING_COLUMN, oDTDEPENDING_RESULT) + ClassControlCreator.GridTables_CacheDatatableForColumn(oControlId, oDEPENDING_COLUMN, oSqlCommand, oCONNID, oAdvancedLookup) _dependingColumn_in_action = False Exit For End If @@ -2056,9 +2063,9 @@ Public Class frmValidator Next End If Controls2beEnabled(oCombobox.Name) - Dim ofilteredData As DataTable = DTCONTROLS.Clone() + Dim ofilteredData As DataTable = DT_CONTROLS.Clone() Dim oExpression = $"GUID = {CONTROL_ID} and Len(SET_CONTROL_DATA) > 0" - DTCONTROLS.Select(oExpression).CopyToDataTable(ofilteredData, LoadOption.PreserveChanges) + DT_CONTROLS.Select(oExpression).CopyToDataTable(ofilteredData, LoadOption.PreserveChanges) If ofilteredData.Rows.Count = 1 Then Dynamic_SetControlData(oCombobox, ofilteredData.Rows(0)) End If @@ -2072,9 +2079,9 @@ Public Class frmValidator End Sub Private Sub Controls2beEnabled(pControlName As String) Try - Dim oFilteredDatatable As DataTable = DTCONTROLS.Clone() + Dim oFilteredDatatable As DataTable = DT_CONTROLS.Clone() Dim oExpression = $"SQL_ENABLE like '%#CTRL#{pControlName}%'" - DTCONTROLS.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges) + DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges) If oFilteredDatatable.Rows.Count > 0 Then LOGGER.Debug($"We got {oFilteredDatatable.Rows.Count} controls which got enable definitions!!") Else @@ -2127,9 +2134,9 @@ Public Class frmValidator End Sub Private Sub Controls2beDisabled() Try - Dim oFilteredDatatable As DataTable = DTCONTROLS.Clone() + Dim oFilteredDatatable As DataTable = DT_CONTROLS.Clone() Dim oExpression = $"LEN(SQL_ENABLE) > 0" - DTCONTROLS.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges) + DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges) If oFilteredDatatable.Rows.Count > 0 Then LOGGER.Debug($"We got {oFilteredDatatable.Rows.Count} controls which need to be disabled!!") End If @@ -2149,9 +2156,9 @@ Public Class frmValidator End Sub Private Sub Controls2B_EnDisabled_on_Load() Try - Dim oFilteredDatatable As DataTable = DTCONTROLS.Clone() + Dim oFilteredDatatable As DataTable = DT_CONTROLS.Clone() Dim oExpression = $"LEN(SQL_ENABLE_ON_LOAD) > 0" - DTCONTROLS.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges) + DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges) If oFilteredDatatable.Rows.Count > 0 Then LOGGER.Debug($"We got {oFilteredDatatable.Rows.Count} controls which need to be checked dis/enable on load!") End If @@ -3115,7 +3122,7 @@ Public Class frmValidator Case "DevExpress.XtraGrid.GridControl" oControlType = "DevExpress.XtraGrid.GridControl" Dim oMyGridControl As GridControl = oControl - Dim oDTColumnsPerDevExGrid As DataTable = DTGRID_COLUMNS.Clone() + Dim oDTColumnsPerDevExGrid As DataTable = DT_COLUMNS_GRID.Clone() If oSourceIndexName = "" Then MsgBox("Attention wrong configuration:" & vbNewLine & "for control " & oControl.Name & " no INDEX configured!" & vbNewLine & "Bitte prüfen Sie den Formulardesigner!", MsgBoxStyle.Critical, ADDITIONAL_TITLE) Exit For @@ -3138,7 +3145,7 @@ Public Class frmValidator 'Tabellendarstellung Case "TABLE" Dim oExpression = $"CONTROL_ID = {oControlId}" - DTGRID_COLUMNS.Select(oExpression, "SEQUENCE").CopyToDataTable(oDTColumnsPerDevExGrid, LoadOption.PreserveChanges) + DT_COLUMNS_GRID.Select(oExpression, "SEQUENCE").CopyToDataTable(oDTColumnsPerDevExGrid, LoadOption.PreserveChanges) Dim oColValuesfromSource As String() LOGGER.Debug($"DevExpressGrid: {oDTColumnsPerDevExGrid.Rows.Count} Columns configured for control {oControlId}.") @@ -3505,12 +3512,16 @@ Public Class frmValidator ' set_foreground() If first_control Is Nothing = False Then first_control.Focus() Try - For Each oRow As DataRow In DTGRID_SQL_DEFINITION.Rows + Dim oDataTable As DataTable = DT_COLUMNS_GRID_WITH_SQL.Clone() + DT_COLUMNS_GRID_WITH_SQL.Select($"SQL_COMMAND not like '%#CTRL#%'").CopyToDataTable(oDataTable, LoadOption.PreserveChanges) + + For Each oRow As DataRow In oDataTable.Rows Dim oDEPENDING_CTRL_ID = oRow.Item("CONTROL_ID") Dim oDEPENDING_COLUMN = oRow.Item("SPALTENNAME") Dim oSqlCommand = oRow.Item("SQL_COMMAND") Dim oCONNID = oRow.Item("CONNECTION_ID") + Dim oAdvancedLookup = oRow.Item("ADVANCED_LOOKUP") oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, pnldesigner, True) Try @@ -3518,8 +3529,9 @@ Public Class frmValidator If Not IsNothing(oDTRESULT_FOR_COLUMN) Then LOGGER.Debug($"Trying to create a DropDown(FIV) for CONTROL-ID [{oDEPENDING_CTRL_ID}] - RowCount: [{oDTRESULT_FOR_COLUMN.Rows.Count}] ") For Each oControl As Control In pnldesigner.Controls - If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid = oDEPENDING_CTRL_ID Then - ClassControlCreator.GridTables.Item(oControl.Name).Add(oDEPENDING_COLUMN, oDTRESULT_FOR_COLUMN) + Dim oControlId = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid + If oControlId = oDEPENDING_CTRL_ID Then + ClassControlCreator.GridTables_CacheDatatableForColumn(oControlId, oDEPENDING_COLUMN, oSqlCommand, oCONNID, oAdvancedLookup) Exit For End If Next @@ -3899,61 +3911,61 @@ Public Class frmValidator oResult(0) = oValue LOGGER.Debug($"oIndexType {oIndexType.ToString}") - If oIndexType > 4000 And oIndexType <5000 Then + If oIndexType > 4000 And oIndexType < 5000 Then 'If dr.Item("INDEXNAME").ToString.StartsWith("[%VKT") Then - ' Dim PM_String = Return_PM_VEKTOR(value, dr.Item("INDEXNAME")) - 'Hier muss nun separat as Vektorfeld indexiert werden - If WMIndexVectofield(oValue, oFinalIndexRow.Item("INDEXNAME"), oFinalIndexRow.Item("PREVENT_DUPLICATES"), oFinalIndexRow.Item("ALLOW_NEW_VALUES")) = False Then - LOGGER.Debug("Final Vektorindex '" & oFinalIndexRow.Item("INDEXNAME").ToString & "' has beens et suxxessfully!") - Else - errormessage = "Error in final indexing:" & vbNewLine & idxerr_message - My.Settings.Save() - frmError.ShowDialog() - oErrorOcurred = True - ItemWorked = False - End If - Else - LOGGER.Debug("Now the final indexing...") - If oValue.ToUpper = "SQL-Command".ToUpper Then - MsgBox("Something went wrong while final-indexing. Check Your log and inform the admin-team!", MsgBoxStyle.Critical, ADDITIONAL_TITLE) - LOGGER.Warn("Something went wrong while final-indexing") - Exit For - End If - Dim oFIResult As Boolean = False - If IDB_ACTIVE = False Then - If Indexiere_File(CURRENT_WMFILE, oFinalIndexRow.Item("INDEXNAME"), oResult) = True Then - oFIResult = True - LOGGER.Debug("FINALER INDEX '" & oFinalIndexRow.Item("INDEXNAME") & "' WURDE ERFOLGREICH GESETZT") - - 'Nun das Logging - If PROFIL_LOGINDEX <> "" Then - Dim logstr = Return_LOGString(oValue, "DDFINALINDEX", oFinalIndexRow.Item("INDEXNAME")) - WMIndexVectofield(logstr, PROFIL_LOGINDEX) - End If - End If - Else - If IDBData.SetVariableValue(oFinalIndexRow.Item("INDEXNAME"), oValue) = True Then - oFIResult = True - LOGGER.Debug($"Final index IDB '{oFinalIndexRow.Item("INDEXNAME")}' was updated with [{oValue.ToString}]") - End If - End If - If oFIResult = False Then - errormessage = "Error in final indexing:" & vbNewLine & idxerr_message - My.Settings.Save() - frmError.ShowDialog() - oErrorOcurred = True - ItemWorked = False - End If + ' Dim PM_String = Return_PM_VEKTOR(value, dr.Item("INDEXNAME")) + 'Hier muss nun separat as Vektorfeld indexiert werden + If WMIndexVectofield(oValue, oFinalIndexRow.Item("INDEXNAME"), oFinalIndexRow.Item("PREVENT_DUPLICATES"), oFinalIndexRow.Item("ALLOW_NEW_VALUES")) = False Then + LOGGER.Debug("Final Vektorindex '" & oFinalIndexRow.Item("INDEXNAME").ToString & "' has beens et suxxessfully!") + Else + errormessage = "Error in final indexing:" & vbNewLine & idxerr_message + My.Settings.Save() + frmError.ShowDialog() + oErrorOcurred = True + ItemWorked = False + End If + Else + LOGGER.Debug("Now the final indexing...") + If oValue.ToUpper = "SQL-Command".ToUpper Then + MsgBox("Something went wrong while final-indexing. Check Your log and inform the admin-team!", MsgBoxStyle.Critical, ADDITIONAL_TITLE) + LOGGER.Warn("Something went wrong while final-indexing") + Exit For + End If + Dim oFIResult As Boolean = False + If IDB_ACTIVE = False Then + If Indexiere_File(CURRENT_WMFILE, oFinalIndexRow.Item("INDEXNAME"), oResult) = True Then + oFIResult = True + LOGGER.Debug("FINALER INDEX '" & oFinalIndexRow.Item("INDEXNAME") & "' WURDE ERFOLGREICH GESETZT") - End If - If oErrorOcurred = True Then - ItemWorked = False - Exit For - End If - Next - End If - Catch ex As Exception - LOGGER.Warn($"Error in finalIndexing: {ex.Message}") + 'Nun das Logging + If PROFIL_LOGINDEX <> "" Then + Dim logstr = Return_LOGString(oValue, "DDFINALINDEX", oFinalIndexRow.Item("INDEXNAME")) + WMIndexVectofield(logstr, PROFIL_LOGINDEX) + End If + End If + Else + If IDBData.SetVariableValue(oFinalIndexRow.Item("INDEXNAME"), oValue) = True Then + oFIResult = True + LOGGER.Debug($"Final index IDB '{oFinalIndexRow.Item("INDEXNAME")}' was updated with [{oValue.ToString}]") + End If + End If + If oFIResult = False Then + errormessage = "Error in final indexing:" & vbNewLine & idxerr_message + My.Settings.Save() + frmError.ShowDialog() + oErrorOcurred = True + ItemWorked = False + End If + + End If + If oErrorOcurred = True Then + ItemWorked = False + Exit For + End If + Next + End If + Catch ex As Exception + LOGGER.Warn($"Error in finalIndexing: {ex.Message}") oErrorOcurred = True End Try End If @@ -4145,11 +4157,6 @@ Public Class frmValidator MsgBox("Unhandled error occured ... please check your log!", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE) ItemWorked = False Else - 'Das Dokument freigeben und as editiert markieren - 'Dim sql = String.Format("UPDATE TBPM_PROFILE_FILES SET IN_WORK = 0, IN_WORK_WHEN = NULL, WORK_USER = '{0}', EDIT = 1 WHERE GUID = {1}", USER_USERNAME, CURRENT_DOC_GUID) - 'Database_ECM.ExecuteNonQuery(sql) - Anzahl_validierte_Dok += 1 - 'tstrlbl_Info.Text = "Anzahl Dateien: " & TBPM_PROFILE_FILESTableAdapter.cmdGet_Anzahl(PROFIL_ID) LOGGER.Debug("Validation of document ended successfully!") Dim oPROCSQL = $"EXEC PRPM_CHECK_NEXT_WF {CURRENT_DOC_GUID}" Database_ECM.ExecuteNonQuery(oPROCSQL) @@ -5675,4 +5682,14 @@ Public Class frmValidator End If End Sub + + Private Sub BarButtonItem6_ItemClick_2(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem6.ItemClick + For Each oControl In pnldesigner.Controls + If TypeOf oControl Is GridControl Then + Dim oGrid = DirectCast(oControl, GridControl) + Dim oView = DirectCast(oGrid.FocusedView, GridView) + oView.FocusInvalidRow() + End If + Next + End Sub End Class \ No newline at end of file From e0845b9999560a5a012bae8510b41927f2dddb81 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Mon, 4 Oct 2021 13:26:50 +0200 Subject: [PATCH 2/4] Fix editor not updating correctly when datasource/depending control changes --- app/DD_PM_WINDREAM/ClassControlCreator.vb | 168 ++++------------------ app/DD_PM_WINDREAM/frmValidator.vb | 15 ++ 2 files changed, 46 insertions(+), 137 deletions(-) diff --git a/app/DD_PM_WINDREAM/ClassControlCreator.vb b/app/DD_PM_WINDREAM/ClassControlCreator.vb index 736c9d6..bb626a0 100644 --- a/app/DD_PM_WINDREAM/ClassControlCreator.vb +++ b/app/DD_PM_WINDREAM/ClassControlCreator.vb @@ -517,132 +517,13 @@ Public Class ClassControlCreator AddHandler oView.CustomRowCellEdit, Sub(sender As Object, e As CustomRowCellEditEventArgs) Try For Each oRow As DataRow In DT_MY_COLUMNS.Rows - If oRow.Item("SPALTENNAME") <> e.Column.FieldName Then - Continue For - End If + Dim oColumnName = oRow.Item("SPALTENNAME") + Dim oEditorExists = GridTables_TestEditorExistsByControlAndColumn(oControlId, oColumnName) - If Not GridTables.Item(oControlId).ContainsKey(e.Column.FieldName) Then - Continue For + If oColumnName = e.Column.FieldName And oEditorExists Then + Dim oEditor = GridTables.Item(oControlId).Item(oColumnName) + e.RepositoryItem = oEditor End If - - Dim oEditor = GridTables.Item(oControlId).Item(e.Column.FieldName) - - e.RepositoryItem = oEditor - - -#Region "Old Stuff" - - - - 'Dim oComboboxDataTable As DataTable = GridTables.Item(oControlId).Item(e.Column.FieldName) - - 'If oComboboxDataTable Is Nothing Then - ' Throw New ApplicationException($"ComboboxTable for Column {e.Column.FieldName} is empty.") - 'End If - - - 'If oRow.Item("ADVANCED_LOOKUP") Then - - ' Dim oEditor = New RepositoryItemLookupControl3 - - ' If oComboboxDataTable IsNot Nothing Then - ' oEditor.DisplayMember = oComboboxDataTable.Columns.Item(0).ColumnName - ' oEditor.ValueMember = oComboboxDataTable.Columns.Item(0).ColumnName - ' oEditor.DataSource = oComboboxDataTable - ' End If - - ' 'AddHandler oEditor.SelectedValuesChanged, Sub(_sender As Object, _e As List(Of String)) - ' ' oView.PostEditor() - ' ' End Sub - - ' 'AddHandler oEditor.BeforePopup, Sub(_sender As Object, _e As EventArgs) - ' ' MsgBox("oEditor.BeforePopup") - ' ' Dim oConnectionId As Integer = NotNull(oRow.Item("CONNECTION_ID"), 0) - ' ' Dim oSqlCommand As String = NotNull(oRow.Item("SQL_COMMAND"), "") - ' ' oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, pPanel, True) - - ' ' Dim oTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oConnectionId) - ' ' oEditor.DataSource = oTable - ' ' oEditor.DisplayMember = oComboboxDataTable.Columns.Item(0).ColumnName - ' ' oEditor.ValueMember = oComboboxDataTable.Columns.Item(0).ColumnName - ' ' End Sub - - ' 'AddHandler oEditor.QueryPopUp, Sub() - ' ' MsgBox("oEditor.QueryPopUp") - - ' ' End Sub - - ' 'AddHandler oEditor.Popup, Sub() - ' ' MsgBox("oEditor.Popup") - - ' ' End Sub - - ' 'AddHandler oEditor.ButtonClick, Sub() - ' ' MsgBox("oEditor.ButtonClick") - - ' ' End Sub - - ' AddHandler oEditor.ButtonPressed, Sub(_sender As Object, _e As EventArgs) - ' Dim oEditor2 = DirectCast(_sender, LookupControl3) - - ' 'MsgBox("oEditor.ButtonPressed") - ' Dim oConnectionId As Integer = NotNull(oRow.Item("CONNECTION_ID"), 0) - ' Dim oSqlCommand As String = NotNull(oRow.Item("SQL_COMMAND"), "") - ' oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, pPanel, True) - - ' Dim oTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oConnectionId) - - ' If oTable IsNot Nothing Then - ' oEditor2.Properties.ValueMember = oTable.Columns.Item(0).ColumnName - ' oEditor2.Properties.DisplayMember = oTable.Columns.Item(0).ColumnName - ' oEditor2.Properties.DataSource = oTable - ' oEditor2.DoValidate(PopupCloseMode.Normal) - ' End If - - ' End Sub - - - - ' e.RepositoryItem = oEditor - 'Else - ' If oComboboxDataTable Is Nothing Then - ' Dim oConnectionId As Integer = NotNull(oRow.Item("CONNECTION_ID"), 0) - ' Dim oSqlCommand As String = NotNull(oRow.Item("SQL_COMMAND"), "") - ' oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, pPanel, True) - - ' oComboboxDataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oConnectionId) - ' End If - - ' If oComboboxDataTable Is Nothing Then - ' Continue For - ' End If - - ' Dim oEditor = New RepositoryItemComboBox() - ' Dim oItems As New List(Of String) - - ' AddHandler oEditor.Validating, Sub(_sender As ComboBoxEdit, _e As CancelEventArgs) - ' If oItems.Contains(_sender.EditValue) Then - ' _e.Cancel = False - ' Else - ' _e.Cancel = True - ' End If - - ' End Sub - ' For Each oRow2 As DataRow In oComboboxDataTable.Rows - ' Dim oValue = oRow2.Item(0) - - ' Try - ' oValue &= $" | {oRow2.Item(1)}" - ' Catch ex As Exception - ' End Try - - ' oEditor.Items.Add(oValue) - ' oItems.Add(oValue) - ' Next - - ' e.RepositoryItem = oEditor - 'End If -#End Region Next Catch ex As Exception LOGGER.Warn("Error in CustomRowCellEdit for [{0}]", e.CellValue) @@ -849,10 +730,6 @@ Public Class ClassControlCreator End Sub Public Shared Function GridTables_GetRepositoryItemForColumn(pColumnName As String, pDataTable As DataTable, pIsAdvancedLookup As Boolean) As RepositoryItem - If pDataTable Is Nothing Then - Return Nothing - End If - If pIsAdvancedLookup Then Dim oEditor = New RepositoryItemLookupControl3 @@ -876,19 +753,36 @@ Public Class ClassControlCreator End If End Sub - For Each oRow2 As DataRow In pDataTable.Rows - Dim oValue = oRow2.Item(0) - Try - oValue &= $" | {oRow2.Item(1)}" - Catch ex As Exception - End Try + If pDataTable IsNot Nothing Then + For Each oRow2 As DataRow In pDataTable.Rows + Dim oValue = oRow2.Item(0) - oEditor.Items.Add(oValue) - oItems.Add(oValue) - Next + Try + oValue &= $" | {oRow2.Item(1)}" + Catch ex As Exception + End Try + + oEditor.Items.Add(oValue) + oItems.Add(oValue) + Next + End If Return oEditor End If End Function + + Private Shared Function GridTables_TestEditorExistsByControlAndColumn(oControlId As Integer, pColumn As String) As Boolean + If GridTables.ContainsKey(oControlId) Then + Dim oContainsKey = GridTables.Item(oControlId).ContainsKey(pColumn) + If oContainsKey AndAlso GridTables.Item(oControlId).Item(pColumn) IsNot Nothing Then + Return True + Else + Return False + End If + Else + Return False + End If + End Function + End Class diff --git a/app/DD_PM_WINDREAM/frmValidator.vb b/app/DD_PM_WINDREAM/frmValidator.vb index 67b82ad..8057c2f 100644 --- a/app/DD_PM_WINDREAM/frmValidator.vb +++ b/app/DD_PM_WINDREAM/frmValidator.vb @@ -1147,6 +1147,21 @@ Public Class frmValidator ClassControlCreator.GridTables_CacheDatatableForColumn(oControlId, oColumnName, oSqlStatement, oConnectionId, oAdvancedLookup) + ' === Block to force setting the editor for GridColumns + For Each oControl As Control In pnldesigner.Controls + Try + Dim oMeta = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata) + If oMeta.Guid = oControlId AndAlso TypeOf oControl Is GridControl Then + Dim oGrid As GridControl = DirectCast(oControl, GridControl) + DirectCast(oGrid.FocusedView, GridView).FocusInvalidRow() + Exit For + End If + Catch ex As Exception + LOGGER.Error(ex) + End Try + Next + ' === End + End If Catch ex As Exception LOGGER.Error(ex) From 7e39562f5f96be882b68fd5d820901f99081b5e6 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Mon, 4 Oct 2021 16:23:14 +0200 Subject: [PATCH 3/4] HandleControlValueChange for all controls, Validate Grid values on a per-cell basis, add clipboard functions to validator grids, add GUIs.Common reference --- app/DD_PM_WINDREAM/ClassControlCreator.vb | 138 ++++++++++------ app/DD_PM_WINDREAM/DD_PM_WINDREAM.vbproj | 3 + app/DD_PM_WINDREAM/frmValidator.Designer.vb | 12 +- app/DD_PM_WINDREAM/frmValidator.vb | 172 ++++++++------------ app/DD_PM_WINDREAM/frmValidatorSearch.vb | 12 +- app/SetupVS19/Product.wxs | 1 + 6 files changed, 173 insertions(+), 165 deletions(-) diff --git a/app/DD_PM_WINDREAM/ClassControlCreator.vb b/app/DD_PM_WINDREAM/ClassControlCreator.vb index 5200f84..85e1ee4 100644 --- a/app/DD_PM_WINDREAM/ClassControlCreator.vb +++ b/app/DD_PM_WINDREAM/ClassControlCreator.vb @@ -11,6 +11,7 @@ Imports DevExpress.XtraGrid.Columns Imports DevExpress.XtraGrid.Views.Base Imports DevExpress.XtraGrid.Views.Grid Imports DigitalData.Controls.LookupGrid +Imports DigitalData.GUIs.Common Public Class ClassControlCreator @@ -422,6 +423,9 @@ Public Class ClassControlCreator oView.OptionsView.ShowGroupPanel = False oControl.ContextMenu = Nothing + Dim oGridBuilder As New GridBuilder(oView) + oGridBuilder.WithClipboardHandler() + If Not designMode Then oView.OptionsBehavior.Editable = Not row.Item("READ_ONLY") oView.OptionsBehavior.ReadOnly = row.Item("READ_ONLY") @@ -537,68 +541,27 @@ Public Class ClassControlCreator End Try End Sub - AddHandler oView.ValidateRow, Sub(sender As Object, e As ValidateRowEventArgs) - Dim oRow As DataRowView = oView.GetRow(oView.FocusedRowHandle) - - For Each oCol As DataColumn In oRow.DataView.Table.Columns - Dim oColumn As DataRow = (From r As DataRow In DT_MY_COLUMNS.Rows - Where r.Item("SPALTENNAME") = oCol.ColumnName - Select r).FirstOrDefault() - - Dim oGridColumn As GridColumn = (From c As GridColumn In oView.Columns - Where c.FieldName = oCol.ColumnName - Select c).FirstOrDefault() - - Dim oIsRequired = oColumn.Item("VALIDATION") - Dim oValue = NotNull(oView.GetRowCellValue(e.RowHandle, oCol.ColumnName), "") - - Try - Dim oRegex = NotNull(oColumn.Item("REGEX_MATCH"), String.Empty) - Dim oRegexMessage = NotNull(oColumn.Item("REGEX_MESSAGE_DE"), String.Empty) - If oRegex <> String.Empty Then - Dim oMatch = New Regex(oRegex).IsMatch(oValue) - Dim oDefaultMessage = "Wert entspricht nicht dem gefordertem Format!" - Dim oMessage = IIf(oRegexMessage <> String.Empty, oRegexMessage, oDefaultMessage) - - If oMatch = False Then - oView.SetColumnError(oGridColumn, oMessage) - e.Valid = False - Exit For - - End If - End If - Catch ex As Exception - LOGGER.Error(ex) - End Try - - If oIsRequired And oValue = "" Then - oView.SetColumnError(oGridColumn, "Spalte muss ausgefüllt werden!") - e.Valid = False - Exit For - - End If - Next - End Sub + AddHandler oView.ValidatingEditor, Sub(sender As Object, e As BaseContainerValidateEditorEventArgs) + Dim oRow As DataRowView = oView.GetRow(oView.FocusedRowHandle) + Dim oColumnName = oView.FocusedColumn.FieldName + + GridTables_ValidateColumn(oView, DT_MY_COLUMNS, oColumnName, e.Value, e.Valid, e.ErrorText) + End Sub AddHandler oView.InvalidRowException, Sub(sender As Object, e As InvalidRowExceptionEventArgs) e.ExceptionMode = ExceptionMode.NoAction End Sub + AddHandler oView.ValidatingEditor, Sub(sender As Object, e As BaseContainerValidateEditorEventArgs) Dim oValue As String = NotNull(e.Value, "") - 'MsgBox(oValue) - If oValue.Contains(" | ") Then oValue = oValue.Split(" | ").ToList().First() e.Value = oValue End If End Sub - - 'oView.FocusInvalidRow() - - Return oControl End Function @@ -798,6 +761,46 @@ Public Class ClassControlCreator End If End Function + Public Shared Sub GridTables_HandleControlValueChange(pControlPanel As Panel, pColumnsWithSqlAndControlPlaceholders As DataTable) + If Not IsNothing(pColumnsWithSqlAndControlPlaceholders) AndAlso pColumnsWithSqlAndControlPlaceholders.Rows.Count > 0 Then + For Each oRow As DataRow In pColumnsWithSqlAndControlPlaceholders.Rows + Try + Dim oControlId = oRow.Item("CONTROL_ID") + Dim oSqlStatement = oRow.Item("SQL_COMMAND") + Dim oConnectionId = oRow.Item("CONNECTION_ID") + Dim oColumnName = oRow.Item("SPALTENNAME") + Dim oAdvancedLookup = oRow.Item("ADVANCED_LOOKUP") + + If Not IsDBNull(oSqlStatement) And Not IsDBNull(oSqlStatement) Then + oSqlStatement = clsPatterns.ReplaceAllValues(oSqlStatement, pControlPanel, True) + + ClassControlCreator.GridTables_CacheDatatableForColumn(oControlId, oColumnName, oSqlStatement, oConnectionId, oAdvancedLookup) + + + ' === Block to force setting the editor for GridColumns + For Each oControl As Control In pControlPanel.Controls + Try + Dim oMeta = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata) + If oMeta.Guid = oControlId AndAlso TypeOf oControl Is GridControl Then + Dim oGrid As GridControl = DirectCast(oControl, GridControl) + DirectCast(oGrid.FocusedView, GridView).FocusInvalidRow() + Exit For + End If + Catch ex As Exception + LOGGER.Error(ex) + End Try + Next + ' === End + + End If + Catch ex As Exception + LOGGER.Error(ex) + LOGGER.Info("Unexpected Error in Display SQL result for grid column: " & oRow.Item("CONTROL_ID") & " - ERROR: " & ex.Message) + End Try + Next + End If + End Sub + Private Shared Function GridTables_TestEditorExistsByControlAndColumn(oControlId As Integer, pColumn As String) As Boolean If GridTables.ContainsKey(oControlId) Then Dim oContainsKey = GridTables.Item(oControlId).ContainsKey(pColumn) @@ -811,4 +814,43 @@ Public Class ClassControlCreator End If End Function + Private Shared Function GridTables_ValidateColumn(pView As GridView, pColumnDefinition As DataTable, ColumnName As String, pValue As Object, ByRef pIsValid As Boolean, ByRef pErrorText As String) As Boolean + Dim oColumn As DataRow = (From r As DataRow In pColumnDefinition.Rows + Where r.Item("SPALTENNAME") = ColumnName + Select r).FirstOrDefault() + + Dim oGridColumn As GridColumn = (From c As GridColumn In pView.Columns + Where c.FieldName = ColumnName + Select c).FirstOrDefault() + + Dim oIsRequired = oColumn.Item("VALIDATION") + + Try + Dim oRegex = NotNull(oColumn.Item("REGEX_MATCH"), String.Empty) + Dim oRegexMessage = NotNull(oColumn.Item("REGEX_MESSAGE_DE"), String.Empty) + If oRegex <> String.Empty Then + Dim oMatch = New Regex(oRegex).IsMatch(pValue.ToString) + Dim oDefaultMessage = "Wert entspricht nicht dem gefordertem Format!" + Dim oMessage = IIf(oRegexMessage <> String.Empty, oRegexMessage, oDefaultMessage) + + If oMatch = False Then + pErrorText = oMessage + pIsValid = False + Return False + End If + End If + Catch ex As Exception + LOGGER.Error(ex) + End Try + + If oIsRequired And pValue.ToString = "" Then + pErrorText = "Spalte muss ausgefüllt werden!" + pIsValid = False + Return False + + End If + + Return True + End Function + End Class diff --git a/app/DD_PM_WINDREAM/DD_PM_WINDREAM.vbproj b/app/DD_PM_WINDREAM/DD_PM_WINDREAM.vbproj index f70fe8f..121d5e8 100644 --- a/app/DD_PM_WINDREAM/DD_PM_WINDREAM.vbproj +++ b/app/DD_PM_WINDREAM/DD_PM_WINDREAM.vbproj @@ -159,6 +159,9 @@ ..\..\..\DDMonorepo\Controls.SnapPanel\bin\Debug\DigitalData.Controls.SnapPanel.dll + + ..\..\..\DDMonorepo\GUIs.Common\bin\Debug\DigitalData.GUIs.Common.dll + ..\..\..\DDMonorepo\Modules.Config\bin\Debug\DigitalData.Modules.Config.dll diff --git a/app/DD_PM_WINDREAM/frmValidator.Designer.vb b/app/DD_PM_WINDREAM/frmValidator.Designer.vb index 3ffd7fd..c2f03b4 100644 --- a/app/DD_PM_WINDREAM/frmValidator.Designer.vb +++ b/app/DD_PM_WINDREAM/frmValidator.Designer.vb @@ -30,7 +30,7 @@ Partial Class frmValidator Me.TITLELabel1 = New System.Windows.Forms.Label() Me.btnSave = New System.Windows.Forms.Button() Me.DESCRIPTIONLabel = New System.Windows.Forms.Label() - Me.pnldesigner = New System.Windows.Forms.Panel() + Me.PanelValidatorControl = New System.Windows.Forms.Panel() Me.DocumentViewerValidator = New DigitalData.Controls.DocumentViewer.DocumentViewer() Me.ChatControl1 = New DigitalData.Controls.ChatControl.ChatControl() Me.BarAndDockingController3 = New DevExpress.XtraBars.BarAndDockingController(Me.components) @@ -162,7 +162,7 @@ Partial Class frmValidator Me.Panel1.Controls.Add(Me.TITLELabel1) Me.Panel1.Controls.Add(Me.btnSave) Me.Panel1.Controls.Add(Me.DESCRIPTIONLabel) - Me.Panel1.Controls.Add(Me.pnldesigner) + Me.Panel1.Controls.Add(Me.PanelValidatorControl) resources.ApplyResources(Me.Panel1, "Panel1") Me.Panel1.Name = "Panel1" ' @@ -186,9 +186,9 @@ Partial Class frmValidator ' 'pnldesigner ' - resources.ApplyResources(Me.pnldesigner, "pnldesigner") - Me.pnldesigner.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle - Me.pnldesigner.Name = "pnldesigner" + resources.ApplyResources(Me.PanelValidatorControl, "pnldesigner") + Me.PanelValidatorControl.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.PanelValidatorControl.Name = "pnldesigner" ' 'DocumentViewerValidator ' @@ -824,7 +824,7 @@ Partial Class frmValidator Friend WithEvents TITLELabel1 As System.Windows.Forms.Label Friend WithEvents btnSave As System.Windows.Forms.Button Friend WithEvents DESCRIPTIONLabel As System.Windows.Forms.Label - Friend WithEvents pnldesigner As System.Windows.Forms.Panel + Friend WithEvents PanelValidatorControl As System.Windows.Forms.Panel Friend WithEvents PdfBarController1 As DevExpress.XtraPdfViewer.Bars.PdfBarController Friend WithEvents BarManager1 As DevExpress.XtraBars.BarManager Friend WithEvents PdfFileOpenBarItem1 As DevExpress.XtraPdfViewer.Bars.PdfFileOpenBarItem diff --git a/app/DD_PM_WINDREAM/frmValidator.vb b/app/DD_PM_WINDREAM/frmValidator.vb index 8057c2f..41c83a6 100644 --- a/app/DD_PM_WINDREAM/frmValidator.vb +++ b/app/DD_PM_WINDREAM/frmValidator.vb @@ -134,7 +134,7 @@ Public Class frmValidator Location = My.Settings.frmValidatorPosition Else Try - LOGGER.Debug($"!! Invalid PositionData X({My.Settings.frmValidatorPosition.X.ToString}), Y({My.Settings.frmValidatorPosition.Y})") + LOGGER.Debug($"!! Invalid PositionData X({My.Settings.frmValidatorPosition.X}), Y({My.Settings.frmValidatorPosition.Y})") Catch ex As Exception End Try @@ -476,14 +476,14 @@ Public Class frmValidator 'Check whether DocData is there Dim oConID = BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows(0).Item("CONN_ID") oDataResultCommand = BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows(0).Item("SQL_COMMAND") - oDataResultCommand = clsPatterns.ReplaceAllValues(oDataResultCommand, pnldesigner, True) + oDataResultCommand = clsPatterns.ReplaceAllValues(oDataResultCommand, PanelValidatorControl, True) oDatatableDataResult = ClassDatabase.Return_Datatable_ConId(oDataResultCommand, oConID, "Load_Additional_Searches1") End If If BASEDATA_DT_PROFILE_SEARCHES_DOC.Rows.Count > 0 Then 'Check whether DocData is there Dim oConID = BASEDATA_DT_PROFILE_SEARCHES_DOC.Rows(0).Item("CONN_ID") oDocResultCommand = BASEDATA_DT_PROFILE_SEARCHES_DOC.Rows(0).Item("SQL_COMMAND") - oDocResultCommand = clsPatterns.ReplaceAllValues(oDocResultCommand, pnldesigner, True) + oDocResultCommand = clsPatterns.ReplaceAllValues(oDocResultCommand, PanelValidatorControl, True) oDatatableDocResult = ClassDatabase.Return_Datatable_ConId(oDocResultCommand, oConID, "Load_Additional_Searches2") End If @@ -535,7 +535,7 @@ Public Class frmValidator _frmValidatorSearch._DTSQLSearches = BASEDATA_DT_PROFILE_SEARCHES_SQL Dim oConID = BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows(0).Item("CONN_ID") Dim oCommand = BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows(0).Item("SQL_COMMAND") - oCommand = clsPatterns.ReplaceAllValues(oCommand, pnldesigner, True) + oCommand = clsPatterns.ReplaceAllValues(oCommand, PanelValidatorControl, True) _frmValidatorSearch.Refresh_Load_GridSQL(oConID, oCommand, 0, BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows(0).Item("TAB_TITLE")) End If @@ -543,7 +543,7 @@ Public Class frmValidator _frmValidatorSearch._DTDocSearches = BASEDATA_DT_PROFILE_SEARCHES_DOC Dim oConID = BASEDATA_DT_PROFILE_SEARCHES_DOC.Rows(0).Item("CONN_ID") Dim oCommand = BASEDATA_DT_PROFILE_SEARCHES_DOC.Rows(0).Item("SQL_COMMAND") - oCommand = clsPatterns.ReplaceAllValues(oCommand, pnldesigner, True) + oCommand = clsPatterns.ReplaceAllValues(oCommand, PanelValidatorControl, True) _frmValidatorSearch.RefreshTabDoc(oConID, oCommand, 0, BASEDATA_DT_PROFILE_SEARCHES_DOC.Rows(0).Item("TAB_TITLE")) End If @@ -601,7 +601,7 @@ Public Class frmValidator End If 'oSql = clsPatterns.ReplaceUserValues(sqlStatement, USER_PRENAME, USER_SURNAME, USER_SHORTNAME, USER_LANGUAGE, USER_EMAIL, USER_ID, CURRENT_CLICKED_PROFILE_ID) 'oSql = clsPatterns.ReplaceInternalValues(oSql) - oSQLStatement = clsPatterns.ReplaceAllValues(oSQLStatement, pnldesigner, True) + oSQLStatement = clsPatterns.ReplaceAllValues(oSQLStatement, PanelValidatorControl, True) If IsNothing(oSQLStatement) Then Continue For End If @@ -712,7 +712,7 @@ Public Class frmValidator Sub Create_Controls() Dim oControlInfo As String Try - pnldesigner.Controls.Clear() + PanelValidatorControl.Controls.Clear() Dim oSQL = $"SELECT [dbo].[FNPM_LANGUAGE_CONTROL_TEXT] (NAME,'{USER_LANGUAGE}',CTRL_TYPE,CTRL_TEXT) CTRL_CAPTION_LANG, * FROM TBPM_PROFILE_CONTROLS WHERE CONTROL_ACTIVE = 1 AND PROFIL_ID = {CURRENT_ProfilGUID} ORDER BY Y_LOC, X_LOC" DT_CONTROLS = DataASorDB.GetDatatable("DD_ECM", oSQL, "TBPM_PROFILE_CONTROLS_LANGUAGE", $"LANGUAGE = '{USER_LANGUAGE}' AND PROFIL_ID = {CURRENT_ProfilGUID}", "Y_LOC, X_LOC") @@ -753,14 +753,14 @@ Public Class frmValidator oControlInfo = $"CtrlID: {oControlID} - CtrlName: {oControlRow.Item("NAME")} - CtrlIndex: {oControlRow.Item("INDEX_NAME")}" Try Select Case oControlRow.Item("CTRL_TYPE").ToString.ToUpper - Case "TXT" + Case ClassControlCreator.PREFIX_TEXTBOX Try - oControlInfo = "TXT#" & oControlInfo + oControlInfo = ClassControlCreator.PREFIX_TEXTBOX & "#" & oControlInfo LOGGER.Debug($"[{oControlInfo}] - TXT Try to create control...") + Dim txt As TextBox = ClassControlCreator.CreateExistingTextbox(oControlRow, False) AddHandler txt.GotFocus, AddressOf OnTextBoxFocus AddHandler txt.LostFocus, AddressOf OnTextBoxLostFocus - AddHandler txt.KeyUp, AddressOf OnTextBoxKeyUp oMyControl = txt LOGGER.Debug($"[{oControlInfo}] - TXT Created!!") @@ -816,7 +816,7 @@ Public Class frmValidator If clsPatterns.HasOnlySimplePatterns(oSQL) Then LOGGER.Debug("SQL HasOnlySimplePatterns!") oSQL = clsPatterns.ReplaceInternalValues(oSQL) - oSQL = clsPatterns.ReplaceControlValues(oSQL, pnldesigner, True) + oSQL = clsPatterns.ReplaceControlValues(oSQL, PanelValidatorControl, True) Dim oDT As DataTable = ClassDatabase.Return_Datatable_ConId(oSQL, oCONID, $"CreateControls - oControlID: {oControlID}") If Not IsNothing(oDT) Then For Each oRow As DataRow In oDT.Rows @@ -957,7 +957,7 @@ Public Class frmValidator Continue For End If - Dim oGrid = ClassControlCreator.CreateExistingGridControl(oControlRow, oFilteredDatatable, False, pnldesigner) + Dim oGrid = ClassControlCreator.CreateExistingGridControl(oControlRow, oFilteredDatatable, False, PanelValidatorControl) AddHandler oGrid.ProcessGridKey, Sub(ByVal _sender As Object, ByVal e As KeyEventArgs) If e.KeyCode = Keys.Tab Then @@ -998,7 +998,7 @@ Public Class frmValidator oMyControl.TabIndex = oTabIndexCounter End If ' oMyControl.Tag = CInt(oControlRow.Item("GUID")) - pnldesigner.Controls.Add(oMyControl) + PanelValidatorControl.Controls.Add(oMyControl) oTabIndexCounter += 1 Catch ex As Exception @@ -1014,15 +1014,8 @@ Public Class frmValidator Next LOGGER.Debug("Create_Controls finished!") - - - Catch ex As Exception - Dim st As New StackTrace(True) - st = New StackTrace(ex, True) - 'LOGGER.Error(ex) - MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in Create_Controls") - LOGGER.Warn($"Unexpected Error in Create_Controls [{oControlInfo}] Line: {st.GetFrame(0).GetFileLineNumber().ToString} - {ex.Message}") + LOGGER.Error(ex) If DEBUG = False Then MsgBox("Error CreateControls: " & ex.Message, MsgBoxStyle.Critical, "Attention:") allgFunk.Insert_LogEntry($"ERROR CreateControls >> {ex.Message}") End Try @@ -1033,12 +1026,11 @@ Public Class frmValidator Dim oControlID = DirectCast(oMyGridView.GridControl.Tag, ClassControlCreator.ControlMetadata).Guid SaveDevExpressGridControl_Layout(CURRENT_ProfilGUID, oControlID, oMyGridView) Catch ex As Exception - + LOGGER.Error(ex) End Try - End Sub Sub Clear_all_Input() - For Each inctrl As Control In Me.pnldesigner.Controls + For Each inctrl As Control In Me.PanelValidatorControl.Controls Dim Type As String = inctrl.GetType.ToString Select Case Type Case "System.Windows.Forms.TextBox" @@ -1084,6 +1076,8 @@ Public Class frmValidator If ofilteredData.Rows.Count = 1 Then Dynamic_SetControlData(oTextbox, ofilteredData.Rows(0)) End If + + ClassControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER) End Sub Private Function GetControlID(ByVal PROFILEID As Integer, Controlname As String) For Each oROW As DataRow In DTVWCONTROL_INDEX.Rows @@ -1117,7 +1111,7 @@ Public Class frmValidator Dim oConnectionId = oRow.Item("CONNECTION_ID") If Not IsDBNull(oSqlStatement) And Not IsDBNull(oConnectionId) Then - oSqlStatement = clsPatterns.ReplaceAllValues(oSqlStatement, pnldesigner, True) + oSqlStatement = clsPatterns.ReplaceAllValues(oSqlStatement, PanelValidatorControl, True) _dependingControl_in_action = True Depending_Control_Set_Result(oControlName, oSqlStatement, oConnectionId) @@ -1132,45 +1126,7 @@ Public Class frmValidator End If - If Not IsNothing(DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER) AndAlso DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER.Rows.Count > 0 Then - For Each oRow As DataRow In DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER.Rows - Try - Dim oControlId = oRow.Item("CONTROL_ID") - Dim oSqlStatement = oRow.Item("SQL_COMMAND") - Dim oConnectionId = oRow.Item("CONNECTION_ID") - Dim oColumnName = oRow.Item("SPALTENNAME") - Dim oAdvancedLookup = oRow.Item("ADVANCED_LOOKUP") - - If Not IsDBNull(oSqlStatement) And Not IsDBNull(oSqlStatement) Then - oSqlStatement = clsPatterns.ReplaceAllValues(oSqlStatement, pnldesigner, True) - - ClassControlCreator.GridTables_CacheDatatableForColumn(oControlId, oColumnName, oSqlStatement, oConnectionId, oAdvancedLookup) - - - ' === Block to force setting the editor for GridColumns - For Each oControl As Control In pnldesigner.Controls - Try - Dim oMeta = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata) - If oMeta.Guid = oControlId AndAlso TypeOf oControl Is GridControl Then - Dim oGrid As GridControl = DirectCast(oControl, GridControl) - DirectCast(oGrid.FocusedView, GridView).FocusInvalidRow() - Exit For - End If - Catch ex As Exception - LOGGER.Error(ex) - End Try - Next - ' === End - - End If - Catch ex As Exception - LOGGER.Error(ex) - LOGGER.Info("Unexpected Error in Display SQL result for grid column: " & oRow.Item("CONTROL_ID") & " - ERROR: " & ex.Message) - End Try - Next - - - End If + ClassControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER) Catch ex As Exception LOGGER.Error(ex) @@ -1203,8 +1159,8 @@ Public Class frmValidator If IsNothing(Override_SQLCommand) Then Override_SQLCommand = "" End If - oSQL = clsPatterns.ReplaceAllValues(oSQL, pnldesigner, True) - Override_SQLCommand = clsPatterns.ReplaceAllValues(Override_SQLCommand, pnldesigner, True) + oSQL = clsPatterns.ReplaceAllValues(oSQL, PanelValidatorControl, True) + Override_SQLCommand = clsPatterns.ReplaceAllValues(Override_SQLCommand, PanelValidatorControl, True) Dim oDT_ACTIONS As DataTable = Database_ECM.GetDatatable(oSQL) ', "onCustomButtonClick") If IsNothing(oDT_ACTIONS) Then MsgBox("Something went wrong in custom action - Please check Your log!", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE) @@ -1350,17 +1306,17 @@ Public Class frmValidator For Each row1 As DataRow In resultDT.Rows Dim result = row1.Item(0) If Not IsNothing(result) Then - pnldesigner.Controls(displayboxname).Text = result.ToString + PanelValidatorControl.Controls(displayboxname).Text = result.ToString Exit For Else - pnldesigner.Controls(displayboxname).Text = "RESULT = NOTHING" + PanelValidatorControl.Controls(displayboxname).Text = "RESULT = NOTHING" Exit For End If Next Else - pnldesigner.Controls(displayboxname).Text = "NO RESULT" + PanelValidatorControl.Controls(displayboxname).Text = "NO RESULT" End If @@ -1404,14 +1360,15 @@ Public Class frmValidator End Try End Sub Public Sub LookupListChanged(sender As Object, SelectedValues As List(Of String)) - If FormLoaded = False Then Exit Sub End If - LOGGER.Debug("LookupListChanged") - Dim oLookup As RepositoryItemLookupControl3 = sender + Try + Dim oLookup As RepositoryItemLookupControl3 = sender listChangedLookup.Add(oLookup.Name) + + ClassControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER) Catch ex As Exception LOGGER.Error(ex) End Try @@ -1428,6 +1385,8 @@ Public Class frmValidator CheckBox_DependingControls(oCheckbox) Checkbox_EnablingControls(oCheckbox) CheckBox_DependingColumn(oCheckbox) + ClassControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER) + Dim oCONTROL_ID = DirectCast(oCheckbox.Tag, ClassControlCreator.ControlMetadata).Guid Dim ofilteredData As DataTable = DT_CONTROLS.Clone() Dim oExpression = $"GUID = {oCONTROL_ID} and Len(SET_CONTROL_DATA) > 0" @@ -1478,7 +1437,7 @@ Public Class frmValidator End If If Not IsDBNull(oDataRow.Item("CONNECTION_ID")) And Not IsDBNull(oDataRow.Item("SET_CONTROL_DATA")) Then Dim oSqlCommand = IIf(IsDBNull(oDataRow.Item("SET_CONTROL_DATA")), "", oDataRow.Item("SET_CONTROL_DATA")) - oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, pnldesigner, True) + oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True) _SetControlValue_in_action = True Dim oDTDEPENDING_RESULT As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oDataRow.Item("CONNECTION_ID"), $"Dynamic_SetControlData-Control [{oControlID}-{oControlname2Set}]") For Each oRowControl2Set As DataRow In oDTDEPENDING_RESULT.Rows @@ -1517,7 +1476,7 @@ Public Class frmValidator Exit Sub End If - For Each oControl As Control In pnldesigner.Controls + For Each oControl As Control In PanelValidatorControl.Controls If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid = oControl2Set Then oFound = True LOGGER.Debug($"Got the Control22Set: {oControl2Set}..Setting the values..") @@ -1607,7 +1566,7 @@ Public Class frmValidator End If If Not IsDBNull(oFilteredDatatable.Rows(0).Item("CONNECTION_ID")) And Not IsDBNull(oFilteredDatatable.Rows(0).Item("SET_CONTROL_DATA")) Then Dim oSqlCommand = IIf(IsDBNull(oFilteredDatatable.Rows(0).Item("SET_CONTROL_DATA")), "", oFilteredDatatable.Rows(0).Item("SET_CONTROL_DATA")) - oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, pnldesigner, True) + oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True) _SetControlValue_in_action = True Dim oDTDEPENDING_RESULT As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oFilteredDatatable.Rows(0).Item("CONNECTION_ID"), $"SetControlValues - CTRLID {oControlID}") For Each oRowControl2Set As DataRow In oDTDEPENDING_RESULT.Rows @@ -1646,7 +1605,7 @@ Public Class frmValidator Exit Sub End If 'Dim oDependingLookup As LookupControl3 = pnldesigner.Controls.Find(oDEPENDING_CtrlName, False).FirstOrDefault() - For Each oControl As Control In pnldesigner.Controls + For Each oControl As Control In PanelValidatorControl.Controls If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid = oControl2Set Then oFound = True LOGGER.Debug($"Got the Control22Set: {oControl2Set}..Setting the values..") @@ -1732,13 +1691,13 @@ Public Class frmValidator End If If Not IsDBNull(oRowDependingControl.Item("CONNECTION_ID")) And Not IsDBNull(oRowDependingControl.Item("SQL_UEBERPRUEFUNG")) Then Dim oSqlCommand = IIf(IsDBNull(oRowDependingControl.Item("SQL_UEBERPRUEFUNG")), "", oRowDependingControl.Item("SQL_UEBERPRUEFUNG")) - oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, pnldesigner, True) + oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True) _dependingControl_in_action = True Dim oDTDEPENDING_RESULT As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oRowDependingControl.Item("CONNECTION_ID"), $"LookupControl_DependingControls - oControlID: {oControlID}") Try Dim oFound As Boolean = False - For Each oControl As Control In pnldesigner.Controls + For Each oControl As Control In PanelValidatorControl.Controls If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid = oDEPENDING_GUID Then oFound = True LOGGER.Debug($"Got the depending control ID:{oDEPENDING_GUID}..Setting the values..") @@ -1853,13 +1812,13 @@ Public Class frmValidator End If If Not IsDBNull(oRowDependingControl.Item("CONNECTION_ID")) And Not IsDBNull(oRowDependingControl.Item("SQL_UEBERPRUEFUNG")) Then Dim oSqlCommand = IIf(IsDBNull(oRowDependingControl.Item("SQL_UEBERPRUEFUNG")), "", oRowDependingControl.Item("SQL_UEBERPRUEFUNG")) - oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, pnldesigner, True) + oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True) _dependingControl_in_action = True Dim oDTDEPENDING_RESULT As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oRowDependingControl.Item("CONNECTION_ID"), $"CheckBox_DependingControls - oControlID: {oControlID}") Try Dim oFound As Boolean = False 'Dim oDependingLookup As LookupControl3 = pnldesigner.Controls.Find(oDEPENDING_CtrlName, False).FirstOrDefault() - For Each oControl As Control In pnldesigner.Controls + For Each oControl As Control In PanelValidatorControl.Controls If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid = oDEPENDING_GUID Then oFound = True LOGGER.Debug($"Got the depending control ID:{oDEPENDING_GUID}..Setting the values..") @@ -1969,7 +1928,7 @@ Public Class frmValidator If _dependingColumn_in_action = True Then Exit Sub End If - oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, pnldesigner, True) + oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True) _dependingColumn_in_action = True Try @@ -1979,7 +1938,7 @@ Public Class frmValidator Dim oDTDEPENDING_RESULT As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oCONNID, $"LookupControl_DependingColumn - oDEPENDING_CONTROL_ID: {oDEPENDING_CONTROL_ID}") If Not IsNothing(oDTDEPENDING_RESULT) Then LOGGER.Debug($"Trying to fill the DropDown (DC) for ControlID [{oDEPENDING_CONTROL_ID}]..RowCount: [{oDTDEPENDING_RESULT.Rows.Count}] ") - For Each oControl As Control In pnldesigner.Controls + For Each oControl As Control In PanelValidatorControl.Controls Dim oControlId = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid If oControlId = oDEPENDING_CONTROL_ID Then @@ -2013,14 +1972,14 @@ Public Class frmValidator Exit Sub End If - oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, pnldesigner, True) + oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True) _dependingColumn_in_action = True Try Dim oDTDEPENDING_RESULT As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oCONNID, $"CheckBox_DependingColumn - oDEPENDING_CONTROL_ID: {oDEPENDING_CONTROL_ID}") If Not IsNothing(oDTDEPENDING_RESULT) Then LOGGER.Debug($"Trying to fill the DropDown (DC) for ControlID [{oDEPENDING_CONTROL_ID}]..RowCount: [{oDTDEPENDING_RESULT.Rows.Count}] ") - For Each oControl As Control In pnldesigner.Controls + For Each oControl As Control In PanelValidatorControl.Controls Dim oControlId = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid = oDEPENDING_CONTROL_ID Then ClassControlCreator.GridTables_CacheDatatableForColumn(oControlId, oDEPENDING_COLUMN, oSqlCommand, oCONNID, oAdvancedLookup) @@ -2061,7 +2020,7 @@ Public Class frmValidator _Step = 2 Dim sql_Statement = IIf(IsDBNull(ROW.Item("SQL_UEBERPRUEFUNG")), "", ROW.Item("SQL_UEBERPRUEFUNG")) - sql_Statement = clsPatterns.ReplaceAllValues(sql_Statement, pnldesigner, True) + sql_Statement = clsPatterns.ReplaceAllValues(sql_Statement, PanelValidatorControl, True) _Step = 3 _dependingControl_in_action = True @@ -2077,6 +2036,9 @@ Public Class frmValidator End Try Next End If + + ClassControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER) + Controls2beEnabled(oCombobox.Name) Dim ofilteredData As DataTable = DT_CONTROLS.Clone() Dim oExpression = $"GUID = {CONTROL_ID} and Len(SET_CONTROL_DATA) > 0" @@ -2112,13 +2074,13 @@ Public Class frmValidator End If If Not IsDBNull(oRowEnablingControl.Item("CONNECTION_ID")) And Not IsDBNull(oRowEnablingControl.Item("SQL_ENABLE")) Then Dim oSqlCommand = IIf(IsDBNull(oRowEnablingControl.Item("SQL_ENABLE")), "", oRowEnablingControl.Item("SQL_ENABLE")) - oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, pnldesigner, True) + oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True) _dependingControl_in_action = True Dim oENABLERESULT As Boolean = ClassDatabase.Execute_Scalar_ConID(oSqlCommand, oRowEnablingControl.Item("CONNECTION_ID"), $"Controls2beEnabled - oENABLE_CTRLID: {oENABLE_GUID}") Try Dim oFound As Boolean = False - For Each oControl As Control In pnldesigner.Controls + For Each oControl As Control In PanelValidatorControl.Controls If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid = oENABLE_GUID Then oFound = True LOGGER.Debug($"Got the depending control ID:{oENABLE_GUID}..Setting enabled/Disabled...") @@ -2158,7 +2120,7 @@ Public Class frmValidator For Each oRowEnablingControl As DataRow In oFilteredDatatable.Rows Dim oENABLE_GUID = oRowEnablingControl.Item("GUID") Dim oENABLE_CtrlName = oRowEnablingControl.Item("NAME") - For Each oControl As Control In pnldesigner.Controls + For Each oControl As Control In PanelValidatorControl.Controls If oENABLE_GUID = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid Then oControl.Enabled = False Exit For @@ -2180,13 +2142,13 @@ Public Class frmValidator For Each oRowEnablingControl As DataRow In oFilteredDatatable.Rows Dim oENABLE_GUID = oRowEnablingControl.Item("GUID") Dim oENABLE_CtrlName = oRowEnablingControl.Item("NAME") - For Each oControl As Control In pnldesigner.Controls + For Each oControl As Control In PanelValidatorControl.Controls If oENABLE_GUID = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid Then LOGGER.Debug($"Found the Control on panel which needs to be checked [{oENABLE_GUID}]...") Dim oSqlCommand = IIf(IsDBNull(oRowEnablingControl.Item("SQL_ENABLE_ON_LOAD")), "", oRowEnablingControl.Item("SQL_ENABLE_ON_LOAD")) Dim oConID = oRowEnablingControl.Item("SQL_ENABLE_ON_LOAD_CONID") If Not IsDBNull(oConID) Then - oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, pnldesigner, True) + oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True) Dim oENABLERESULT As Boolean = ClassDatabase.Execute_Scalar_ConID(oSqlCommand, oRowEnablingControl.Item("SQL_ENABLE_ON_LOAD_CONID"), $"Controls2B_EnDisabled_on_Load - oENABLE_CTRLID: {oENABLE_GUID}") Try LOGGER.Debug($"oENABLERESULT [{oENABLERESULT}]...") @@ -2224,7 +2186,7 @@ Public Class frmValidator If displayboxname.StartsWith(ClassControlCreator.PREFIX_COMBOBOX) Then LOGGER.Debug("Filling Combobox with Results") - Dim oCombobox As ComboBox = pnldesigner.Controls(displayboxname) + Dim oCombobox As ComboBox = PanelValidatorControl.Controls(displayboxname) If IsNothing(oCombobox) Then Exit Sub @@ -2240,7 +2202,7 @@ Public Class frmValidator ElseIf displayboxname.StartsWith(ClassControlCreator.PREFIX_LOOKUP) Then LOGGER.Debug("Filling Lookup Control with Results") - Dim oLookup As LookupControl3 = pnldesigner.Controls(displayboxname) + Dim oLookup As LookupControl3 = PanelValidatorControl.Controls(displayboxname) If IsNothing(oLookup) Then Exit Sub @@ -2257,9 +2219,9 @@ Public Class frmValidator End If Else If oResultTable.Rows.Count = 1 Then - pnldesigner.Controls(displayboxname).Text = oResultTable.Rows(0).Item(0).ToString + PanelValidatorControl.Controls(displayboxname).Text = oResultTable.Rows(0).Item(0).ToString Else - pnldesigner.Controls(displayboxname).Text = "RESULT = resultDT.Rows.Count <> 1" + PanelValidatorControl.Controls(displayboxname).Text = "RESULT = resultDT.Rows.Count <> 1" LOGGER.Info(">> Datatable-SQL: " & sqlCommand) End If End If @@ -2553,7 +2515,7 @@ Public Class frmValidator FillIndexValues(first) - For Each oControl As Control In pnldesigner.Controls + For Each oControl As Control In PanelValidatorControl.Controls LoadSQLData(oControl, DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid) Next @@ -2639,7 +2601,7 @@ Public Class frmValidator SplitContainer1.Panel2Collapsed = False End Sub Sub activate_controls(status As Boolean) - Me.pnldesigner.Enabled = status + Me.PanelValidatorControl.Enabled = status Me.btnSave.Enabled = status End Sub Private Function Windream_get_Doc_info() @@ -2949,7 +2911,7 @@ Public Class frmValidator Try If DTVWCONTROL_INDEX.Rows.Count > 0 Then Dim oCount As Integer = 0 - For Each oControl As Control In Me.pnldesigner.Controls + For Each oControl As Control In Me.PanelValidatorControl.Controls If SingleAttribute <> "" Then oIDBOverride = True If SingleAttribute <> oControl.Name Then @@ -3537,13 +3499,13 @@ Public Class frmValidator Dim oSqlCommand = oRow.Item("SQL_COMMAND") Dim oCONNID = oRow.Item("CONNECTION_ID") Dim oAdvancedLookup = oRow.Item("ADVANCED_LOOKUP") - oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, pnldesigner, True) + oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True) Try Dim oDTRESULT_FOR_COLUMN As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oCONNID, $"oDEPENDING_CTRL_ID: {oDEPENDING_CTRL_ID}") If Not IsNothing(oDTRESULT_FOR_COLUMN) Then LOGGER.Debug($"Trying to create a DropDown(FIV) for CONTROL-ID [{oDEPENDING_CTRL_ID}] - RowCount: [{oDTRESULT_FOR_COLUMN.Rows.Count}] ") - For Each oControl As Control In pnldesigner.Controls + For Each oControl As Control In PanelValidatorControl.Controls Dim oControlId = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid If oControlId = oDEPENDING_CTRL_ID Then ClassControlCreator.GridTables_CacheDatatableForColumn(oControlId, oDEPENDING_COLUMN, oSqlCommand, oCONNID, oAdvancedLookup) @@ -3726,7 +3688,7 @@ Public Class frmValidator Private Function ForceGridValidation() Dim oValidation As Boolean = True - Dim oGrids = (From oControl In pnldesigner.Controls + Dim oGrids = (From oControl In PanelValidatorControl.Controls Where TypeOf oControl Is GridControl Select oControl).ToList() @@ -3753,7 +3715,7 @@ Public Class frmValidator Private Function btnFinish_continue() Try Dim oSQL = PROFIL_FINISH_SQL - oSQL = clsPatterns.ReplaceAllValues(oSQL, pnldesigner, True) + oSQL = clsPatterns.ReplaceAllValues(oSQL, PanelValidatorControl, True) Dim oDT_ACTIONS As DataTable = Database_ECM.GetDatatable(oSQL) If IsNothing(oDT_ACTIONS) Then @@ -3859,7 +3821,7 @@ Public Class frmValidator Dim oGUID = oFinalIndexRow.Item("GUID") Dim oSQLCommand = oFinalIndexRow.Item("SQL_COMMAND") Dim oConnectionID = oFinalIndexRow.Item("CONNECTION_ID") - oSQLCommand = clsPatterns.ReplaceAllValues(oSQLCommand, pnldesigner, True) + oSQLCommand = clsPatterns.ReplaceAllValues(oSQLCommand, PanelValidatorControl, True) If IsNothing(oSQLCommand) Then errormessage = "Error while replacing Values in final indexing - Check the log" My.Settings.Save() @@ -4020,7 +3982,7 @@ Public Class frmValidator CTRL_ID = CTRL_ID.Replace("CTRLID", "") Dim value_from_control If IsNumeric(CTRL_ID) Then - For Each oControl As Control In Me.pnldesigner.Controls + For Each oControl As Control In Me.PanelValidatorControl.Controls Try If IsNothing(DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid) Then Continue For @@ -4284,7 +4246,7 @@ Public Class frmValidator Try Dim oMissing As Boolean = False 'Jedes Control auf panel durchlaufen - For Each oControl As Control In Me.pnldesigner.Controls + For Each oControl As Control In Me.PanelValidatorControl.Controls 'Der input der Box,Cmb muss jedes mal geleert werden Dim oMyInput As String = "" 'Jedes Control in Konfig Tab durchlaufn @@ -5699,7 +5661,7 @@ Public Class frmValidator End Sub Private Sub BarButtonItem6_ItemClick_2(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem6.ItemClick - For Each oControl In pnldesigner.Controls + For Each oControl In PanelValidatorControl.Controls If TypeOf oControl Is GridControl Then Dim oGrid = DirectCast(oControl, GridControl) Dim oView = DirectCast(oGrid.FocusedView, GridView) diff --git a/app/DD_PM_WINDREAM/frmValidatorSearch.vb b/app/DD_PM_WINDREAM/frmValidatorSearch.vb index 2e0c106..b6dcc87 100644 --- a/app/DD_PM_WINDREAM/frmValidatorSearch.vb +++ b/app/DD_PM_WINDREAM/frmValidatorSearch.vb @@ -414,7 +414,7 @@ Public Class frmValidatorSearch If IsNothing(_DTSQLSearches) Then Exit Sub Dim oConID = _DTSQLSearches.Rows(XtraTabControlSQL.SelectedTabPageIndex).Item("CONN_ID") Dim oCommand = _DTSQLSearches.Rows(XtraTabControlSQL.SelectedTabPageIndex).Item("SQL_COMMAND") - oCommand = clsPatterns.ReplaceAllValues(oCommand, _frmValidator.pnldesigner, True) + oCommand = clsPatterns.ReplaceAllValues(oCommand, _frmValidator.PanelValidatorControl, True) Dim oTabIndex = _DTSQLSearches.Rows(XtraTabControlSQL.SelectedTabPageIndex).Item("TAB_INDEX") Dim oTabCaption = _DTSQLSearches.Rows(XtraTabControlSQL.SelectedTabPageIndex).Item("TAB_TITLE") RefreshTabSQL(oConID, oCommand, oTabIndex, oTabCaption) @@ -423,7 +423,7 @@ Public Class frmValidatorSearch If IsNothing(_DTDocSearches) Then Exit Sub Dim oConID = _DTDocSearches.Rows(XtraTabControlDocs.SelectedTabPageIndex).Item("CONN_ID") Dim oCommand = _DTDocSearches.Rows(XtraTabControlDocs.SelectedTabPageIndex).Item("SQL_COMMAND") - oCommand = clsPatterns.ReplaceAllValues(oCommand, _frmValidator.pnldesigner, True) + oCommand = clsPatterns.ReplaceAllValues(oCommand, _frmValidator.PanelValidatorControl, True) Dim oTabIndex = _DTDocSearches.Rows(XtraTabControlDocs.SelectedTabPageIndex).Item("TAB_INDEX") Dim oTabCaption = _DTDocSearches.Rows(XtraTabControlDocs.SelectedTabPageIndex).Item("TAB_TITLE") RefreshTabDoc(oConID, oCommand, oTabIndex, oTabCaption) @@ -614,7 +614,7 @@ Public Class frmValidatorSearch _DTSQLSearches = BASEDATA_DT_PROFILE_SEARCHES_SQL Dim oConID = BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows(0).Item("CONN_ID") Dim oCommand = BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows(0).Item("SQL_COMMAND") - oCommand = clsPatterns.ReplaceAllValues(oCommand, _frmValidator.pnldesigner, True) + oCommand = clsPatterns.ReplaceAllValues(oCommand, _frmValidator.PanelValidatorControl, True) XtraTabControlSQL.SelectedTabPageIndex = 0 Refresh_Load_GridSQL(oConID, oCommand, 0, BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows(0).Item("TAB_TITLE")) End If @@ -622,7 +622,7 @@ Public Class frmValidatorSearch _DTDocSearches = BASEDATA_DT_PROFILE_SEARCHES_DOC Dim oConID = BASEDATA_DT_PROFILE_SEARCHES_DOC.Rows(0).Item("CONN_ID") Dim oCommand = BASEDATA_DT_PROFILE_SEARCHES_DOC.Rows(0).Item("SQL_COMMAND") - oCommand = clsPatterns.ReplaceAllValues(oCommand, _frmValidator.pnldesigner, True) + oCommand = clsPatterns.ReplaceAllValues(oCommand, _frmValidator.PanelValidatorControl, True) XtraTabControlDocs.SelectedTabPageIndex = 0 RefreshTabDoc(oConID, oCommand, 0, BASEDATA_DT_PROFILE_SEARCHES_DOC.Rows(0).Item("TAB_TITLE")) End If @@ -639,7 +639,7 @@ Public Class frmValidatorSearch Dim oTabIndex = XtraTabControlDocs.SelectedTabPageIndex Dim oConID = BASEDATA_DT_PROFILE_SEARCHES_DOC.Rows(oTabIndex).Item("CONN_ID") Dim oCommand = BASEDATA_DT_PROFILE_SEARCHES_DOC.Rows(oTabIndex).Item("SQL_COMMAND") - oCommand = clsPatterns.ReplaceAllValues(oCommand, _frmValidator.pnldesigner, True) + oCommand = clsPatterns.ReplaceAllValues(oCommand, _frmValidator.PanelValidatorControl, True) RefreshTabDoc(oConID, oCommand, oTabIndex, BASEDATA_DT_PROFILE_SEARCHES_DOC.Rows(oTabIndex).Item("TAB_TITLE")) End Sub @@ -671,7 +671,7 @@ Public Class frmValidatorSearch Dim oTabIndex = XtraTabControlSQL.SelectedTabPageIndex Dim oConID = BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows(oTabIndex).Item("CONN_ID") Dim oCommand = BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows(oTabIndex).Item("SQL_COMMAND") - oCommand = clsPatterns.ReplaceAllValues(oCommand, _frmValidator.pnldesigner, True) + oCommand = clsPatterns.ReplaceAllValues(oCommand, _frmValidator.PanelValidatorControl, True) RefreshTabSQL(oConID, oCommand, oTabIndex, BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows(oTabIndex).Item("TAB_TITLE")) End Sub diff --git a/app/SetupVS19/Product.wxs b/app/SetupVS19/Product.wxs index 1eee030..f9b689d 100644 --- a/app/SetupVS19/Product.wxs +++ b/app/SetupVS19/Product.wxs @@ -118,6 +118,7 @@ + From c6eb615f6642a851639f08c2fff1e08ef9113214 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Mon, 4 Oct 2021 16:59:39 +0200 Subject: [PATCH 4/4] Version 2.2.26 --- app/DD_PM_WINDREAM/My Project/AssemblyInfo.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/DD_PM_WINDREAM/My Project/AssemblyInfo.vb b/app/DD_PM_WINDREAM/My Project/AssemblyInfo.vb index 68c636a..c5d2596 100644 --- a/app/DD_PM_WINDREAM/My Project/AssemblyInfo.vb +++ b/app/DD_PM_WINDREAM/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - +