diff --git a/app/TaskFlow/App.config b/app/TaskFlow/App.config
index 6b99ad9..7f1f817 100644
--- a/app/TaskFlow/App.config
+++ b/app/TaskFlow/App.config
@@ -102,8 +102,7 @@
-
+
diff --git a/app/TaskFlow/ClassConfig.vb b/app/TaskFlow/ClassConfig.vb
index f60faf7..70b53ac 100644
--- a/app/TaskFlow/ClassConfig.vb
+++ b/app/TaskFlow/ClassConfig.vb
@@ -22,6 +22,7 @@ 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 = "~"
@@ -51,4 +52,9 @@ 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
diff --git a/app/TaskFlow/ClassParamRefresh.vb b/app/TaskFlow/ClassParamRefresh.vb
index 04efa2c..042aaf4 100644
--- a/app/TaskFlow/ClassParamRefresh.vb
+++ b/app/TaskFlow/ClassParamRefresh.vb
@@ -219,6 +219,25 @@ Public Class ClassParamRefresh
Catch ex As Exception
TITLE_NOTIFICATIONS = ""
End Try
+ ElseIf oMode.StartsWith("TF.InheritanceMsgAmount") Then
+ Dim oParam = oMode.Replace("TF.InheritanceMsgAmount=", "")
+ Try
+ InheritanceMsgAmount = oParam
+ Catch ex As Exception
+
+ End Try
+ ElseIf oMode.StartsWith("TF.InheritanceCalcReset") Then
+ Dim oParam = oMode.Replace("TF.InheritanceCalcReset=", "")
+ Try
+ If CBool(oParam) = True Then
+ LOGGER.Info("InheritanceMsgAmount wird auf 0 zurückgesetzt")
+
+ CONFIG.Config.UserInheritance_ConfirmationByColumn = Nothing
+ CONFIG.Save()
+ End If
+ Catch ex As Exception
+
+ End Try
ElseIf oMode.StartsWith("PM.START_CW") Then
Dim oAfterReplace = oMode.Replace("PM.START_CW=", "")
Try
diff --git a/app/TaskFlow/ControlCreator/GridControl.vb b/app/TaskFlow/ControlCreator/GridControl.vb
index 10bece9..7e679f6 100644
--- a/app/TaskFlow/ControlCreator/GridControl.vb
+++ b/app/TaskFlow/ControlCreator/GridControl.vb
@@ -15,6 +15,7 @@ Imports System.Text.RegularExpressions
Imports System.Globalization
Imports DevExpress.Xpo.Helpers.AssociatedCollectionCriteriaHelper
Imports DevExpress.XtraEditors.Mask
+Imports System.Windows.Forms
Namespace ControlCreator
Public Class GridControl
@@ -377,10 +378,48 @@ Namespace ControlCreator
Return
End If
+ ' Benutzerbestätigung für Wertvererbung
+ Dim valueToApply = pArgs.Value
+ Dim affectedRowsCount = pView.DataRowCount - listIndex - 1
+
+ Dim confirmationEntry = GetInheritanceConfirmationEntry(pArgs.Column.FieldName)
+
+ If affectedRowsCount > 0 AndAlso confirmationEntry.Count < InheritanceMsgAmount Then
+ Dim confirmMessage As String = String.Format(
+ "Möchten Sie den Wert '{0}' an {1} nachfolgende Zeile(n) vererben?",
+ valueToApply,
+ affectedRowsCount)
+ If USER_LANGUAGE <> "de-DE" Then
+ confirmMessage = String.Format(
+ "Do you want to inherit the value '{0}' to {1} subsequent row(s)?",
+ valueToApply,
+ affectedRowsCount)
+ End If
+ Dim confirmTitle As String = "Wertevererbung bestätigen"
+ If USER_LANGUAGE <> "de-DE" Then
+ confirmTitle = "Confirm Value Inheritance"
+ End If
+ Dim result = MessageBox.Show(
+ confirmMessage,
+ confirmTitle,
+ MessageBoxButtons.YesNo,
+ MessageBoxIcon.Question,
+ MessageBoxDefaultButton.Button1)
+
+ If result <> DialogResult.Yes Then
+ _Logger.Debug("User cancelled value inheritance")
+ Return
+ End If
+
+ confirmationEntry.Count += 1
+ CONFIG.Save()
+ _Logger.Info("User confirmed value inheritance. Confirmation count: {0}", confirmationEntry.Count)
+ ElseIf affectedRowsCount > 0 Then
+ _Logger.Info("Skipping confirmation dialog (already confirmed {0} times)", confirmationEntry.Count)
+ End If
isApplyingInheritedValue = True
Try
- Dim valueToApply = pArgs.Value
- _Logger.Debug(String.Format("Inherit Value is active for column. So inheritting the value [{0}]...", valueToApply))
+ _Logger.Info(String.Format("Inherit Value is active for column. So inheritting the value [{0}]...", valueToApply))
For dataIndex As Integer = listIndex + 1 To pView.DataRowCount - 1
Dim targetHandle = pView.GetRowHandle(dataIndex)
If targetHandle = DevExpress.XtraGrid.GridControl.InvalidRowHandle OrElse pView.IsGroupRow(targetHandle) Then
@@ -402,6 +441,25 @@ Namespace ControlCreator
isApplyingInheritedValue = False
End Try
End Sub
+
+ Private Function GetInheritanceConfirmationEntry(columnName As String) As ClassConfig.UserInheritanceConfirmation
+ Dim entries = CONFIG.Config.UserInheritance_ConfirmationByColumn
+ If entries Is Nothing Then
+ entries = New List(Of ClassConfig.UserInheritanceConfirmation)()
+ CONFIG.Config.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 {
+ .ColumnName = columnName,
+ .Count = 0
+ }
+ entries.Add(entry)
+ End If
+
+ Return entry
+ End Function
Private Sub View_CustomColumnDisplayText(ByVal eSender As Object, ByVal e As CustomColumnDisplayTextEventArgs)
If IsNothing(e.Value) Then
Exit Sub
@@ -423,21 +481,21 @@ Namespace ControlCreator
Dim oColumnName As String = oFocusedColumn.FieldName
If e.MenuType = GridMenuType.Column AndAlso oColumnType Is GetType(Boolean) Then
- e.Menu.Items.Add(New Menu.DXMenuItem(
+ e.Menu.Items.Add(New DevExpress.Utils.Menu.DXMenuItem(
"Alle Zeilen anhaken",
Sub(_sender As Object, _e As EventArgs)
SetCellValuesForBooleanColumn(view, oColumnName, True)
End Sub,
My.Resources.itemtypechecked,
- Menu.DXMenuItemPriority.Normal))
+ DevExpress.Utils.Menu.DXMenuItemPriority.Normal))
- e.Menu.Items.Add(New Menu.DXMenuItem(
+ e.Menu.Items.Add(New DevExpress.Utils.Menu.DXMenuItem(
"Alle Zeilen abhaken",
Sub(_sender As Object, _e As EventArgs)
SetCellValuesForBooleanColumn(view, oColumnName, False)
End Sub,
My.Resources.itemtypechecked,
- Menu.DXMenuItemPriority.Normal))
+ DevExpress.Utils.Menu.DXMenuItemPriority.Normal))
End If
End Sub
diff --git a/app/TaskFlow/ModuleRuntimeVariables.vb b/app/TaskFlow/ModuleRuntimeVariables.vb
index d7a7a27..4c5bd05 100644
--- a/app/TaskFlow/ModuleRuntimeVariables.vb
+++ b/app/TaskFlow/ModuleRuntimeVariables.vb
@@ -94,6 +94,7 @@ Module ModuleRuntimeVariables
Public Property POPUP_REMINDER_ACTIVE As Boolean = True
Public Property INACTIVITY_DURATION As Integer = 0
Public Property INACTIVITYRecognized As Boolean = False
+ Public Property InheritanceMsgAmount As Integer = 5
Public Property LAST_EDITED_COLUMN As String = "NONE"
Public Property LAST_ADDED_COLUMN As String = "NONE"
Public Property MON_EDITED_COLUMN As String = "NONE"
diff --git a/app/TaskFlow/TaskFlow.vbproj b/app/TaskFlow/TaskFlow.vbproj
index ba80ec5..12fafb7 100644
--- a/app/TaskFlow/TaskFlow.vbproj
+++ b/app/TaskFlow/TaskFlow.vbproj
@@ -1,5 +1,5 @@

