2.7.9 an WISAG ausgegeben
This commit is contained in:
@@ -22,7 +22,6 @@ Public Class ClassConfig
|
||||
|
||||
' Digital Data Settings
|
||||
Public Property UserManagerPath As String = ""
|
||||
Public Property UserInheritance_ConfirmationByColumn As New List(Of UserInheritanceConfirmation)
|
||||
|
||||
' File Settings
|
||||
Public Property VersionDelimiter As String = "~"
|
||||
@@ -52,9 +51,4 @@ Public Class ClassConfig
|
||||
Public Property ShowFile As Boolean = True
|
||||
Public Property ShowSearchesDirect As Boolean = True
|
||||
End Class
|
||||
|
||||
Public Class UserInheritanceConfirmation
|
||||
Public Property ColumnName As String = ""
|
||||
Public Property Count As Integer
|
||||
End Class
|
||||
End Class
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
Imports System.ComponentModel
|
||||
Imports System.Text.RegularExpressions
|
||||
Imports DD_LIB_Standards
|
||||
Imports DevExpress.Utils
|
||||
Imports DevExpress.XtraEditors
|
||||
Imports DevExpress.XtraEditors.Controls
|
||||
@@ -11,13 +10,10 @@ Imports DevExpress.XtraGrid.Columns
|
||||
Imports DevExpress.XtraGrid.Views.Base
|
||||
Imports DevExpress.XtraGrid.Views.Grid
|
||||
Imports DigitalData.Controls.LookupGrid
|
||||
Imports DigitalData.Modules.Language.Utils
|
||||
Imports DigitalData.GUIs.Common
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports DigitalData.Modules.Language
|
||||
Imports DigitalData.Modules.EDMI.API.DatabaseWithFallback
|
||||
Imports DigitalData.Modules.EDMI.API.Constants
|
||||
Imports DigitalData.Modules.Language.DataTableEx
|
||||
Imports DigitalData.Modules.Base
|
||||
|
||||
Public Class ClassControlCreator
|
||||
@@ -362,7 +358,7 @@ Public Class ClassControlCreator
|
||||
Try
|
||||
oControl.Text = row.Item("CTRL_CAPTION_LANG")
|
||||
Catch ex As Exception
|
||||
Logger.Warn("Label [{0}] does not have a translation!", oControl.Name)
|
||||
Logger.Warn("⚠️ Label [{0}] does not have a translation!", oControl.Name)
|
||||
oControl.Text = row.Item("CTRL_TEXT")
|
||||
End Try
|
||||
Dim oAlignment = row.ItemEx("TEXT_ALIGNMENT", "Near")
|
||||
|
||||
@@ -156,7 +156,7 @@ Public Class ClassFinalizeDoc
|
||||
End If
|
||||
Return indexierung_erfolgreich
|
||||
Catch ex As Exception
|
||||
LOGGER.Warn("Unvorhergesehener Fehler bei Indexiere_File: " & ex.Message.ToString)
|
||||
LOGGER.Warn("⚠️ Unvorhergesehener Fehler bei Indexiere_File: " & ex.Message.ToString)
|
||||
Return False
|
||||
End Try
|
||||
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
Imports DLLLicenseManager
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports System.Windows.Forms.VisualStyles.VisualStyleElement
|
||||
Imports DigitalData.Modules.Config
|
||||
Imports DigitalData.Modules.EDMI.API
|
||||
Imports DigitalData.Modules.EDMI.API.DatabaseWithFallback
|
||||
Imports DigitalData.Modules.EDMI.API.Constants
|
||||
Imports DigitalData.Modules.Database
|
||||
Imports System.Windows.Forms.VisualStyles.VisualStyleElement
|
||||
Imports DigitalData.Modules.EDMI.API
|
||||
Imports DigitalData.Modules.EDMI.API.Constants
|
||||
Imports DigitalData.Modules.EDMI.API.DatabaseWithFallback
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports DLLLicenseManager
|
||||
Imports DocumentFormat.OpenXml.Spreadsheet
|
||||
|
||||
Public Class ClassInit
|
||||
Public _lizenzManager As ClassLicenseManager
|
||||
@@ -20,21 +21,16 @@ Public Class ClassInit
|
||||
My.Application.Info.CompanyName,
|
||||
My.Application.Info.ProductName)
|
||||
|
||||
|
||||
LOGGER = LOGCONFIG.GetLogger("taskFLOW")
|
||||
|
||||
LOGGER.Info("## taskFLOW started - {0}", Now)
|
||||
Try
|
||||
Dim directory As New IO.DirectoryInfo(Application.LocalUserAppDataPath & "\Log")
|
||||
|
||||
For Each file As IO.FileInfo In directory.GetFiles
|
||||
If (Now - file.CreationTime).Days > 29 Then
|
||||
file.Delete()
|
||||
Else
|
||||
Exit For
|
||||
End If
|
||||
|
||||
|
||||
Next
|
||||
Catch ex As Exception
|
||||
|
||||
@@ -59,6 +55,15 @@ Public Class ClassInit
|
||||
|
||||
CONFIG = New ConfigManager(Of ClassConfig)(LOGCONFIG, oUserAppDataPath, oCommonAppDataPath, oStartupPath)
|
||||
LOGGER.Info("ConfigManager loaded")
|
||||
LOGGER.Info($"oUserAppDataPath will be: {oUserAppDataPath}")
|
||||
|
||||
If oStartupPath <> oCommonAppDataPath Then
|
||||
LOGGER.Info($"oCommonAppDataPath will be: {oCommonAppDataPath}")
|
||||
LOGGER.Info($"oStartupPath will be: {oStartupPath}")
|
||||
Else
|
||||
LOGGER.Info($"oStartupPath is the same as oCommonAppDataPath: {oCommonAppDataPath}")
|
||||
End If
|
||||
|
||||
Try
|
||||
If CONFIG.Config.ConnectionStringTest <> String.Empty And CONFIG.Config.TestMode = True Then
|
||||
LOGGER.Debug("Test Connection String loaded")
|
||||
@@ -85,11 +90,11 @@ Public Class ClassInit
|
||||
|
||||
LOGGER.Info($"EDMIAppServer [{CONFIG.Config.EDMIAppServer}] is active!")
|
||||
Else
|
||||
LOGGER.Warn($"#### !!! Could not Connect to APPServer [{CONFIG.Config.EDMIAppServer}]!!! ###")
|
||||
LOGGER.Warn($"#### ⚠️ !!! Could not Connect to APPServer [{CONFIG.Config.EDMIAppServer}]!!! ###")
|
||||
End If
|
||||
End If
|
||||
Catch ex As Exception
|
||||
LOGGER.Warn($"Could not initialize the AppServer: {ex.Message}")
|
||||
LOGGER.Warn($"⚠️ Could not initialize the AppServer: {ex.Message}")
|
||||
End Try
|
||||
|
||||
Else
|
||||
@@ -244,12 +249,12 @@ Public Class ClassInit
|
||||
Try
|
||||
oLICDATE = CDate(split(1))
|
||||
Catch ex As Exception
|
||||
LOGGER.Warn($"Error Converting Value {split(1)} to DATE")
|
||||
LOGGER.Warn($"⚠️ Error Converting Value {split(1)} to DATE")
|
||||
Try
|
||||
Dim expenddt As Date = Date.ParseExact(split(1), "dd.MM.yyyy", System.Globalization.DateTimeFormatInfo.InvariantInfo)
|
||||
oLICDATE = expenddt
|
||||
Catch ex1 As Exception
|
||||
LOGGER.Warn($"Second Error Converting DATE with ParseExact - Setting Date = Today")
|
||||
LOGGER.Warn($"⚠️Second Error Converting DATE with ParseExact - Setting Date = Today")
|
||||
oLICDATE = Now.Date
|
||||
End Try
|
||||
|
||||
@@ -356,6 +361,7 @@ Public Class ClassInit
|
||||
USER_EMAIL = IIf(IsDBNull(DT_CHECKUSER_MODULE.Rows(0).Item("USER_EMAIL")), "", DT_CHECKUSER_MODULE.Rows(0).Item("USER_EMAIL"))
|
||||
USER_LANGUAGE = DT_CHECKUSER_MODULE.Rows(0).Item("USER_LANGUAGE")
|
||||
|
||||
USER_MODULE_ID = DT_CHECKUSER_MODULE.Rows(0).Item("MODULE_ID")
|
||||
|
||||
|
||||
USER_IN_MODULE = DT_CHECKUSER_MODULE.Rows(0).Item("MODULE_ACCESS")
|
||||
@@ -385,7 +391,7 @@ Public Class ClassInit
|
||||
USER_RIGHT_FILE_DELETE = IIf(IsDBNull(DT_CHECKUSER_MODULE.Rows(0).Item("USER_RIGHT_FILE_DEL")), False, DT_CHECKUSER_MODULE.Rows(0).Item("USER_RIGHT_FILE_DEL"))
|
||||
|
||||
Catch ex As Exception
|
||||
LOGGER.Warn("Error in USER_RIGHT_FILE_DELETE: " & ex.Message)
|
||||
LOGGER.Warn("⚠️ Error in USER_RIGHT_FILE_DELETE: " & ex.Message)
|
||||
USER_RIGHT_FILE_DELETE = False
|
||||
End Try
|
||||
USER_DATE_FORMAT = DT_CHECKUSER_MODULE.Rows(0).Item("USER_DATE_FORMAT")
|
||||
@@ -525,7 +531,10 @@ Public Class ClassInit
|
||||
oSql = "SELECT * FROM TBDD_COLUMNS_FORMAT WHERE MODULE = 'taskFLOW' AND GRIDVIEW = 'GridViewWorkflows'"
|
||||
BASEDATA_TBDD_COLUMNS_FORMAT = DatabaseFallback.GetDatatable("TBDD_COLUMNS_FORMAT", New GetDatatableOptions(oSql, DatabaseType.ECM))
|
||||
|
||||
|
||||
|
||||
oStopWatch.Done()
|
||||
|
||||
Catch ex As Exception
|
||||
LOGGER.Error(ex)
|
||||
LOGGER.Info($"Unexpected Error in InitBasics - last Step [{oStep}]: {ex.Message}", True)
|
||||
@@ -546,6 +555,48 @@ Public Class ClassInit
|
||||
LOGGER.Warn($"no profiles for user: '{USER_USERNAME}' configured - Check SQL [{oSql}]!", False)
|
||||
End If
|
||||
|
||||
oSql = "SELECT KEY_NAME, VALUE_TEXT1
|
||||
FROM TBDD_USER_KEY_VALUE_PAIR
|
||||
WHERE FK_USER_ID = " & USER_ID & " And [FK_MODULE_ID] = '" & USER_MODULE_ID & "'"
|
||||
|
||||
Dim oDT_USER_KEY_VALUE_PAIR As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSql, DatabaseType.ECM))
|
||||
If UserInheritance_ConfirmationByColumn Is Nothing Then
|
||||
UserInheritance_ConfirmationByColumn = New List(Of UserInheritanceConfirmation)()
|
||||
End If
|
||||
If Not IsNothing(oDT_USER_KEY_VALUE_PAIR) Then
|
||||
For Each row As DataRow In oDT_USER_KEY_VALUE_PAIR.Rows
|
||||
Dim keyName As String = row("KEY_NAME").ToString()
|
||||
|
||||
' Prüfe ob es sich um einen Inheritance-Key handelt
|
||||
If keyName.StartsWith("INHERITANCE_CONFIRM_") Then
|
||||
Dim columnName As String = keyName.Replace("INHERITANCE_CONFIRM_", "")
|
||||
Dim countValue As Integer = Integer.Parse(row("VALUE_TEXT1").ToString())
|
||||
|
||||
Dim existingEntry = UserInheritance_ConfirmationByColumn.FirstOrDefault(
|
||||
Function(e) String.Equals(e.ColumnName, columnName, StringComparison.OrdinalIgnoreCase))
|
||||
|
||||
If existingEntry IsNot Nothing Then
|
||||
existingEntry.Count = countValue
|
||||
Else
|
||||
UserInheritance_ConfirmationByColumn.Add(
|
||||
New UserInheritanceConfirmation With {
|
||||
.ColumnName = columnName,
|
||||
.Count = countValue
|
||||
})
|
||||
End If
|
||||
|
||||
LOGGER.Debug("Loaded inheritance confirmation for column [{0}] with count [{1}]", columnName, countValue)
|
||||
End If
|
||||
Next
|
||||
Else
|
||||
LOGGER.Warn("⚠️ oDT_USER_KEY_VALUE_PAIR is nothing")
|
||||
End If
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
oStopWatch.Done()
|
||||
Catch ex As Exception
|
||||
LOGGER.Error(ex)
|
||||
|
||||
@@ -232,9 +232,12 @@ Public Class ClassParamRefresh
|
||||
Dim oParam = oMode.Replace("TF.InheritanceCalcReset=", "")
|
||||
Try
|
||||
If CBool(oParam) = True Then
|
||||
LOGGER.Info("InheritanceMsgAmount wird auf 0 zurückgesetzt")
|
||||
LOGGER.Info("Inheritance_Counts werden auf 0 zurückgesetzt bzw gelöscht")
|
||||
Dim oDELETESQL = "DELETE FROM TBDD_USER_KEY_VALUE_PAIR
|
||||
WHERE FK_USER_ID = " & USER_ID & " And [FK_MODULE_ID] = '" & USER_MODULE_ID & "' AND KEY_NAME LIKE 'INHERITANCE_CONFIRM_%'"
|
||||
DatabaseECM.ExecuteNonQuery(oDELETESQL)
|
||||
|
||||
CONFIG.Config.UserInheritance_ConfirmationByColumn = Nothing
|
||||
UserInheritance_ConfirmationByColumn = Nothing
|
||||
CONFIG.Save()
|
||||
End If
|
||||
Catch ex As Exception
|
||||
|
||||
@@ -211,7 +211,7 @@ LOGGER.Error(ex)
|
||||
Public Function GetTypeOfIndex(ByVal indexname As String) As Integer
|
||||
Try
|
||||
If IsNothing(Me.oSession) Then
|
||||
LOGGER.Warn("GetTypeOfIndex: WMSession is nothing")
|
||||
LOGGER.Warn("⚠️ GetTypeOfIndex: WMSession is nothing")
|
||||
Return Nothing
|
||||
End If
|
||||
Dim oAttribute = Me.oSession.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, indexname)
|
||||
@@ -272,7 +272,7 @@ LOGGER.Error(ex)
|
||||
Public Function GetIndicesByObjecttype(ByVal Objecttype_name As String) As String()
|
||||
Try
|
||||
If IsNothing(Me.oSession) Then
|
||||
LOGGER.Warn("GetIndicesByObjecttype: WMSession is nothing")
|
||||
LOGGER.Warn("⚠️ GetIndicesByObjecttype: WMSession is nothing")
|
||||
Return Nothing
|
||||
End If
|
||||
Dim oObjectType As WMObject
|
||||
@@ -325,7 +325,7 @@ LOGGER.Error(ex)
|
||||
Public Function GetObjecttypeByName(ByVal objekttypName As String) As WMObject
|
||||
Try
|
||||
If IsNothing(Me.oSession) Then
|
||||
LOGGER.Warn("GetObjecttypeByName: WMSession is nothing")
|
||||
LOGGER.Warn("⚠️ GetObjecttypeByName: WMSession is nothing")
|
||||
Return Nothing
|
||||
End If
|
||||
' alle Objekttypen auslesen
|
||||
|
||||
@@ -70,7 +70,7 @@ Namespace ControlCreator
|
||||
Dim oConnectionId As Integer = oRow.ItemEx("CONNECTION_ID", 0)
|
||||
Dim oSqlCommand As String = oRow.ItemEx("SQL_COMMAND", "")
|
||||
|
||||
If oConnectionId > 0 And oSqlCommand <> "" Then
|
||||
If oSqlCommand <> "" Then
|
||||
Try
|
||||
Dim oComboboxDataTable As DataTable = Nothing
|
||||
Dim oColumnName As String = oRow.Item("SPALTENNAME")
|
||||
@@ -93,7 +93,7 @@ Namespace ControlCreator
|
||||
_GridTables.Item(pControlId).Add(oColumnName, oRepositoryItem)
|
||||
End If
|
||||
Catch ex As Exception
|
||||
_Logger.Warn("Could not load data for column {0} in control {1}", oRow.Item("SPALTENNAME"), pControlName)
|
||||
_Logger.Warn("⚠️ Could not load data for column {0} in control {1}", oRow.Item("SPALTENNAME"), pControlName)
|
||||
_Logger.Error(ex)
|
||||
End Try
|
||||
End If
|
||||
@@ -321,7 +321,7 @@ Namespace ControlCreator
|
||||
End If
|
||||
Next
|
||||
Catch ex As Exception
|
||||
_Logger.Warn("Error in CustomRowCellEdit for [{0}]", e.CellValue)
|
||||
_Logger.Warn("⚠️ Error in CustomRowCellEdit for [{0}]", e.CellValue)
|
||||
_Logger.Error(ex)
|
||||
End Try
|
||||
End Sub
|
||||
@@ -484,16 +484,17 @@ Namespace ControlCreator
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Function GetInheritanceConfirmationEntry(columnName As String) As ClassConfig.UserInheritanceConfirmation
|
||||
Dim entries = CONFIG.Config.UserInheritance_ConfirmationByColumn
|
||||
Private Function GetInheritanceConfirmationEntry(columnName As String) As UserInheritanceConfirmation
|
||||
Dim entries = UserInheritance_ConfirmationByColumn
|
||||
|
||||
If entries Is Nothing Then
|
||||
entries = New List(Of ClassConfig.UserInheritanceConfirmation)()
|
||||
CONFIG.Config.UserInheritance_ConfirmationByColumn = entries
|
||||
entries = New List(Of UserInheritanceConfirmation)()
|
||||
UserInheritance_ConfirmationByColumn = entries
|
||||
End If
|
||||
|
||||
Dim entry = entries.FirstOrDefault(Function(item) String.Equals(item.ColumnName, columnName, StringComparison.OrdinalIgnoreCase))
|
||||
If entry Is Nothing Then
|
||||
entry = New ClassConfig.UserInheritanceConfirmation With {
|
||||
entry = New UserInheritanceConfirmation With {
|
||||
.ColumnName = columnName,
|
||||
.Count = 0
|
||||
}
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
Imports WINDREAMLib
|
||||
Imports DigitalData.Modules.Config
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports DigitalData.Modules.EDMI.API
|
||||
Imports DigitalData.Modules.Config
|
||||
Imports DigitalData.Modules.Database
|
||||
Imports DigitalData.Modules.ZooFlow
|
||||
Imports DigitalData.Modules.EDMI.API
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports DigitalData.Modules.Windream
|
||||
Imports DigitalData.Modules.ZooFlow
|
||||
Imports taskFLOW.ClassConfig
|
||||
Imports WINDREAMLib
|
||||
|
||||
Module ModuleRuntimeVariables
|
||||
|
||||
@@ -62,6 +63,7 @@ Module ModuleRuntimeVariables
|
||||
|
||||
Public Property USER_IS_ADMIN As Boolean = False
|
||||
Public Property USER_ID = 0
|
||||
Public Property USER_MODULE_ID = 0
|
||||
Public Property USER_PRENAME = ""
|
||||
Public Property USER_SURNAME = ""
|
||||
Public Property USER_SHORTNAME = ""
|
||||
@@ -80,6 +82,11 @@ Module ModuleRuntimeVariables
|
||||
Public Property USER_USERNAME_ORG As String = ""
|
||||
Public Property USER_GHOST_MODE_ACTIVE As Boolean = False
|
||||
Public Property USER_GHOST_MODE_USRNAME As String = ""
|
||||
Public Class UserInheritanceConfirmation
|
||||
Public Property ColumnName As String = ""
|
||||
Public Property Count As Integer
|
||||
End Class
|
||||
Public Property UserInheritance_ConfirmationByColumn As New List(Of UserInheritanceConfirmation)
|
||||
|
||||
Public Property FORCE_LAYOUT_OVERVIEW As Boolean = False
|
||||
Public Property SHOW_CHARTS As Boolean = True
|
||||
|
||||
@@ -163,7 +163,7 @@ Public Class Validator
|
||||
' Logger.Error(ex)
|
||||
' Dim st As New StackTrace(True)
|
||||
' st = New StackTrace(ex, True)
|
||||
' Logger.Warn("Unexpected error in Check_UpdateIndexe TextBox :" & ex.Message, True)
|
||||
' LOGGER.Warn("⚠️ Unexpected error in Check_UpdateIndexe TextBox :" & ex.Message, True)
|
||||
' Return False
|
||||
' End Try
|
||||
'End Function
|
||||
|
||||
@@ -5,7 +5,6 @@ Imports DevExpress.XtraGrid
|
||||
Imports DevExpress.XtraGrid.Views.Grid
|
||||
Imports DevExpress.XtraGrid.Columns
|
||||
Imports DevExpress.XtraEditors
|
||||
Imports DigitalData.Modules.Language
|
||||
''' <summary>
|
||||
''' Defines common Functions for Checking for and replacing placeholders.
|
||||
''' This Class also includes a child class `Pattern` for passing around Patterns.
|
||||
@@ -72,7 +71,72 @@ Public Class clsPatterns
|
||||
_ControlLookupCache = Nothing
|
||||
LOGGER.Debug("Control cache cleared")
|
||||
End Sub
|
||||
''' <summary>
|
||||
''' Aktualisiert den Wert eines Controls im Cache
|
||||
''' </summary>
|
||||
Public Shared Sub UpdateControlInCache(controlName As String, newValue As Object)
|
||||
SyncLock _ControlLookupCache ' Thread-Safety
|
||||
If _ControlLookupCache Is Nothing OrElse Not _ControlLookupCache.ContainsKey(controlName) Then
|
||||
LOGGER.Warn($"Control [{controlName}] not found in cache for update")
|
||||
Return
|
||||
End If
|
||||
|
||||
' Hole das Control aus dem Cache
|
||||
Dim ctrl As Control = _ControlLookupCache(controlName)
|
||||
|
||||
' Aktualisiere den WERT des Controls basierend auf seinem Typ
|
||||
Try
|
||||
Select Case ctrl.GetType
|
||||
Case GetType(TextEdit), GetType(MemoEdit)
|
||||
DirectCast(ctrl, BaseEdit).EditValue = newValue
|
||||
|
||||
Case GetType(LookupControl3)
|
||||
Dim lookup = DirectCast(ctrl, LookupControl3)
|
||||
If TypeOf newValue Is List(Of String) Then
|
||||
lookup.Properties.SelectedValues = DirectCast(newValue, List(Of String))
|
||||
ElseIf TypeOf newValue Is String Then
|
||||
lookup.Properties.SelectedValues = New List(Of String) From {newValue.ToString()}
|
||||
End If
|
||||
|
||||
Case GetType(Windows.Forms.ComboBox)
|
||||
DirectCast(ctrl, ComboBox).Text = newValue?.ToString()
|
||||
|
||||
Case GetType(CheckBox)
|
||||
If TypeOf newValue Is Boolean Then
|
||||
DirectCast(ctrl, CheckBox).Checked = CBool(newValue)
|
||||
End If
|
||||
|
||||
Case GetType(DateTimePicker)
|
||||
If TypeOf newValue Is Date Then
|
||||
DirectCast(ctrl, DateTimePicker).Value = CDate(newValue)
|
||||
End If
|
||||
|
||||
Case Else
|
||||
LOGGER.Warn($"Unsupported control type for cache update: {ctrl.GetType.Name}")
|
||||
End Select
|
||||
|
||||
LOGGER.Debug($"Cache updated for control [{controlName}] with value type [{newValue?.GetType().Name}]")
|
||||
|
||||
Catch ex As Exception
|
||||
LOGGER.Error(ex)
|
||||
LOGGER.Warn($"Failed to update control [{controlName}]: {ex.Message}")
|
||||
End Try
|
||||
End SyncLock
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' Batch-Update für mehrere Controls
|
||||
''' </summary>
|
||||
Public Shared Sub UpdateMultipleControlsInCache(updates As Dictionary(Of String, Object))
|
||||
If updates Is Nothing OrElse updates.Count = 0 Then Return
|
||||
|
||||
SyncLock _ControlLookupCache
|
||||
For Each kvp In updates
|
||||
UpdateControlInCache(kvp.Key, kvp.Value)
|
||||
Next
|
||||
LOGGER.Debug($"Batch cache update completed for {updates.Count} controls")
|
||||
End SyncLock
|
||||
End Sub
|
||||
''' <summary>
|
||||
''' Wraps a pattern-type and -value in the common format: {#type#value}
|
||||
''' </summary>
|
||||
@@ -206,14 +270,16 @@ Public Class clsPatterns
|
||||
End Sub
|
||||
Public Shared Function ReplaceControlValues(pInput As String, oPanel As DevExpress.XtraEditors.XtraScrollableControl, oIsSQL As Boolean) As String
|
||||
Dim oResult = pInput
|
||||
' Cache beim ersten Aufruf erstellen:
|
||||
If _ControlLookupCache Is Nothing Then
|
||||
_ControlLookupCache = New Dictionary(Of String, Control)()
|
||||
For Each ctrl As Control In oPanel.Controls
|
||||
RecursiveAddToCache(ctrl, _ControlLookupCache)
|
||||
Next
|
||||
LOGGER.Debug($"Control cache initialized with {_ControlLookupCache.Count} controls")
|
||||
End If
|
||||
' Cache beim ersten Aufruf erstellen mit Lock
|
||||
SyncLock GetType(clsPatterns) ' Class-Level Lock
|
||||
If _ControlLookupCache Is Nothing Then
|
||||
_ControlLookupCache = New Dictionary(Of String, Control)()
|
||||
For Each ctrl As Control In oPanel.Controls
|
||||
RecursiveAddToCache(ctrl, _ControlLookupCache)
|
||||
Next
|
||||
LOGGER.Debug($"Control cache initialized with {_ControlLookupCache.Count} controls")
|
||||
End If
|
||||
End SyncLock
|
||||
Try
|
||||
|
||||
Dim oTryCounter = 0
|
||||
@@ -236,14 +302,23 @@ Public Class clsPatterns
|
||||
End If
|
||||
|
||||
LOGGER.Debug("Found placeholder for control [{0}].", oControlName)
|
||||
' Beim Cache-Zugriff Lock verwenden
|
||||
Dim oControl As Control = Nothing
|
||||
If Not _ControlLookupCache.TryGetValue(oControlName, oControl) Then
|
||||
LOGGER.Warn($"Control [{oControlName}] not found in cache!")
|
||||
' Fallback: Rekursive Suche als letzte Maßnahme
|
||||
SyncLock _ControlLookupCache
|
||||
If Not _ControlLookupCache.TryGetValue(oControlName, oControl) Then
|
||||
LOGGER.Warn($"Control [{oControlName}] not found in cache!")
|
||||
' Fallback außerhalb des Lock
|
||||
End If
|
||||
End SyncLock
|
||||
|
||||
' Fallback außerhalb des Lock
|
||||
If oControl Is Nothing Then
|
||||
oControl = oPanel.Controls.Find(oControlName, True).FirstOrDefault()
|
||||
If oControl IsNot Nothing Then
|
||||
LOGGER.Info($"Control [{oControlName}] found via fallback search. Adding to cache.")
|
||||
_ControlLookupCache(oControlName) = oControl
|
||||
LOGGER.Info($"Control [{oControlName}] found via fallback. Adding to cache.")
|
||||
SyncLock _ControlLookupCache
|
||||
_ControlLookupCache(oControlName) = oControl
|
||||
End SyncLock
|
||||
End If
|
||||
End If
|
||||
|
||||
@@ -308,7 +383,7 @@ Public Class clsPatterns
|
||||
Dim oView As GridView = oGrid.FocusedView
|
||||
|
||||
If oColumnName = String.Empty Then
|
||||
LOGGER.Warn("Used placeholder for Table [{0}] but without Column Name!", oControlName)
|
||||
LOGGER.Warn("⚠️ Used placeholder for Table [{0}] but without Column Name!", oControlName)
|
||||
oReplaceValue = ERROR_REPLACE_VALUE
|
||||
End If
|
||||
|
||||
@@ -317,7 +392,7 @@ Public Class clsPatterns
|
||||
SingleOrDefault()
|
||||
|
||||
If oColumn?.SummaryItem?.SummaryValue Is Nothing Then
|
||||
LOGGER.Warn("Column [{0}] not found in Grid!", oColumnName)
|
||||
LOGGER.Warn("⚠️ Column [{0}] not found in Grid!", oColumnName)
|
||||
oReplaceValue = ERROR_REPLACE_VALUE
|
||||
Else
|
||||
oReplaceValue = oColumn.SummaryItem.SummaryValue
|
||||
@@ -333,7 +408,7 @@ Public Class clsPatterns
|
||||
End If
|
||||
oResult = ReplacePattern(oResult, PATTERN_CTRL, oReplaceValue)
|
||||
Else
|
||||
LOGGER.Warn("Could not get a Control for [{0}].", oControlName)
|
||||
LOGGER.Warn("⚠️ Could not get a Control for [{0}].", oControlName)
|
||||
End If
|
||||
|
||||
oTryCounter += 1
|
||||
@@ -341,7 +416,7 @@ Public Class clsPatterns
|
||||
Return oResult
|
||||
Catch ex As Exception
|
||||
LOGGER.Error(ex)
|
||||
LOGGER.Warn("Error in ReplaceControlValues:" & ex.Message)
|
||||
LOGGER.Warn("⚠️ Error in ReplaceControlValues:" & ex.Message)
|
||||
Return oResult
|
||||
End Try
|
||||
End Function
|
||||
|
||||
2
app/TaskFlow/frmMain.Designer.vb
generated
2
app/TaskFlow/frmMain.Designer.vb
generated
@@ -246,7 +246,7 @@ Partial Class frmMain
|
||||
'
|
||||
'Panel1
|
||||
'
|
||||
Me.Panel1.BackColor = System.Drawing.Color.WhiteSmoke
|
||||
Me.Panel1.BackColor = System.Drawing.Color.Transparent
|
||||
Me.Panel1.Controls.Add(Me.GridControlWorkflows)
|
||||
Me.Panel1.Controls.Add(Me.Panel2)
|
||||
Me.Panel1.Controls.Add(Me.NavBarControl1)
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADw
|
||||
CAAAAk1TRnQBSQFMAgEBAgEAAaABCwGgAQsBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
CAAAAk1TRnQBSQFMAgEBAgEAAbABCwGwAQsBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
|
||||
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
|
||||
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -918,7 +918,7 @@ Public Class frmMassValidator
|
||||
|
||||
Else
|
||||
'not implemented
|
||||
LOGGER.Warn("Depending_Control_Set_Result for [{0}] NOT IMPLEMENTED", displayboxname)
|
||||
LOGGER.Warn("⚠️ Depending_Control_Set_Result for [{0}] NOT IMPLEMENTED", displayboxname)
|
||||
End If
|
||||
Else
|
||||
If oResultTable.Rows.Count = 1 Then
|
||||
@@ -929,7 +929,7 @@ Public Class frmMassValidator
|
||||
End If
|
||||
End If
|
||||
Else
|
||||
LOGGER.Warn("Result Table is nothing!")
|
||||
LOGGER.Warn("⚠️ Result Table is nothing!")
|
||||
End If
|
||||
Catch ex As Exception
|
||||
LOGGER.Info("Unexpected Ersror in Depending_Control_Set_Result - ERROR: " & ex.Message)
|
||||
|
||||
@@ -36,7 +36,7 @@ Public Class frmMonitor
|
||||
Try
|
||||
oDocID = GridView1.GetFocusedRowCellValue(GridView1.Columns("ObjectID"))
|
||||
Catch ex1 As Exception
|
||||
LOGGER.Warn("Could not get Doc/ObjectReference: " & ex.Message)
|
||||
LOGGER.Warn("⚠️ Could not get Doc/ObjectReference: " & ex.Message)
|
||||
MsgBox("Could not get Doc/ObjectReference: " & ex.Message, MsgBoxStyle.Critical, "Load_Detail")
|
||||
Exit Sub
|
||||
End Try
|
||||
|
||||
@@ -129,7 +129,8 @@ Public Class frmValidator
|
||||
Private _SqlControlsByGuid As Dictionary(Of Integer, List(Of DataRow))
|
||||
Private _LookupControlsByRepository As Dictionary(Of RepositoryItemLookupControl3, LookupControl3)
|
||||
Private _CachedFinalIndexing As DataTable = Nothing
|
||||
|
||||
Private _isUpdatingLookup As Boolean = False
|
||||
Private _suppressLookupEvents As Boolean = False
|
||||
Private Class Translation_Strings
|
||||
Inherits My.Resources.frmValidator_Strings
|
||||
End Class
|
||||
@@ -186,7 +187,7 @@ Public Class frmValidator
|
||||
' === MESSPUNKT 1: Start ===
|
||||
Dim perfStart As DateTime = If(LOG_HOTSPOTS, DateTime.Now, Nothing)
|
||||
Dim perfLastCheck As DateTime = perfStart
|
||||
If LOG_HOTSPOTS Then MyValidationLogger.Info($"[PERF] frmValidation_Load START")
|
||||
If LOG_HOTSPOTS Then MyValidationLogger.Info($"[PERF frmValidation_Load] START")
|
||||
|
||||
Try
|
||||
MyValidationLogger.Debug("###frmValidation_Load###")
|
||||
@@ -215,7 +216,7 @@ Public Class frmValidator
|
||||
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
MyValidationLogger.Info($"[PERF] Nach Initialisierung: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
MyValidationLogger.Info($"[PERF frmValidation_Load] Nach Initialisierung: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
perfLastCheck = DateTime.Now
|
||||
End If
|
||||
|
||||
@@ -257,7 +258,7 @@ Public Class frmValidator
|
||||
End If
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
MyValidationLogger.Info($"[PERF] Nach Position/Size: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
MyValidationLogger.Info($"[PERF frmValidation_Load] Nach Position/Size: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
perfLastCheck = DateTime.Now
|
||||
End If
|
||||
|
||||
@@ -277,7 +278,7 @@ Public Class frmValidator
|
||||
DocumentViewer1.Init(LOGCONFIG, GDPICTURE_LICENSE, oDVSettings)
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
MyValidationLogger.Info($"[PERF] Nach DocumentViewer.Init: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
MyValidationLogger.Info($"[PERF frmValidation_Load] Nach DocumentViewer.Init: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
perfLastCheck = DateTime.Now
|
||||
End If
|
||||
|
||||
@@ -295,7 +296,7 @@ Public Class frmValidator
|
||||
DTVWCONTROLS_INDEX.Select(oExpression, "Y_LOC, X_LOC").CopyToDataTable(DTVWCONTROL_INDEX, LoadOption.PreserveChanges)
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
MyValidationLogger.Info($"[PERF] Nach DTVWCONTROL_INDEX laden ({DTVWCONTROL_INDEX.Rows.Count} Rows): {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
MyValidationLogger.Info($"[PERF frmValidation_Load] Nach DTVWCONTROL_INDEX laden ({DTVWCONTROL_INDEX.Rows.Count} Rows): {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
perfLastCheck = DateTime.Now
|
||||
End If
|
||||
|
||||
@@ -354,7 +355,7 @@ Public Class frmValidator
|
||||
CURRENT_PROFILE_LOG_INDEX = PROFIL_LOGINDEX
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
MyValidationLogger.Info($"[PERF] Nach Profile-Properties: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
MyValidationLogger.Info($"[PERF frmValidation_Load] Nach Profile-Properties: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
perfLastCheck = DateTime.Now
|
||||
End If
|
||||
|
||||
@@ -382,7 +383,7 @@ Public Class frmValidator
|
||||
If profileLangUser.TryGetValue(notRespQKey, row) Then oProfileNotResponsibleQuestion = row.Item("STRING1")
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
MyValidationLogger.Info($"[PERF] Nach Language-Loop ({CURRENT_DT_PROFILE_LANGUAGE.Rows.Count} Rows): {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
MyValidationLogger.Info($"[PERF frmValidation_Load] Nach Language-Loop ({CURRENT_DT_PROFILE_LANGUAGE.Rows.Count} Rows): {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
perfLastCheck = DateTime.Now
|
||||
End If
|
||||
|
||||
@@ -434,7 +435,7 @@ Public Class frmValidator
|
||||
MyValidationLogger.Debug("Buttontext validation loaded")
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
MyValidationLogger.Info($"[PERF] Nach Button-Setup: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
MyValidationLogger.Info($"[PERF frmValidation_Load] Nach Button-Setup: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
perfLastCheck = DateTime.Now
|
||||
End If
|
||||
|
||||
@@ -521,7 +522,7 @@ Public Class frmValidator
|
||||
End If
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
MyValidationLogger.Info($"[PERF] Nach Rejection/NR-Setup: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
MyValidationLogger.Info($"[PERF frmValidation_Load] Nach Rejection/NR-Setup: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
perfLastCheck = DateTime.Now
|
||||
End If
|
||||
|
||||
@@ -557,10 +558,10 @@ Public Class frmValidator
|
||||
MyValidationLogger.Debug("Right_Delete: " & USER_RIGHT_FILE_DELETE.ToString)
|
||||
|
||||
' === MESSPUNKT 10: Create_Controls (KRITISCH - wahrscheinlich größter Hotspot) ===
|
||||
If LOG_HOTSPOTS Then MyValidationLogger.Info($"[PERF] Vor Create_Controls")
|
||||
If LOG_HOTSPOTS Then MyValidationLogger.Info($"[PERF frmValidation_Load] Vor Create_Controls")
|
||||
Create_Controls()
|
||||
If LOG_HOTSPOTS Then
|
||||
MyValidationLogger.Info($"[PERF] Nach Create_Controls: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
MyValidationLogger.Info($"[PERF frmValidation_Load] Nach Create_Controls: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
perfLastCheck = DateTime.Now
|
||||
End If
|
||||
End If
|
||||
@@ -570,7 +571,7 @@ Public Class frmValidator
|
||||
|
||||
' === MESSPUNKT 11: Gesamt-Zeit ===
|
||||
If LOG_HOTSPOTS Then
|
||||
MyValidationLogger.Info($"[PERF] GESAMT frmValidation_Load: {(DateTime.Now - perfStart).TotalMilliseconds}ms")
|
||||
MyValidationLogger.Info($"[PERF frmValidation_Load] GESAMT frmValidation_Load: {(DateTime.Now - perfStart).TotalMilliseconds}ms")
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
@@ -581,6 +582,14 @@ Public Class frmValidator
|
||||
End Sub
|
||||
|
||||
Private Sub frmValidation_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
|
||||
Dim perfStart As DateTime = DateTime.MinValue
|
||||
Dim perfLastCheck As DateTime = DateTime.MinValue
|
||||
If LOG_HOTSPOTS Then
|
||||
perfStart = DateTime.Now
|
||||
perfLastCheck = perfStart
|
||||
MyValidationLogger.Info("[PERF frmValidation_FormClosing] START")
|
||||
End If
|
||||
|
||||
Try
|
||||
_FormClosing = True
|
||||
|
||||
@@ -589,6 +598,12 @@ Public Class frmValidator
|
||||
frmMessages.Close()
|
||||
End If
|
||||
End If
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
MyValidationLogger.Info($"[PERF frmValidation_FormClosing] nach Messages-Close: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
perfLastCheck = DateTime.Now
|
||||
End If
|
||||
|
||||
Try
|
||||
' Position und Größe speichern
|
||||
My.Settings.frmValidatorSize = Me.Size
|
||||
@@ -598,9 +613,24 @@ Public Class frmValidator
|
||||
MyValidationLogger.Error(ex)
|
||||
MyValidationLogger.Info("Error in Load FormLayout: " & ex.Message)
|
||||
End Try
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
MyValidationLogger.Info($"[PERF frmValidation_FormClosing] nach Settings.Save: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
perfLastCheck = DateTime.Now
|
||||
End If
|
||||
|
||||
My.Settings.frmValidatorSize = Me.Size
|
||||
My.Settings.Save()
|
||||
If INACTIVITY_DURATION <> 0 Then frmMain.Timer_Inactivity_Reset_Disable("FormClosing")
|
||||
|
||||
If INACTIVITY_DURATION <> 0 Then
|
||||
frmMain.Timer_Inactivity_Reset_Disable("FormClosing")
|
||||
End If
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
MyValidationLogger.Info($"[PERF frmValidation_FormClosing] nach Timer-Reset: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
perfLastCheck = DateTime.Now
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
MyValidationLogger.Error(ex)
|
||||
End Try
|
||||
@@ -608,13 +638,20 @@ Public Class frmValidator
|
||||
Try
|
||||
Dim oSQL As String
|
||||
If CURRENT_DOC_GUID <> 0 Then
|
||||
Dim oPRoc = String.Format("EXEC PRTF_PROFILE_FILES_WORK {0},{1},{2},'FreeFile'", CURRENT_DOC_ID, CURRENT_ProfilGUID, USER_ID)
|
||||
oSQL = $"DELETE FROM TBPM_DOCWALKOVER WHERE UserID = {USER_ID};" & vbNewLine &
|
||||
$"UPDATE TBPM_PROFILE_FILES Set IN_WORK = 0, IN_WORK_WHEN = NULL, WORK_USER = NULL WHERE GUID = {CURRENT_DOC_GUID};"
|
||||
oPRoc
|
||||
Else
|
||||
oSQL = $"DELETE FROM TBPM_DOCWALKOVER WHERE UserID = {USER_ID};"
|
||||
End If
|
||||
|
||||
DatabaseFallback.ExecuteNonQueryECM(oSQL)
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
MyValidationLogger.Info($"[PERF frmValidation_FormClosing] nach DB-Cleanup: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
perfLastCheck = DateTime.Now
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
MyValidationLogger.Error(ex)
|
||||
MsgBox("Error in delete jumped files:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
||||
@@ -622,25 +659,43 @@ Public Class frmValidator
|
||||
|
||||
Reset_CurrentReferences()
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
MyValidationLogger.Info($"[PERF frmValidation_FormClosing] nach Reset_CurrentReferences: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
perfLastCheck = DateTime.Now
|
||||
End If
|
||||
|
||||
Try
|
||||
If Not IsNothing(DocumentViewer1) Then
|
||||
DocumentViewer1.CloseDocument()
|
||||
DocumentViewer1.Done()
|
||||
End If
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
MyValidationLogger.Info($"[PERF frmValidation_FormClosing] nach DocumentViewer.Done: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
perfLastCheck = DateTime.Now
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
MyValidationLogger.Warn($"Unexpected error in DocumentViewerValidator.Done: {ex.Message}")
|
||||
End Try
|
||||
|
||||
Try
|
||||
_frmValidatorSearch.Close()
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
MyValidationLogger.Info($"[PERF frmValidation_FormClosing] nach ValidatorSearch.Close: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
perfLastCheck = DateTime.Now
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
MyValidationLogger.Error(ex)
|
||||
End Try
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
MyValidationLogger.Info($"[PERF frmValidation_FormClosing] GESAMT: {(DateTime.Now - perfStart).TotalMilliseconds}ms")
|
||||
End If
|
||||
End Sub
|
||||
Sub Reset_CurrentReferences()
|
||||
MyValidationLogger.Info("Attention: Reset_CurrentReferences....")
|
||||
|
||||
If Not IsNothing(DT_AdditionalSearches_Resultset_Docs) Then
|
||||
DT_AdditionalSearches_Resultset_Docs.Clear()
|
||||
End If
|
||||
@@ -858,7 +913,7 @@ Public Class frmValidator
|
||||
lookup.Properties.ValueMember = oDTContent.Columns.Item(0).ColumnName
|
||||
lookup.Properties.DisplayMember = oDTContent.Columns.Item(0).ColumnName
|
||||
Catch ex As Exception
|
||||
MyValidationLogger.Warn("Error in LookUpLoadSQLData: " & ex.Message)
|
||||
MyValidationLogger.Warn("⚠️ Error in LookUpLoadSQLData: " & ex.Message)
|
||||
End Try
|
||||
|
||||
ElseIf TypeOf control Is DevExpress.XtraEditors.TextEdit Or TypeOf control Is MemoEdit Then
|
||||
@@ -870,7 +925,7 @@ Public Class frmValidator
|
||||
DirectCast(control, BaseEdit).EditValue = value
|
||||
oValue = value
|
||||
Catch ex As Exception
|
||||
MyValidationLogger.Warn("Error in TextBoxLoadSQLData: " & ex.Message)
|
||||
MyValidationLogger.Warn("⚠️ Error in TextBoxLoadSQLData: " & ex.Message)
|
||||
End Try
|
||||
ElseIf TypeOf control Is Windows.Forms.ComboBox Then
|
||||
Try
|
||||
@@ -887,7 +942,7 @@ Public Class frmValidator
|
||||
oMyComboBox.SelectedIndex = oselectedIndex
|
||||
|
||||
Catch ex As Exception
|
||||
MyValidationLogger.Warn("Error in ComboBoxLoadSQLData: " & ex.Message)
|
||||
MyValidationLogger.Warn("⚠️ Error in ComboBoxLoadSQLData: " & ex.Message)
|
||||
End Try
|
||||
|
||||
ElseIf TypeOf control Is GridControl Then
|
||||
@@ -913,7 +968,7 @@ Public Class frmValidator
|
||||
dataGridView.DataSource = oDataSource
|
||||
End If
|
||||
Catch ex As Exception
|
||||
MyValidationLogger.Warn("Error in GridControlSQLData: " & ex.Message)
|
||||
MyValidationLogger.Warn("⚠️ Error in GridControlSQLData: " & ex.Message)
|
||||
End Try
|
||||
End If
|
||||
Next
|
||||
@@ -1362,6 +1417,9 @@ Public Class frmValidator
|
||||
MyValidationLogger.Debug($"Control [{oMeta.Name}] marked as dirty")
|
||||
End If
|
||||
|
||||
' *** NEU: Cache aktualisieren ***
|
||||
clsPatterns.UpdateControlInCache(oTextbox.Name, oTextbox.EditValue)
|
||||
|
||||
SetControlValues_FromControl(oTextbox)
|
||||
Controls2beEnabled(oTextbox.Name)
|
||||
ControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER)
|
||||
@@ -1444,8 +1502,7 @@ Public Class frmValidator
|
||||
MyValidationLogger.Info("Unexpected Error in Eventhandler Variable SQL Result - ERROR: " & ex.Message)
|
||||
End Try
|
||||
If oTextBox.Name <> last_control.Name Then
|
||||
SendKeys.Send("{TAB}")
|
||||
_ControlHandleStarted = True
|
||||
Me.SelectNextControl(oTextBox, True, True, True, True)
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
@@ -1458,12 +1515,12 @@ Public Class frmValidator
|
||||
Dim oControlID = DirectCast(oButton.Tag, ClassControlCreator.ControlMetadata).Guid
|
||||
Dim oSQL = ControlCreator.GET_CONTROL_PROPERTY(DT_CONTROLS, oControlID, "SQL_UEBERPRUEFUNG")
|
||||
If IsNothing(oSQL) Then
|
||||
MyValidationLogger.Warn("onCustomButtonClick - SQL_UEBERPRUEFUNG IS NOTHING")
|
||||
MyValidationLogger.Warn("⚠️ onCustomButtonClick - SQL_UEBERPRUEFUNG IS NOTHING")
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
If Check_UpdateIndexe() = False Then
|
||||
MyValidationLogger.Warn("onCustomButtonClick - Check_UpdateIndexe = False >> Exit Click")
|
||||
MyValidationLogger.Warn("⚠️ onCustomButtonClick - Check_UpdateIndexe = False >> Exit Click")
|
||||
Exit Sub
|
||||
End If
|
||||
Override_SQLCommand = ControlCreator.GET_CONTROL_PROPERTY(DT_CONTROLS, oControlID, "SQL2")
|
||||
@@ -1659,7 +1716,7 @@ Public Class frmValidator
|
||||
Public Sub onLookUpselectedValue(sender As Object, SelectedValues As List(Of String))
|
||||
Try
|
||||
MyValidationLogger.Debug("onLookUpselectedValue")
|
||||
If _FormLoaded = False Then
|
||||
If _FormLoaded = False Or _suppressLookupEvents Then
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
@@ -1668,38 +1725,61 @@ Public Class frmValidator
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
Dim oRepositoryItem As RepositoryItemLookupControl3 = sender
|
||||
Dim oLookup As LookupControl3 = Nothing
|
||||
' *** WICHTIG: Auch hier globalen Guard setzen ***
|
||||
_suppressLookupEvents = True
|
||||
Try
|
||||
Dim oRepositoryItem As RepositoryItemLookupControl3 = sender
|
||||
Dim oLookup As LookupControl3 = Nothing
|
||||
|
||||
If _LookupControlsByRepository IsNot Nothing Then
|
||||
_LookupControlsByRepository.TryGetValue(oRepositoryItem, oLookup)
|
||||
End If
|
||||
If _LookupControlsByRepository IsNot Nothing Then
|
||||
_LookupControlsByRepository.TryGetValue(oRepositoryItem, oLookup)
|
||||
End If
|
||||
|
||||
If oLookup Is Nothing Then
|
||||
oLookup = TryCast(oRepositoryItem.OwnerEdit, LookupControl3)
|
||||
End If
|
||||
If oLookup Is Nothing Then
|
||||
oLookup = TryCast(oRepositoryItem.OwnerEdit, LookupControl3)
|
||||
End If
|
||||
|
||||
If oLookup Is Nothing Then
|
||||
MyValidationLogger.Warn("onLookUpselectedValue: LookupControl not found for RepositoryItem")
|
||||
Exit Sub
|
||||
End If
|
||||
If oLookup Is Nothing Then
|
||||
MyValidationLogger.Warn("⚠️ onLookUpselectedValue: LookupControl not found for RepositoryItem")
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
LookupControl_DependingControls(oLookup, SelectedValues)
|
||||
LookupControl_EnablingControls(oLookup, SelectedValues)
|
||||
LookupControl_DependingColumn(oLookup, SelectedValues)
|
||||
LookupControl_DependingControls(oLookup, SelectedValues)
|
||||
LookupControl_EnablingControls(oLookup, SelectedValues)
|
||||
LookupControl_DependingColumn(oLookup, SelectedValues)
|
||||
|
||||
Finally
|
||||
_suppressLookupEvents = False
|
||||
End Try
|
||||
|
||||
Catch ex As Exception
|
||||
MyValidationLogger.Warn("Unexpected error in onLookUpselectedValue - " + ex.Message)
|
||||
MyValidationLogger.Warn("⚠️ Unexpected error in onLookUpselectedValue - " + ex.Message)
|
||||
MyValidationLogger.Error(ex)
|
||||
_suppressLookupEvents = False ' Sicherheits-Reset
|
||||
End Try
|
||||
|
||||
End Sub
|
||||
Private _lookupUpdateDepth As Integer = 0
|
||||
Private Const MAX_LOOKUP_DEPTH As Integer = 5
|
||||
|
||||
Public Sub LookupListChanged(sender As Object, SelectedValues As List(Of String))
|
||||
If _FormLoaded = False Or PanelValidatorControl.Enabled = False Then
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
' *** GLOBALER GUARD: Blockiert ALLE Lookup-Updates während Verarbeitung ***
|
||||
If _suppressLookupEvents Then
|
||||
MyValidationLogger.Debug("LookupListChanged suppressed (global guard active)")
|
||||
Exit Sub
|
||||
End If
|
||||
' *** DEPTH-GUARD: Verhindert extrem tiefe Rekursionen ***
|
||||
If _lookupUpdateDepth >= MAX_LOOKUP_DEPTH Then
|
||||
MyValidationLogger.Warn($"Lookup recursion depth exceeded ({_lookupUpdateDepth}). Aborting.")
|
||||
Exit Sub
|
||||
End If
|
||||
Try
|
||||
_suppressLookupEvents = True ' <-- Globaler Guard aktivieren
|
||||
_lookupUpdateDepth += 1
|
||||
Dim oLookup As RepositoryItemLookupControl3 = sender
|
||||
Dim oLookupControl As LookupControl3 = Nothing
|
||||
|
||||
@@ -1724,8 +1804,11 @@ Public Class frmValidator
|
||||
oMeta.IsDirty = True
|
||||
MyValidationLogger.Debug($"LookupControl [{oMeta.Name}] marked as dirty")
|
||||
listChangedLookup.Add(oLookupControl.Name)
|
||||
' *** Cache aktualisieren ***
|
||||
clsPatterns.UpdateControlInCache(oLookupControl.Name, SelectedValues)
|
||||
Else
|
||||
listChangedLookup.Add(oLookup.Name)
|
||||
clsPatterns.UpdateControlInCache(oLookup.Name, SelectedValues)
|
||||
End If
|
||||
|
||||
ControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER)
|
||||
@@ -1744,10 +1827,13 @@ Public Class frmValidator
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
|
||||
Catch ex As Exception
|
||||
MyValidationLogger.Error(ex)
|
||||
Finally
|
||||
_lookupUpdateDepth -= 1
|
||||
_suppressLookupEvents = False ' <-- Globaler Guard deaktivieren
|
||||
End Try
|
||||
|
||||
End Sub
|
||||
Private Sub GridView_CellValueChanged(sender As Object, e As DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs)
|
||||
Dim oView As GridView = sender
|
||||
@@ -1768,6 +1854,8 @@ Public Class frmValidator
|
||||
Dim oMeta As ClassControlCreator.ControlMetadata = oCheckbox.Tag
|
||||
oMeta.IsDirty = True
|
||||
MyValidationLogger.Debug($"CheckBox [{oMeta.Name}] marked as dirty")
|
||||
' *** NEU: Cache aktualisieren ***
|
||||
clsPatterns.UpdateControlInCache(oCheckbox.Name, oCheckbox.Checked)
|
||||
|
||||
Try
|
||||
CheckBox_DependingControls(oCheckbox)
|
||||
@@ -1855,7 +1943,7 @@ Public Class frmValidator
|
||||
Dim oControlId2Set As Integer
|
||||
|
||||
'If Not Integer.TryParse(oControl2Set, oControlId2Set) Then
|
||||
' Logger.Warn("Careful: the oControl2Set contains no CONTROL_GUID")
|
||||
' LOGGER.Warn("⚠️ Careful: the oControl2Set contains no CONTROL_GUID")
|
||||
' Exit Sub
|
||||
'End If
|
||||
|
||||
@@ -1991,7 +2079,7 @@ Public Class frmValidator
|
||||
|
||||
|
||||
Case Else
|
||||
MyValidationLogger.Warn("SetControlData used on unsupported control")
|
||||
MyValidationLogger.Warn("⚠️ SetControlData used on unsupported control")
|
||||
|
||||
End Select
|
||||
|
||||
@@ -2011,36 +2099,38 @@ Public Class frmValidator
|
||||
Next
|
||||
End Sub
|
||||
Private Sub LookupControl_DependingControls(LookupControl As LookupControl3, SelectedValues As List(Of String))
|
||||
Dim oLOOKUPValue = SelectedValues.Item(0
|
||||
)
|
||||
Dim oLOOKUPValue = SelectedValues.Item(0)
|
||||
Dim oLOOKUPName = LookupControl.Name
|
||||
MyValidationLogger.Debug($"oLOOKUPValue Is [{oLOOKUPValue}]!")
|
||||
|
||||
Dim oControlID = DirectCast(LookupControl.Tag, ClassControlCreator.ControlMetadata).Guid
|
||||
Dim oFilteredDatatable As DataTable = DT_CONTROLS.Clone()
|
||||
Dim oExpression = $"SQL_UEBERPRUEFUNG Like '%#CTRL#{oLOOKUPName}%'"
|
||||
DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges)
|
||||
|
||||
If oFilteredDatatable.Rows.Count > 0 Then
|
||||
MyValidationLogger.Debug($"We got {oFilteredDatatable.Rows.Count} depending controls!!")
|
||||
Else
|
||||
MyValidationLogger.Debug($"Sorry NO depending controls!!")
|
||||
End If
|
||||
|
||||
For Each oRowDependingControl As DataRow In oFilteredDatatable.Rows
|
||||
Dim oDEPENDING_GUID = oRowDependingControl.Item("GUID")
|
||||
Dim oDEPENDING_CtrlName = oRowDependingControl.Item("NAME")
|
||||
MyValidationLogger.Debug($"Control {oDEPENDING_CtrlName} is depending on lookUp {oLOOKUPName}..")
|
||||
|
||||
If _DependingControl_In_Action = True Then
|
||||
MyValidationLogger.Info($"..but _dependingControl_in_action = True ==> Exit Sub!")
|
||||
Exit Sub
|
||||
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, PanelValidatorControl, True)
|
||||
_DependingControl_In_Action = True
|
||||
'Dim oDTDEPENDING_RESULT As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oRowDependingControl.Item("CONNECTION_ID"), $"LookupControl_DependingControls - oControlID: {oControlID}")
|
||||
'Dim oDTDEPENDING_RESULT As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSqlCommand, DatabaseType.ECM) With {
|
||||
' .ConnectionId = oRowDependingControl.Item("CONNECTION_ID")
|
||||
'})
|
||||
|
||||
Dim oDTDEPENDING_RESULT As DataTable = GetCachedDatatable(oSqlCommand, oRowDependingControl.Item("CONNECTION_ID"))
|
||||
|
||||
If Not IsNothing(oDTDEPENDING_RESULT) Then
|
||||
Try
|
||||
Dim oFound As Boolean = False
|
||||
@@ -2049,72 +2139,78 @@ Public Class frmValidator
|
||||
If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid = oDEPENDING_GUID Then
|
||||
oFound = True
|
||||
MyValidationLogger.Debug($"Got the depending control ID:{oDEPENDING_GUID}..Setting the values..")
|
||||
Select Case True
|
||||
Case oControl.GetType() = GetType(DevExpress.XtraEditors.TextEdit) Or oControl.GetType() = GetType(MemoEdit)
|
||||
Try
|
||||
Dim oValue As Object = oDTDEPENDING_RESULT.Rows(0).Item(0)
|
||||
MyValidationLogger.Debug(String.Format("Setting EditValue with value [{0}]", oValue))
|
||||
oValue = ObjectEx.NotNull(Of Object)(oValue, Nothing)
|
||||
|
||||
' *** WICHTIG: Während Suppress-Modus Updates durchführen ***
|
||||
Dim wasSuppressed = _suppressLookupEvents
|
||||
_suppressLookupEvents = True
|
||||
|
||||
Try
|
||||
Select Case True
|
||||
Case oControl.GetType() = GetType(DevExpress.XtraEditors.TextEdit) Or oControl.GetType() = GetType(MemoEdit)
|
||||
Try
|
||||
'oControl.Text = oValue
|
||||
DirectCast(oControl, DevExpress.XtraEditors.TextEdit).EditValue = oValue
|
||||
Dim oValue As Object = oDTDEPENDING_RESULT.Rows(0).Item(0)
|
||||
MyValidationLogger.Debug(String.Format("Setting EditValue with value [{0}]", oValue))
|
||||
oValue = ObjectEx.NotNull(Of Object)(oValue, Nothing)
|
||||
Try
|
||||
DirectCast(oControl, DevExpress.XtraEditors.TextEdit).EditValue = oValue
|
||||
Catch ex As Exception
|
||||
MyValidationLogger.Warn($"Unexpected error in Checking oTEXT: {ex.Message}")
|
||||
End Try
|
||||
Catch ex As Exception
|
||||
MyValidationLogger.Warn($"Unexpected error in Checking oTEXT: {ex.Message}")
|
||||
MyValidationLogger.Warn($"Unexpected error in Dim oTEXT = oDTDEPENDING_RESULT.Rows(0).Item(0): {ex.Message}")
|
||||
End Try
|
||||
|
||||
|
||||
Catch ex As Exception
|
||||
MyValidationLogger.Warn($"Unexpected error in Dim oTEXT = oDTDEPENDING_RESULT.Rows(0).Item(0): {ex.Message}")
|
||||
End Try
|
||||
|
||||
Dim oColor
|
||||
Try
|
||||
oColor = System.Drawing.Color.FromName(oDTDEPENDING_RESULT.Rows(0).Item("BackgroundColor"))
|
||||
oControl.BackColor = oColor
|
||||
Catch ex As Exception
|
||||
oControl.BackColor = Color.White
|
||||
End Try
|
||||
Try
|
||||
Dim btntext = oDTDEPENDING_RESULT.Rows(0).Item("btnFinishCaption")
|
||||
btnSave.Text = btntext & " (F2)"
|
||||
Catch ex As Exception
|
||||
|
||||
End Try
|
||||
Try
|
||||
oColor = System.Drawing.Color.FromName(oDTDEPENDING_RESULT.Rows(0).Item("btnFinishColor"))
|
||||
btnSave.BackColor = oColor
|
||||
Catch ex As Exception
|
||||
btnSave.BackColor = Color.Transparent
|
||||
End Try
|
||||
Case oControl.GetType() = GetType(LookupControl3)
|
||||
Dim oDependingLookup As LookupControl3 = oControl
|
||||
oDependingLookup.Properties.DataSource = oDTDEPENDING_RESULT
|
||||
oDependingLookup.Properties.ValueMember = oDTDEPENDING_RESULT.Columns.Item(0).ColumnName
|
||||
oDependingLookup.Properties.DisplayMember = oDTDEPENDING_RESULT.Columns.Item(0).ColumnName
|
||||
Case oControl.GetType() = GetType(GridControl)
|
||||
'ClassControlCreator.GridTables
|
||||
Case oControl.GetType() = GetType(CheckBox)
|
||||
Try
|
||||
Dim oCheckState = CBool(oDTDEPENDING_RESULT.Rows(0).Item(0))
|
||||
Dim oDependingChk As CheckBox = oControl
|
||||
oDependingChk.CheckState = oCheckState
|
||||
Dim oColor
|
||||
Try
|
||||
oColor = System.Drawing.Color.FromName(oDTDEPENDING_RESULT.Rows(0).Item("BackgroundColor"))
|
||||
oControl.BackColor = oColor
|
||||
Catch ex As Exception
|
||||
|
||||
oControl.BackColor = Color.White
|
||||
End Try
|
||||
Try
|
||||
Dim btntext = oDTDEPENDING_RESULT.Rows(0).Item("btnFinishCaption")
|
||||
btnSave.Text = btntext & " (F2)"
|
||||
Catch ex As Exception
|
||||
End Try
|
||||
Try
|
||||
oColor = System.Drawing.Color.FromName(oDTDEPENDING_RESULT.Rows(0).Item("btnFinishColor"))
|
||||
btnSave.BackColor = oColor
|
||||
Catch ex As Exception
|
||||
btnSave.BackColor = Color.Transparent
|
||||
End Try
|
||||
Catch ex As Exception
|
||||
MyValidationLogger.Warn($"Unexpected error in Checking oCheckBoxDependingControlLOOKUP: {ex.Message}")
|
||||
End Try
|
||||
|
||||
Case oControl.GetType() = GetType(LookupControl3)
|
||||
Dim oDependingLookup As LookupControl3 = oControl
|
||||
oDependingLookup.Properties.DataSource = oDTDEPENDING_RESULT
|
||||
oDependingLookup.Properties.ValueMember = oDTDEPENDING_RESULT.Columns.Item(0).ColumnName
|
||||
oDependingLookup.Properties.DisplayMember = oDTDEPENDING_RESULT.Columns.Item(0).ColumnName
|
||||
|
||||
Case oControl.GetType() = GetType(GridControl)
|
||||
' GridControl-Handling
|
||||
|
||||
Case oControl.GetType() = GetType(CheckBox)
|
||||
Try
|
||||
Dim oCheckState = CBool(oDTDEPENDING_RESULT.Rows(0).Item(0))
|
||||
Dim oDependingChk As CheckBox = oControl
|
||||
oDependingChk.CheckState = oCheckState
|
||||
Dim oColor
|
||||
Try
|
||||
oColor = System.Drawing.Color.FromName(oDTDEPENDING_RESULT.Rows(0).Item("BackgroundColor"))
|
||||
oControl.BackColor = oColor
|
||||
Catch ex As Exception
|
||||
End Try
|
||||
Catch ex As Exception
|
||||
MyValidationLogger.Warn($"Unexpected error in Checking oCheckBoxDependingControlLOOKUP: {ex.Message}")
|
||||
End Try
|
||||
End Select
|
||||
Finally
|
||||
' Restore previous state
|
||||
_suppressLookupEvents = wasSuppressed
|
||||
End Try
|
||||
|
||||
End Select
|
||||
_DependingControl_In_Action = False
|
||||
Exit For
|
||||
End If
|
||||
|
||||
Next
|
||||
|
||||
If oFound = False Then
|
||||
@@ -2127,19 +2223,10 @@ Public Class frmValidator
|
||||
Else
|
||||
MyValidationLogger.Warn($"Datatable for Depending Controls was nothing! Check the SQL [{oSqlCommand}]")
|
||||
End If
|
||||
|
||||
SendKeys.Send("{TAB}")
|
||||
_ControlHandleStarted = True
|
||||
Else
|
||||
MyValidationLogger.Debug($"Error: Check CoNN ID and SQL on NULL VALUES!")
|
||||
End If
|
||||
|
||||
|
||||
Next
|
||||
If oFilteredDatatable.Rows.Count = 1 Then
|
||||
|
||||
|
||||
End If
|
||||
End Sub
|
||||
Private Sub CheckBox_DependingControls(pCheckbox As CheckBox)
|
||||
Dim oCheckboxname = pCheckbox.Name
|
||||
@@ -2249,8 +2336,7 @@ Public Class frmValidator
|
||||
MyValidationLogger.Warn($"Error while setting depending control-value for [{oDEPENDING_CtrlName}]: " & ex.Message)
|
||||
_DependingControl_In_Action = False
|
||||
End Try
|
||||
SendKeys.Send("{TAB}")
|
||||
_ControlHandleStarted = True
|
||||
|
||||
Else
|
||||
MyValidationLogger.Debug($"Error: Check CoNN ID and SQL on NULL VALUES!")
|
||||
End If
|
||||
@@ -2360,6 +2446,8 @@ Public Class frmValidator
|
||||
If oCombobox.SelectedIndex <> -1 And _Indexe_Loaded = True Then
|
||||
Dim oMeta As ClassControlCreator.ControlMetadata = oCombobox.Tag
|
||||
oMeta.IsDirty = True
|
||||
' *** NEU: Cache aktualisieren ***
|
||||
clsPatterns.UpdateControlInCache(oCombobox.Name, oCombobox.Text)
|
||||
MyValidationLogger.Debug($"ComboBox [{oMeta.Name}] marked as dirty")
|
||||
If oCombobox.Name = last_control.Name Then
|
||||
'Abschluss()
|
||||
@@ -2588,7 +2676,7 @@ Public Class frmValidator
|
||||
|
||||
Else
|
||||
'not implemented
|
||||
MyValidationLogger.Warn("Depending_Control_Set_Result for [{0}] NOT IMPLEMENTED", displayboxname)
|
||||
MyValidationLogger.Warn("⚠️ Depending_Control_Set_Result for [{0}] NOT IMPLEMENTED", displayboxname)
|
||||
End If
|
||||
Else
|
||||
If oResultTable.Rows.Count = 1 Then
|
||||
@@ -2599,7 +2687,7 @@ Public Class frmValidator
|
||||
End If
|
||||
End If
|
||||
Else
|
||||
MyValidationLogger.Warn("Result Table is nothing!")
|
||||
MyValidationLogger.Warn("⚠️ Result Table is nothing!")
|
||||
End If
|
||||
Catch ex As Exception
|
||||
MyValidationLogger.Info("Unexpected Ersror in Depending_Control_Set_Result - ERROR: " & ex.Message)
|
||||
@@ -2771,7 +2859,7 @@ Public Class frmValidator
|
||||
MyValidationLogger.Debug($"Get_Next_GUID: Amount_Docs2Validate [{Amount_Docs2Validate}]...")
|
||||
Catch ex As Exception
|
||||
Amount_Docs2Validate = 0
|
||||
MyValidationLogger.Warn("Amount_Docs2Validate Error: " & ex.Message)
|
||||
MyValidationLogger.Warn("⚠️ Amount_Docs2Validate Error: " & ex.Message)
|
||||
End Try
|
||||
Else
|
||||
MyValidationLogger.Info($">> Attention: GetNextGUID - Could not get the next GUID - SQL [{oSQL}]")
|
||||
@@ -2848,7 +2936,7 @@ Public Class frmValidator
|
||||
Dim oDT As DataTable = DatabaseFallback.GetDatatableECM(oSQL)
|
||||
|
||||
If oDT Is Nothing OrElse oDT.Rows.Count = 0 Then
|
||||
MyValidationLogger.Warn("GetDocPathWindows: No result for file paths!")
|
||||
MyValidationLogger.Warn("⚠️ GetDocPathWindows: No result for file paths!")
|
||||
Return False
|
||||
End If
|
||||
|
||||
@@ -2907,6 +2995,7 @@ Public Class frmValidator
|
||||
|
||||
|
||||
Sub Load_Next_Document(first As Boolean)
|
||||
Dim oMilliseconts As Double
|
||||
clsPatterns.ClearControlCache() ' Cache-Invalidierung
|
||||
|
||||
Dim perfStart As DateTime = DateTime.MinValue
|
||||
@@ -2980,7 +3069,7 @@ Public Class frmValidator
|
||||
perfLastCheck = DateTime.Now
|
||||
End If
|
||||
If IsNothing(IDB_DT_DOC_DATA) Then
|
||||
MyValidationLogger.Warn("ATTENTION: IDB-Data is nothing. Check the IDB_DOC_DATA_SQL Variable Source")
|
||||
MyValidationLogger.Warn("⚠️ ATTENTION: IDB-Data is nothing. Check the IDB_DOC_DATA_SQL Variable Source")
|
||||
Exit Sub
|
||||
Else
|
||||
If IDB_DT_DOC_DATA.Rows.Count = 1 Then
|
||||
@@ -2993,10 +3082,7 @@ Public Class frmValidator
|
||||
MyValidationLogger.Info($"[PERF LND] Nach CreateWMObject/Load_IDB_DOC_DATA: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
perfLastCheck = DateTime.Now
|
||||
End If
|
||||
|
||||
Dim sql = $"UPDATE TBPM_PROFILE_FILES Set IN_WORK = 1, IN_WORK_WHEN = GETDATE(), WORK_USER = '{USER_USERNAME}' WHERE GUID = {CURRENT_DOC_GUID}"
|
||||
DatabaseFallback.ExecuteNonQueryECM(sql)
|
||||
|
||||
PRTF_PROFILE_FILES_WORK("InWork")
|
||||
If LOG_HOTSPOTS Then
|
||||
MyValidationLogger.Info($"[PERF LND] Nach IN_WORK-UPDATE: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
perfLastCheck = DateTime.Now
|
||||
@@ -3059,14 +3145,25 @@ Public Class frmValidator
|
||||
End If
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
MyValidationLogger.Info($"[PERF LND] Nach LoadDocument_DDViewer: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
oMilliseconts = (DateTime.Now - perfLastCheck).TotalMilliseconds
|
||||
If oMilliseconts > 6000 Then
|
||||
MyValidationLogger.Warn($"[PERF LND] ⚠️ LoadDocument_DDViewer lasted far to long: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
Else
|
||||
MyValidationLogger.Info($"[PERF LND] Nach LoadDocument_DDViewer: {oMilliseconts}ms")
|
||||
End If
|
||||
perfLastCheck = DateTime.Now
|
||||
End If
|
||||
|
||||
FillIndexValues(first)
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
MyValidationLogger.Info($"[PERF LND] Nach FillIndexValues: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
oMilliseconts = (DateTime.Now - perfLastCheck).TotalMilliseconds
|
||||
If oMilliseconts > 6000 Then
|
||||
MyValidationLogger.Warn($"[PERF LND] ⚠️ FillIndexValues lasted far to long: {oMilliseconts}ms")
|
||||
Else
|
||||
MyValidationLogger.Info($"[PERF LND] Nach FillIndexValues: {oMilliseconts}ms")
|
||||
End If
|
||||
|
||||
perfLastCheck = DateTime.Now
|
||||
End If
|
||||
|
||||
@@ -3182,7 +3279,13 @@ Public Class frmValidator
|
||||
MyValidationLogger.Error(ex)
|
||||
End Try
|
||||
If LOG_HOTSPOTS Then
|
||||
MyValidationLogger.Info($"[PERF LND] Nach Show_WF_Messages: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
oMilliseconts = (DateTime.Now - perfLastCheck).TotalMilliseconds
|
||||
If oMilliseconts > 6000 Then
|
||||
MyValidationLogger.Warn($"[PERF LND] ⚠️ Show_WF_Messages lasted far to long: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
Else
|
||||
MyValidationLogger.Info($"[PERF LND] Nach Show_WF_Messages: {(DateTime.Now - perfLastCheck).TotalMilliseconds}ms")
|
||||
End If
|
||||
|
||||
perfLastCheck = DateTime.Now
|
||||
End If
|
||||
Controls2B_EnDisabled()
|
||||
@@ -3260,7 +3363,7 @@ Public Class frmValidator
|
||||
End Try
|
||||
If ActiveWorkflowType = ConstAHWorkflow_BlindFile Or PROFILE_SHOW_DOCUMENT = False Then
|
||||
If PROFILE_SHOW_DOCUMENT = False And ActiveWorkflowType <> ConstAHWorkflow_BlindFile Then
|
||||
MyValidationLogger.Warn("PROFILE_SHOW_DOCUMENT = False - DocumentViewer won't be displayed. Configuration error?")
|
||||
MyValidationLogger.Warn("⚠️ PROFILE_SHOW_DOCUMENT = False - DocumentViewer won't be displayed. Configuration error?")
|
||||
End If
|
||||
SplitContainer1.Panel2Collapsed = True
|
||||
If Not IsNothing(DocumentViewer1) Then
|
||||
@@ -3280,6 +3383,7 @@ Public Class frmValidator
|
||||
' Load Document in Document Viewer
|
||||
Dim oFileName = $"{CURRENT_DOC_ID}.{Current_Document.Extension}"
|
||||
If Not IsNothing(DocumentViewer1) Then
|
||||
MyValidationLogger.Info("LoadDocument_DDViewer - Current_Document.FullPath: " & Current_Document.FullPath)
|
||||
If (OPERATION_MODE_FS = ClassConstants.OpModeFS_PWM Or OPERATION_MODE_FS = ClassConstants.OpModeFS_IDBWM) Then
|
||||
DocumentViewer1.LoadFile_FromPath(Current_Document.FullPath)
|
||||
'Erstmal auskommentiert
|
||||
@@ -3617,17 +3721,26 @@ Public Class frmValidator
|
||||
Dim oIndexName As String
|
||||
Dim oControName As String
|
||||
Dim oIDBOverride As Boolean = False
|
||||
|
||||
Try
|
||||
' ========== OPTIMIERUNG 1: Einmalige Gruppierung ==========
|
||||
Dim columnsByControl As Dictionary(Of Integer, DataTable) = Nothing
|
||||
If DT_COLUMNS_GRID IsNot Nothing AndAlso DT_COLUMNS_GRID.Rows.Count > 0 Then
|
||||
columnsByControl = New Dictionary(Of Integer, DataTable)()
|
||||
|
||||
For Each groupRow In DT_COLUMNS_GRID.AsEnumerable().GroupBy(Function(r) r.Field(Of Integer)("CONTROL_ID"))
|
||||
Dim controlId As Integer = groupRow.Key
|
||||
Dim dt = groupRow.OrderBy(Function(r) r.Field(Of Integer)("SEQUENCE")).CopyToDataTable()
|
||||
columnsByControl(controlId) = dt
|
||||
Next
|
||||
End If
|
||||
' ========== ENDE OPTIMIERUNG ==========
|
||||
|
||||
|
||||
|
||||
If DTVWCONTROL_INDEX.Rows.Count > 0 Then
|
||||
Dim oCount As Integer = 0
|
||||
For Each oControl As Control In Me.PanelValidatorControl.Controls
|
||||
'If SingleAttribute <> "" Then
|
||||
' oIDBOverride = True
|
||||
' If SingleAttribute <> oControl.Name Then
|
||||
' Continue For
|
||||
' End If
|
||||
'End If
|
||||
|
||||
Dim oValueFromSource
|
||||
Dim oFormattedValue As String = ""
|
||||
Dim oControlId = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid
|
||||
@@ -3859,8 +3972,17 @@ Public Class frmValidator
|
||||
If LOG_PERF Then PerformanceLogger.Info("FillIndexValues/GridControl")
|
||||
|
||||
oControlType = "DevExpress.XtraGrid.GridControl"
|
||||
Dim oMyGridControl As GridControl = oControl
|
||||
Dim oDTColumnsPerDevExGrid As DataTable = DT_COLUMNS_GRID.Clone()
|
||||
Dim oMyGridControl As GridControl = oControl '
|
||||
' ========== OPTIMIERUNG: Dictionary-Lookup statt Select() ==========
|
||||
Dim oDTColumnsPerDevExGrid As DataTable = Nothing
|
||||
If columnsByControl IsNot Nothing AndAlso columnsByControl.TryGetValue(oControlId, oDTColumnsPerDevExGrid) Then
|
||||
MyValidationLogger.Debug($"Grid [{oControl.Name}]: {oDTColumnsPerDevExGrid.Rows.Count} Spalten aus Cache geladen")
|
||||
Else
|
||||
' Fallback (sollte nicht auftreten)
|
||||
oDTColumnsPerDevExGrid = DT_COLUMNS_GRID.Clone()
|
||||
MyValidationLogger.Warn($"Grid [{oControl.Name}]: Keine Spalten-Definition gefunden!")
|
||||
End If
|
||||
' ========== ENDE OPTIMIERUNG ==========
|
||||
Try
|
||||
|
||||
If oSourceIndexName = "" Then
|
||||
@@ -3885,8 +4007,8 @@ Public Class frmValidator
|
||||
Select Case oTyp
|
||||
'Tabellendarstellung
|
||||
Case "TABLE"
|
||||
Dim oExpression = $"CONTROL_ID = {oControlId}"
|
||||
DT_COLUMNS_GRID.Select(oExpression, "SEQUENCE").CopyToDataTable(oDTColumnsPerDevExGrid, LoadOption.PreserveChanges)
|
||||
'Dim oExpression = $"CONTROL_ID = {oControlId}"
|
||||
'DT_COLUMNS_GRID.Select(oExpression, "SEQUENCE").CopyToDataTable(oDTColumnsPerDevExGrid, LoadOption.PreserveChanges)
|
||||
|
||||
Dim oColValuesfromSource As String()
|
||||
MyValidationLogger.Debug($"DevExpressGrid: {oDTColumnsPerDevExGrid.Rows.Count} Columns configured for control {oControlId}.")
|
||||
@@ -3927,7 +4049,7 @@ Public Class frmValidator
|
||||
End If
|
||||
Catch ex As Exception
|
||||
' Ausführliches Logging bei Fehlern inkl. aktuell bekannter Metadaten
|
||||
MyValidationLogger.Warn("Grid row assign FAILED RowIdx = {0}, ColIdx={1}, ColName={2}, ColType={3}, RawValue=[{4}]",
|
||||
MyValidationLogger.Warn("⚠️ Grid row assign FAILED RowIdx = {0}, ColIdx={1}, ColName={2}, ColType={3}, RawValue=[{4}]",
|
||||
oDataSource.Rows.Count, index, colName, colType, rawValue)
|
||||
MyValidationLogger.Error(ex)
|
||||
' Optional: weitere Kontexthilfe – z.B. ob Spalte DBNull erlaubt
|
||||
@@ -3951,7 +4073,7 @@ Public Class frmValidator
|
||||
|
||||
oColValuesfromSource = Split(oValueFromSource.ToString, PMDelimiter)
|
||||
If oColValuesfromSource.Length > 8 Then
|
||||
MyValidationLogger.Warn("Fill Grid Error - Max 8 columns can be configured!")
|
||||
MyValidationLogger.Warn("⚠️ Fill Grid Error - Max 8 columns can be configured!")
|
||||
End If
|
||||
|
||||
Dim oRowData As New List(Of Object)
|
||||
@@ -3993,7 +4115,7 @@ Public Class frmValidator
|
||||
oColValuesfromSource = Split(oRow.Item(0).ToString, PMDelimiter)
|
||||
|
||||
If oColValuesfromSource.Length > 8 Then
|
||||
MyValidationLogger.Warn("Fill Grid With DatatableSplit Error - Max 8 columns can be configured!")
|
||||
MyValidationLogger.Warn("⚠️ Fill Grid With DatatableSplit Error - Max 8 columns can be configured!")
|
||||
End If
|
||||
MyValidationLogger.Debug($"oColValuesfromSource splitted - Length ({oColValuesfromSource.Length.ToString})")
|
||||
Dim oRowData As New List(Of Object)
|
||||
@@ -4050,23 +4172,22 @@ Public Class frmValidator
|
||||
End If
|
||||
End If
|
||||
Try
|
||||
'Dim oFilteredDatatable As DataTable = DTGRID_COLUMNS.Clone()
|
||||
'Dim oExpression = $"CONTROL_ID = {oControlRow.Item("GUID")}"
|
||||
'DTGRID_COLUMNS.Select(oExpression, "SEQUENCE").CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges)
|
||||
Dim oMyGridView As DevExpress.XtraGrid.Views.Grid.GridView = oMyGridControl.MainView
|
||||
oMyGridView.OptionsView.ColumnAutoWidth = False
|
||||
'AddHandler oMyGridView.ColumnWidthChanged, AddressOf GridControlColumnWidthChanged
|
||||
For Each oRow As DataRow In oDTColumnsPerDevExGrid.Rows
|
||||
For Each oActGridColumn As DevExpress.XtraGrid.Columns.GridColumn In oMyGridView.Columns
|
||||
Dim oGridDXFieldName = oActGridColumn.FieldName
|
||||
Dim GridDXColumnEditName = oActGridColumn.ColumnEditName
|
||||
If oRow.Item("SPALTENNAME") = oGridDXFieldName Then
|
||||
oActGridColumn.Width = oRow.Item("SPALTENBREITE")
|
||||
Exit For
|
||||
End If
|
||||
|
||||
' ========== OPTIMIERUNG: Dictionary statt doppelter Loop ==========
|
||||
If oDTColumnsPerDevExGrid IsNot Nothing AndAlso oDTColumnsPerDevExGrid.Rows.Count > 0 Then
|
||||
Dim columnsByName = oMyGridView.Columns.Cast(Of GridColumn)().ToDictionary(Function(c) c.FieldName, StringComparer.OrdinalIgnoreCase)
|
||||
For Each oRow As DataRow In oDTColumnsPerDevExGrid.Rows
|
||||
Dim columnName = oRow.Item("SPALTENNAME").ToString()
|
||||
Dim column As GridColumn = Nothing
|
||||
|
||||
If columnsByName.TryGetValue(columnName, column) Then
|
||||
column.Width = oRow.Item("SPALTENBREITE")
|
||||
End If
|
||||
Next
|
||||
Next
|
||||
End If
|
||||
' ========== ENDE OPTIMIERUNG ==========
|
||||
Dim i = 0
|
||||
|
||||
' RestoreDevExpressGridControl_Layout(CURRENT_CLICKED_PROFILE_ID, oControlId, oMyGridView)
|
||||
@@ -4813,7 +4934,7 @@ Public Class frmValidator
|
||||
' End If
|
||||
'End If
|
||||
Else
|
||||
MyValidationLogger.Warn("ATTENTION: DYNAMIC VALUE IS NOTHING!")
|
||||
MyValidationLogger.Warn("⚠️ ATTENTION: DYNAMIC VALUE IS NOTHING!")
|
||||
Continue For
|
||||
End If
|
||||
End If
|
||||
@@ -4865,7 +4986,7 @@ Public Class frmValidator
|
||||
MyValidationLogger.Debug("...as single 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)
|
||||
MyValidationLogger.Warn("Something went wrong while final-indexing")
|
||||
MyValidationLogger.Warn("⚠️ Something went wrong while final-indexing")
|
||||
Exit For
|
||||
End If
|
||||
Dim oFIResult As Boolean = False
|
||||
@@ -5119,7 +5240,7 @@ Public Class frmValidator
|
||||
If oErrorOcurred = True Then
|
||||
MsgBox("Unhandled error occured in Finish Workflow-Step...Please check your log!", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
|
||||
Else
|
||||
'PRTF_PROFILE_FILES_WORK("Worked")
|
||||
PRTF_PROFILE_FILES_WORK("Worked")
|
||||
MyValidationLogger.Debug("Validation of document ended successfully!")
|
||||
Dim oPROCSQL = $"EXEC PRPM_CHECK_NEXT_WF {CURRENT_DOC_GUID}"
|
||||
If DatabaseFallback.ExecuteNonQueryECM(oPROCSQL) = False Then
|
||||
@@ -5645,7 +5766,7 @@ Public Class frmValidator
|
||||
MyValidationLogger.Error(ex)
|
||||
Dim st As New StackTrace(True)
|
||||
st = New StackTrace(ex, True)
|
||||
MyValidationLogger.Warn("Unexpected error in Check_UpdateIndexe TextBox :" & ex.Message, True)
|
||||
MyValidationLogger.Warn("⚠️ Unexpected error in Check_UpdateIndexe TextBox :" & ex.Message, True)
|
||||
OpenfrmError(oErrMsgMissingInput)
|
||||
|
||||
' Nach Fehler: Dirty-Flag zurücksetzen
|
||||
@@ -6018,7 +6139,7 @@ Public Class frmValidator
|
||||
Next ' End For Each oControl
|
||||
|
||||
If oMissing = True Then
|
||||
MyValidationLogger.Warn("Check_UpdateIndexe: ERROR or Missing Indexing - returning False")
|
||||
MyValidationLogger.Warn("⚠️ Check_UpdateIndexe: ERROR or Missing Indexing - returning False")
|
||||
Return False
|
||||
Else
|
||||
MyValidationLogger.Debug("Check_UpdateIndexe: Everything OK - returning True")
|
||||
@@ -6290,8 +6411,8 @@ Public Class frmValidator
|
||||
|
||||
Try
|
||||
MyValidationLogger.Debug("Skipping document....(Datei_ueberspringen)")
|
||||
|
||||
Dim oSQL = $"UPDATE TBPM_PROFILE_FILES SET IN_WORK = 0, IN_WORK_WHEN = NULL, WORK_USER = NULL WHERE GUID = {CURRENT_DOC_GUID};" & vbNewLine &
|
||||
Dim oPRoc = String.Format("EXEC PRTF_PROFILE_FILES_WORK {0},{1},{2},{3}", CURRENT_DOC_ID, CURRENT_ProfilGUID, USER_ID, "FreeFile")
|
||||
Dim oSQL = oPRoc & vbNewLine &
|
||||
$"EXECUTE PRPM_FILES_NOT_INDEXED '{USER_USERNAME}',{CURRENT_ProfilGUID},'{WMDocPathWindows}',{CURRENT_DOC_GUID};"
|
||||
|
||||
DatabaseFallback.ExecuteNonQueryECM(oSQL)
|
||||
@@ -6692,7 +6813,7 @@ Public Class frmValidator
|
||||
|
||||
Dim oConverter As New PDFConverter(LOGCONFIG)
|
||||
If oConverter.ConvertPDFADocumentToPDFDocument(WMDocPathWindows, oTempFullFilename) = False Then
|
||||
MyValidationLogger.Warn("File [{0}] could not be converted to plain PDF!", WMDocPathWindows)
|
||||
MyValidationLogger.Warn("⚠️ File [{0}] could not be converted to plain PDF!", WMDocPathWindows)
|
||||
oFile2Export = WMDocPathWindows
|
||||
Else
|
||||
MyValidationLogger.Info("File [{0}] successfully converted to plain PDF!", oTempFullFilename)
|
||||
@@ -6700,11 +6821,11 @@ Public Class frmValidator
|
||||
oFile2Export = oTempFullFilename
|
||||
End If
|
||||
Else
|
||||
MyValidationLogger.Warn("No converting as File [{0}] not ending with pdf [{1}]", WMDocPathWindows, oExtension.ToLower)
|
||||
MyValidationLogger.Warn("⚠️ No converting as File [{0}] not ending with pdf [{1}]", WMDocPathWindows, oExtension.ToLower)
|
||||
oFile2Export = WMDocPathWindows
|
||||
End If
|
||||
Else
|
||||
MyValidationLogger.Warn("No converting as barbtnitmExport.Tag.ToString <> Convert to PDF")
|
||||
MyValidationLogger.Warn("⚠️ No converting as barbtnitmExport.Tag.ToString <> Convert to PDF")
|
||||
oFile2Export = WMDocPathWindows
|
||||
End If
|
||||
Else
|
||||
|
||||
@@ -442,7 +442,7 @@ Public Class frmValidatorSearch
|
||||
.ShowSettingButton = True
|
||||
})
|
||||
Catch ex As Exception
|
||||
LOGGER.Warn("Error initializing DocViewDocsValdiatorSearch: " & ex.Message)
|
||||
LOGGER.Warn("⚠️ Error initializing DocViewDocsValdiatorSearch: " & ex.Message)
|
||||
End Try
|
||||
|
||||
OperationMode = GetOperationMode()
|
||||
@@ -631,7 +631,7 @@ Public Class frmValidatorSearch
|
||||
End If
|
||||
|
||||
Else
|
||||
LOGGER.Warn("Attention: RESULT_DOC_PATH is nothing")
|
||||
LOGGER.Warn("⚠️ Attention: RESULT_DOC_PATH is nothing")
|
||||
End If
|
||||
Catch ex As Exception
|
||||
MsgBox("Unexpected Error in File_SYSOPEN:" & vbNewLine & ex.Message & vbNewLine & RESULT_DOC_PATH & vbNewLine & "DocID: " & DocID, MsgBoxStyle.Critical)
|
||||
|
||||
@@ -1078,7 +1078,6 @@
|
||||
<None Include="FinalIndexDataSet.xss">
|
||||
<DependentUpon>FinalIndexDataSet.xsd</DependentUpon>
|
||||
</None>
|
||||
<None Include="frmValidator.v" />
|
||||
<None Include="My Project\app.manifest" />
|
||||
<None Include="My Project\Application.myapp">
|
||||
<Generator>MyApplicationCodeGenerator</Generator>
|
||||
|
||||
Reference in New Issue
Block a user