-
+
Debug
@@ -151,9 +151,9 @@
False
-
+
False
- ..\..\..\..\2_DLL Projekte\DDMonorepo\Controls.DocumentViewer\bin\Debug\DigitalData.Controls.DocumentViewer.dll
+ ..\..\..\..\2_DLL Projekte\Controls.DocumentViewer\obj\Debug\DigitalData.Controls.DocumentViewer.dll
..\..\..\..\2_DLL Projekte\DDMonorepo\Controls.LookupGrid\bin\Debug\DigitalData.Controls.LookupGrid.dll
@@ -178,7 +178,7 @@
..\..\..\..\2_DLL Projekte\DDModules\Database\bin\Debug\DigitalData.Modules.Database.dll
- ..\..\..\..\2_DLL Projekte\DDModules\EDMIAPI\bin\Debug\DigitalData.Modules.EDMI.API.dll
+ P:\Projekte DIGITAL DATA\DIGITAL DATA - Entwicklung\DLL_Bibliotheken\Digital Data\DD_Modules\DigitalData.Modules.EDMI.API.dll
False
@@ -189,12 +189,15 @@
P:\Projekte DIGITAL DATA\DIGITAL DATA - Entwicklung\DLL_Bibliotheken\Digital Data\DD_Modules\DigitalData.Modules.Interfaces.dll
- ..\..\..\..\2_DLL Projekte\DDModules\License\bin\Debug\DigitalData.Modules.License.dll
+ P:\Projekte DIGITAL DATA\DIGITAL DATA - Entwicklung\DLL_Bibliotheken\Digital Data\DD_Modules\11_2025\DigitalData.Modules.License.dll
False
..\..\..\..\2_DLL Projekte\DDModules\Logging\bin\Debug\DigitalData.Modules.Logging.dll
+
+ ..\..\..\..\2_DLL Projekte\DDModules\Messaging\bin\Debug\DigitalData.Modules.Messaging.dll
+
False
..\..\..\..\2_DLL Projekte\DDModules\Patterns\bin\Debug\DigitalData.Modules.Patterns.dll
@@ -231,68 +234,95 @@
P:\Visual Studio Projekte\Bibliotheken\FormsUtils.dll
- ..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.dll
+ ..\packages\GdPicture.14.3.23\lib\net462\GdPicture.NET.14.dll
+ True
- ..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.barcode.1d.writer.dll
+ ..\packages\GdPicture.14.3.23\lib\net462\GdPicture.NET.14.barcode.1d.writer.dll
+ True
- ..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.barcode.2d.writer.dll
+ ..\packages\GdPicture.14.3.23\lib\net462\GdPicture.NET.14.barcode.2d.writer.dll
+ True
- ..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.CAD.dll
+ ..\packages\GdPicture.14.3.23\lib\net462\GdPicture.NET.14.CAD.dll
+ True
- ..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.CAD.DWG.dll
+ ..\packages\GdPicture.14.3.23\lib\net462\GdPicture.NET.14.CAD.DWG.dll
+ True
- ..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Common.dll
+ ..\packages\GdPicture.14.3.23\lib\net462\GdPicture.NET.14.Common.dll
+ True
- ..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Document.dll
+ ..\packages\GdPicture.14.3.23\lib\net462\GdPicture.NET.14.Document.dll
+ True
- ..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Email.dll
+ ..\packages\GdPicture.14.3.23\lib\net462\GdPicture.NET.14.Email.dll
+ True
- ..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.HTML.dll
+ ..\packages\GdPicture.14.3.23\lib\net462\GdPicture.NET.14.HTML.dll
+ True
- ..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Imaging.dll
+ ..\packages\GdPicture.14.3.23\lib\net462\GdPicture.NET.14.Imaging.dll
+ True
- ..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Imaging.Formats.dll
+ ..\packages\GdPicture.14.3.23\lib\net462\GdPicture.NET.14.Imaging.Formats.dll
+ True
- ..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Imaging.Formats.Conversion.dll
+ ..\packages\GdPicture.14.3.23\lib\net462\GdPicture.NET.14.Imaging.Formats.Conversion.dll
+ True
- ..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Imaging.Rendering.dll
+ ..\packages\GdPicture.14.3.23\lib\net462\GdPicture.NET.14.Imaging.Rendering.dll
+ True
+
+
+ ..\packages\GdPicture.14.3.23\lib\net462\GdPicture.NET.14.Markdown.dll
- ..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.MSOfficeBinary.dll
+ ..\packages\GdPicture.14.3.23\lib\net462\GdPicture.NET.14.MSOfficeBinary.dll
+ True
- ..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.OpenDocument.dll
+ ..\packages\GdPicture.14.3.23\lib\net462\GdPicture.NET.14.OpenDocument.dll
+ True
- ..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.OpenXML.dll
+ ..\packages\GdPicture.14.3.23\lib\net462\GdPicture.NET.14.OpenXML.dll
+ True
- ..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.OpenXML.Templating.dll
+ ..\packages\GdPicture.14.3.23\lib\net462\GdPicture.NET.14.OpenXML.Templating.dll
+ True
- ..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.PDF.dll
+ ..\packages\GdPicture.14.3.23\lib\net462\GdPicture.NET.14.PDF.dll
+ True
- ..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.RTF.dll
+ ..\packages\GdPicture.14.3.23\lib\net462\GdPicture.NET.14.RTF.dll
+ True
- ..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.SVG.dll
+ ..\packages\GdPicture.14.3.23\lib\net462\GdPicture.NET.14.SVG.dll
+ True
- ..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.wia.gateway.dll
+ ..\packages\GdPicture.14.3.23\lib\net462\GdPicture.NET.14.wia.gateway.dll
True
+ True
+
+
+ ..\packages\Google.Protobuf.3.33.2\lib\net45\Google.Protobuf.dll
P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WINDREAMLib.dll
@@ -326,6 +356,15 @@
..\packages\Microsoft.IdentityModel.Abstractions.6.22.0\lib\net461\Microsoft.IdentityModel.Abstractions.dll
+
+ ..\packages\GdPicture.14.3.23\lib\net462\NativeSDK.Exceptions.dll
+
+
+ ..\packages\GdPicture.14.3.23\lib\net462\NativeSDK.Settings.dll
+
+
+ ..\packages\GdPicture.14.3.23\lib\net462\NativeSDK.Settings.Edition.dll
+
..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll
@@ -417,6 +456,9 @@
..\packages\System.Text.Json.9.0.0\lib\net462\System.Text.Json.dll
+
+ ..\packages\System.Threading.Channels.8.0.0\lib\net462\System.Threading.Channels.dll
+
..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll
@@ -1338,10 +1380,10 @@
-
+
-
+
+
\ No newline at end of file
diff --git a/app/update_devexpress.ps1 b/app/update_devexpress.ps1
new file mode 100644
index 0000000..149569a
--- /dev/null
+++ b/app/update_devexpress.ps1
@@ -0,0 +1,35 @@
+$vbprojPath = "TaskFlow\taskFLOW.vbproj"
+$devExpressBasePath = "D:\ProgramFiles\DevExpress 21.2\Components\Bin\Framework"
+$content = Get-Content $vbprojPath -Raw
+
+# Liste aller DevExpress-Referenzen, die aktualisiert werden müssen
+$replacements = @(
+ @{
+ Old = '
+ False
+ '
+ New = '
+ False
+ D:\ProgramFiles\DevExpress 21.2\Components\Bin\Framework\DevExpress.Charts.v21.2.Core.dll
+ '
+ },
+ @{
+ Old = ' '
+ New = '
+ D:\ProgramFiles\DevExpress 21.2\Components\Bin\Framework\DevExpress.CodeParser.v21.2.dll
+ '
+ },
+ @{
+ Old = ' '
+ New = '
+ D:\ProgramFiles\DevExpress 21.2\Components\Bin\Framework\DevExpress.Data.v21.2.dll
+ '
+ }
+)
+
+foreach ($replacement in $replacements) {
+ $content = $content.Replace($replacement.Old, $replacement.New)
+}
+
+Set-Content $vbprojPath $content -NoNewline
+Write-Host "Updated DevExpress references"
diff --git a/app/update_devexpress_refs.py b/app/update_devexpress_refs.py
new file mode 100644
index 0000000..13df2ec
--- /dev/null
+++ b/app/update_devexpress_refs.py
@@ -0,0 +1,28 @@
+import re
+
+vbproj_path = r"TaskFlow\taskFLOW.vbproj"
+devexpress_base_path = r"D:\ProgramFiles\DevExpress 21.2\Components\Bin\Framework"
+
+with open(vbproj_path, 'r', encoding='utf-8') as f:
+ content = f.read()
+
+# Pattern for DevExpress references without HintPath
+pattern = r'(]*>)\s*(False)?\s*()'
+
+def replace_func(match):
+ full_ref = match.group(1)
+ dll_name = re.sub(r',.*$', '', match.group(2))
+ specific_version = match.group(3)
+ dll_filename = f"{dll_name}.dll"
+
+ if specific_version:
+ return f"{full_ref}\r\n {specific_version}\r\n {devexpress_base_path}\\{dll_filename}\r\n "
+ else:
+ return f"{full_ref}\r\n {devexpress_base_path}\\{dll_filename}\r\n "
+
+new_content = re.sub(pattern, replace_func, content)
+
+with open(vbproj_path, 'w', encoding='utf-8') as f:
+ f.write(new_content)
+
+print("DevExpress references updated successfully")