Compare commits

..

4 Commits

Author SHA1 Message Date
Developer01
a88af162b5 Vor Optimierung TreeListDevexpress_FocusedNodeChanged 2026-02-24 11:24:05 +01:00
Developer01
93645962a6 Drag and Drop Outlook und NodeNavigation Testbutton entfernt 2025-12-18 16:25:09 +01:00
Developer01
5dfa7d1421 Vor Anpassung DragDrop 365 2025-12-10 08:51:47 +01:00
Developer01
784d954441 Jumpto Record 2025-12-09 11:55:44 +01:00
9 changed files with 679 additions and 567 deletions

View File

@@ -1,181 +1,299 @@
Imports System.IO Imports System.IO
Imports Microsoft.Office.Interop Imports Microsoft.Office.Interop
Imports Microsoft.Office.Interop.Outlook
Public Class ClassDragDrop Public Class ClassDragDrop
Public Shared files_dropped As String() Public Shared files_dropped As String()
Public Shared Event FilesDroppedReady(ByVal files As String())
Public Shared Function Drop_File(e As DragEventArgs) Public Shared Function Drop_File(e As DragEventArgs)
Try Try
LOGGER.Debug("In Drop_File....") LOGGER.Debug("In Drop_File....")
files_dropped = Nothing files_dropped = New String() {}
Dim Sql As String = "DELETE FROM TBPMO_FILES_USER WHERE HANDLE_TYPE <> 'SCAN' AND USER_WORK = '" & USER_USERNAME & "'" ' WICHTIG: DB-Löschung NICHT im UI-Thread erzwingen.
MYDB_ECM.ExecuteNonQuery(sql) ' => Verschiebe in aufrufenden Code per BeginInvoke/Task.Run (siehe Kommentar unten).
' MYDB_ECM?.ExecuteNonQuery(Sql)
Dim hasOutlookUnicode As Boolean = e.Data.GetDataPresent("FileGroupDescriptorW")
Dim hasOutlookAnsi As Boolean = e.Data.GetDataPresent("FileGroupDescriptor")
Dim hasOutlookContents As Boolean = e.Data.GetDataPresent("FileContents")
Dim hasChromiumMime As Boolean = e.Data.GetDataPresent("Chromium Web Custom MIME Data Format")
Dim hasFileNameW As Boolean = e.Data.GetDataPresent("FileNameW") OrElse e.Data.GetDataPresent("FileName")
Dim hasFileDrop As Boolean = e.Data.GetDataPresent(DataFormats.FileDrop)
If e.Data.GetDataPresent(DataFormats.FileDrop) Then '1) Klassische Outlook-Attachments: Descriptor + Contents
LOGGER.Debug("Simple File Drop") If (hasOutlookUnicode OrElse hasOutlookAnsi) AndAlso hasOutlookContents Then
Dim MyFiles() As String ' ... dein bestehender Descriptor/Contents-Code ...
Dim i As Integer ' Return True wenn erfolgreich
' Assign the files to an array.
MyFiles = e.Data.GetData(DataFormats.FileDrop)
' Loop through the array and add the files to the list.
For i = 0 To MyFiles.Length - 1
LOGGER.Info("Simple FileDrop - File: " & MyFiles(i))
ReDim Preserve files_dropped(i)
files_dropped(i) = "@DROPFROMFSYSTEM@" & MyFiles(i)
' ListBox1.Items.Add(MyFiles(i))
Next
Return True
ElseIf (e.Data.GetDataPresent("FileGroupDescriptor")) AndAlso (e.Data.GetDataPresent("FileContents")) Then
'// the first step here is to get the stbFileName
'// of the attachment and
'// build a full-path name so we can store it
'// in the temporary folder
'//
'// set up to obtain the aryFileGroupDescriptor
'// and extract the file name
Dim stmInput As IO.Stream = CType(e.Data.GetData("FileGroupDescriptor"), IO.Stream)
Dim aryFileGroupDescriptor(512) As Byte ' = new byte[512]
stmInput.Read(aryFileGroupDescriptor, 0, 512)
'// used to build the stbFileName from the aryFileGroupDescriptor block
Dim stbFileName As System.Text.StringBuilder = New System.Text.StringBuilder("")
'// this trick gets the stbFileName of the passed attached file
Dim intCnt As Integer = 76
Do While aryFileGroupDescriptor(intCnt) <> 0
stbFileName.Append(Convert.ToChar(aryFileGroupDescriptor(intCnt), System.Globalization.CultureInfo.CreateSpecificCulture("de-DE")))
intCnt += 1
Loop
stmInput.Close()
Dim anhaenge = e.Data.GetDataPresent("FileContents")
'Dim path As String = "C:\VBProjekte\Dateien"
'// put the zip file into the temp directory
Dim strOutFile As String = Path.GetTempPath() & stbFileName.ToString()
'// create the full-path name
'//
'// Second step: we have the file name.
'// Now we need to get the actual raw
'// data for the attached file and copy it to disk so we work on it.
'//
'// get the actual raw file into memory
Dim msInput As IO.MemoryStream = CType(e.Data.GetData("FileContents", True), IO.MemoryStream) 'This returns nothing for an Email
If msInput Is Nothing = False Then
LOGGER.Debug("Drag of Outlook Attachment")
'// allocate enough bytes to hold the raw date
Dim aryFileBytes(CType(msInput.Length, Int32)) As Byte
'// set starting position at first byte and read in the raw data
msInput.Position = 0
msInput.Read(aryFileBytes, 0, CType(msInput.Length, Int32))
'// create a file and save the raw zip file to it
Dim fsOutput As IO.FileStream = New IO.FileStream(strOutFile, IO.FileMode.Create) ';
fsOutput.Write(aryFileBytes, 0, aryFileBytes.Length)
fsOutput.Close() ' // close the file
Dim resultVersion = ClassHelper.Versionierung_Datei(strOutFile)
If resultVersion <> "" Then
strOutFile = resultVersion
End If
Dim finTemp As IO.FileInfo = New IO.FileInfo(strOutFile)
'// always good to make sure we actually created the file
If (finTemp.Exists = True) Then
ReDim Preserve files_dropped(0)
files_dropped(0) = "@OUTLOOK_ATTACHMENT@" & strOutFile
LOGGER.Debug("Drop an Attachment - File: " & strOutFile)
Return True
Else
LOGGER.Warn("Attachment File from Outlook could not be created")
End If
Else
LOGGER.Warn("No simple drag and drop.", True)
For Each fmt As String In e.Data.GetFormats()
' Output format name and type
LOGGER.Warn("e.Data is: " & fmt + " (" +
e.Data.GetData(fmt).ToString() + ")", True)
Next
End If
End If End If
If e.Data.GetDataPresent("FileGroupDescriptor") Then
Dim oApp '2) ATTACHMENT oder komplette Mail aus Outlook/WebView2: KEIN Descriptor+Contents, ABER FileDrop vorhanden
' => zuerst FileDrop verarbeiten. Wenn leer (delayed rendering), dann Fallback über Outlook COM Selection/Inspector
If hasFileDrop AndAlso (hasChromiumMime OrElse hasFileNameW) AndAlso Not hasOutlookContents Then
LOGGER?.Debug("WebView2/Outlook Attachment or Mail: try FileDrop, skip Outlook COM initially")
Dim ok As Boolean = HandleFileDrop(e)
If ok Then Return True
' FileDrop leer -> Fallback: versuche ausgewählte Mail via Outlook COM zu speichern
LOGGER?.Warn("FileDrop vorhanden, aber leer. Fallback auf Outlook COM für komplette Mail.")
ScheduleOutlookComFallback()
Return True ' Wichtig: UI-Thread nicht blockieren; wir verarbeiten asynchron.
End If
'3) Outlook Mail (.msg): Descriptor ohne Contents ODER Chromium/WebView2 Indikatoren nur wenn KEIN FileDrop vorhanden
If Not hasFileDrop AndAlso ((hasOutlookAnsi OrElse hasOutlookUnicode) OrElse hasChromiumMime OrElse hasFileNameW) Then
Try Try
oApp = New Outlook.Application() Dim oApp As Outlook.Application = Nothing
Catch ex As Exception
MsgBox("Unexpected error in Initialisieren von Outlook-API:" & vbNewLine & ex.Message & vbNewLine & vbNewLine & "Evtl ist Outlook nicht in der dafür vorgesehenen For")
Return False
End Try
LOGGER.Debug("Drop of msg")
'supports a drop of a Outlook message
Dim myobj As Object
For i As Integer = 1 To oApp.ActiveExplorer.Selection.Count
myobj = oApp.ActiveExplorer.Selection.Item(i)
Dim subj As String = myobj.Subject
If subj = "" Then
subj = "NO_SUBJECT"
End If
If subj.Contains("\") Then
subj = subj.Replace("\", "-")
End If
If subj.Contains("/") Then
subj = subj.Replace("/", "-")
End If
'hardcode a destination path for testing
Dim strFile As String = IO.Path.Combine(Path.GetTempPath, (subj + ".msg").Replace(":", ""))
strFile = strFile.Replace("?", "")
strFile = strFile.Replace("!", "")
strFile = strFile.Replace("%", "")
strFile = strFile.Replace("$", "")
LOGGER.Info("Drop of msg - File:" & strFile)
Try Try
myobj.SaveAs(strFile) oApp = New Outlook.Application()
Catch ex As Exception Catch ex As System.Exception
MsgBox("Error in Save Email2Tempfile" & vbNewLine & ex.Message, MsgBoxStyle.Critical) MsgBox("Fehler beim Initialisieren der Outlook-API:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
Return False GoTo CheckFileDrop
End Try End Try
ReDim Preserve files_dropped(i) Dim explorer = oApp.ActiveExplorer
files_dropped(i) = "@OUTLOOK_MESSAGE@" & strFile If explorer IsNot Nothing AndAlso explorer.Selection IsNot Nothing AndAlso explorer.Selection.Count > 0 Then
Next LOGGER?.Debug("Drop of msg (Outlook Explorer Selection)")
Return True For i As Integer = 1 To explorer.Selection.Count
'Drop eines Outlook Attachments Dim myobj As Object = explorer.Selection.Item(i)
If myobj Is Nothing Then Continue For
SaveMailItemToTemp(myobj)
Next
Return True
Else
Dim inspector = oApp.ActiveInspector
If inspector IsNot Nothing AndAlso inspector.CurrentItem IsNot Nothing Then
LOGGER?.Debug("Drop of msg (ActiveInspector.CurrentItem) Fallback")
SaveMailItemToTemp(inspector.CurrentItem)
Return True
Else
LOGGER?.Warn("Outlook: Keine Auswahl im Explorer und kein ActiveInspector.CurrentItem verfügbar.")
' Namen loggen aber zurück zum FileDrop-Fallback
If hasFileNameW Then
Dim namesObj As Object = e.Data.GetData(If(e.Data.GetDataPresent("FileNameW"), "FileNameW", "FileName"), True)
Dim names As String() = TryCast(namesObj, String())
If names Is Nothing Then
Dim nameSingle As String = TryCast(namesObj, String)
If Not String.IsNullOrWhiteSpace(nameSingle) Then
LOGGER?.Warn("Vorgeschlagener Name (ohne Inhalt): " & nameSingle)
End If
Else
LOGGER?.Warn("Vorgeschlagene Namen (ohne Inhalt): " & String.Join("; ", names))
End If
End If
GoTo CheckFileDrop
End If
End If
Catch ex As System.Exception
LOGGER?.Warn("Outlook MSG-Drop Fehler: " & ex.Message)
End Try
End If End If
Catch ex As Exception CheckFileDrop:
'4) Filesystem FileDrop (klassisch ODER WebView2 delayed rendering)
If hasFileDrop Then
If HandleFileDrop(e) Then Return True
ScheduleOutlookComFallback()
Return True
End If
'5) SCAN-StringFormat
If e.Data.GetDataPresent(DataFormats.StringFormat) Then
Dim Wert As String = TryCast(e.Data.GetData(DataFormats.StringFormat), String)
If Not String.IsNullOrEmpty(Wert) Then
Dim idx As Integer = files_dropped.Length
ReDim Preserve files_dropped(idx)
files_dropped(idx) = "@SCAN@" & Wert
Return True
End If
End If
Catch ex As System.Exception
MsgBox("Unexpected Error in Drop_File: " & ex.Message, MsgBoxStyle.Critical) MsgBox("Unexpected Error in Drop_File: " & ex.Message, MsgBoxStyle.Critical)
End Try End Try
If e.Data.GetDataPresent(DataFormats.StringFormat) Then
Dim Wert As String = CType(e.Data.GetData(DataFormats.StringFormat), Object) LOGGER?.Warn("Drop_File: Kein extrahierbarer Inhalt. Bitte Attachment aus der Nachrichtenliste ziehen oder zunächst speichern.")
Console.WriteLine(Wert) Return False
ReDim Preserve files_dropped(0)
files_dropped(0) = "@SCAN@" & Wert
Return True
End If
End Function End Function
' FileDrop defensiv behandeln erst ohne, dann mit autoConvert
Private Shared Function HandleFileDrop(e As DragEventArgs) As Boolean
Try
' Versuch1: ohne AutoConvert
Dim rawObj As Object = e.Data.GetData(DataFormats.FileDrop)
Dim rawFiles As String() = TryCast(rawObj, String())
If Not (rawFiles Is Nothing OrElse rawFiles.Length = 0) Then
For Each f In rawFiles
LOGGER?.Info("FileDrop (raw) - File: " & f)
AppendDroppedFile("@DROPFROMFSYSTEM@", f)
Next
Return True
End If
' Versuch2: mit AutoConvert (delayed rendering)
Dim convObj As Object = e.Data.GetData(DataFormats.FileDrop, True)
Dim convFiles As String() = TryCast(convObj, String())
If Not (convFiles Is Nothing OrElse convFiles.Length = 0) Then
For Each f In convFiles
LOGGER?.Info("FileDrop (autoConvert) - File: " & f)
AppendDroppedFile("@DROPFROMFSYSTEM@", f)
Next
Return True
End If
LOGGER?.Warn("FileDrop vorhanden, aber keine Dateien (raw/autoConvert leer).")
Return False
Catch ex As System.Exception
LOGGER?.Warn("HandleFileDrop Fehler: " & ex.Message)
Return False
End Try
End Function
Private Shared Sub AppendDroppedFile(prefix As String, filePath As String)
Dim idx As Integer = files_dropped.Length
ReDim Preserve files_dropped(idx)
files_dropped(idx) = prefix & filePath
End Sub
Private Shared Sub SaveMailItemToTemp(ByVal mailObj As Object)
Dim subj As String = ""
Try
subj = mailObj.Subject
Catch
subj = "NO_SUBJECT"
End Try
If String.IsNullOrWhiteSpace(subj) Then subj = "NO_SUBJECT"
Dim safeName = subj.Replace("\", "-").Replace("/", "-").Replace(":", "") _
.Replace("?", "").Replace("!", "").Replace("%", "").Replace("$", "")
Dim strFile As String = IO.Path.Combine(Path.GetTempPath(), safeName & ".msg")
LOGGER?.Info("Drop of msg - File:" & strFile)
Try
mailObj.SaveAs(strFile)
AppendDroppedFile("@OUTLOOK_MESSAGE@", strFile)
Catch ex As System.Exception
MsgBox("Error in Save Email2Tempfile" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
Private Shared Sub ScheduleOutlookComFallback()
Try
Dim t As New Threading.Thread(
Sub()
Try
Threading.Thread.Sleep(200)
Dim maxRetries As Integer = 10
Dim saved As Boolean = False
For attempt As Integer = 1 To maxRetries
If TrySaveSelectedMailViaOutlook() Then
LOGGER?.Info("Outlook COM Fallback: Mail gespeichert. Versuch " & attempt)
saved = True
Exit For
End If
LOGGER?.Debug("Outlook COM Fallback: Keine Auswahl, Retry " & attempt)
Threading.Thread.Sleep(200)
Next
If saved Then
' UI-Thread benachrichtigen
Dim uiForm = If(System.Windows.Forms.Application.OpenForms.Count > 0, System.Windows.Forms.Application.OpenForms(0), Nothing)
If uiForm IsNot Nothing Then
uiForm.BeginInvoke(
Sub()
Try
RaiseEvent FilesDroppedReady(files_dropped)
Catch ex2 As System.Exception
LOGGER?.Warn("FilesDroppedReady Invoke Fehler: " & ex2.Message)
End Try
End Sub)
Else
' Falls kein Form verfügbar, zumindest Event auslösen (Listener müssen ggf. selbst marshalen)
RaiseEvent FilesDroppedReady(files_dropped)
End If
Else
LOGGER?.Warn("Outlook COM Fallback: Nach Retries keine Mail gespeichert.")
End If
Catch ex As System.Exception
LOGGER?.Warn("Outlook COM Fallback Thread Fehler: " & ex.Message)
End Try
End Sub
)
t.IsBackground = True
t.SetApartmentState(Threading.ApartmentState.STA)
t.Start()
Catch ex As System.Exception
LOGGER?.Warn("ScheduleOutlookComFallback Fehler: " & ex.Message)
End Try
End Sub
Private Shared Function TrySaveSelectedMailViaOutlook() As Boolean
Try
Dim oApp As Outlook.Application = Nothing
Try
oApp = New Outlook.Application()
Catch ex As System.Exception
LOGGER?.Warn("Outlook COM Init fehlgeschlagen: " & ex.Message)
Return False
End Try
Dim savedAny As Boolean = False
Dim inspector = oApp.ActiveInspector
If inspector IsNot Nothing AndAlso inspector.CurrentItem IsNot Nothing Then
LOGGER?.Debug("Fallback: ActiveInspector.CurrentItem speichern")
SaveMailItemToTemp(inspector.CurrentItem)
savedAny = True
End If
If Not savedAny Then
Dim explorer = oApp.ActiveExplorer
If explorer IsNot Nothing AndAlso explorer.Selection IsNot Nothing AndAlso explorer.Selection.Count > 0 Then
LOGGER?.Debug("Fallback: Explorer.Selection speichern")
For i As Integer = 1 To explorer.Selection.Count
Dim myobj As Object = explorer.Selection.Item(i)
If myobj Is Nothing Then Continue For
SaveMailItemToTemp(myobj)
savedAny = True
Next
End If
End If
Return savedAny
Catch ex As System.Exception
LOGGER?.Warn("TrySaveSelectedMailViaOutlook Fehler: " & ex.Message)
Return False
End Try
End Function
Public Shared Sub Drag_enter(e As DragEventArgs) Public Shared Sub Drag_enter(e As DragEventArgs)
Try Try
My.Settings.WD_INDEXDOKART_SAVE = "" My.Settings.WD_INDEXDOKART_SAVE = ""
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
e.Effect = DragDropEffects.All Dim hasOutlookUnicode As Boolean = e.Data.GetDataPresent("FileGroupDescriptorW")
LOGGER.Debug("DragEnter ... SimpleFileDrop") Dim hasOutlookAnsi As Boolean = e.Data.GetDataPresent("FileGroupDescriptor")
'frmForm_Constructor_Main_2.tslblStatusMain_show(True, "DragEnter ... SimpleFileDrop") Dim hasOutlookDescriptor As Boolean = hasOutlookUnicode OrElse hasOutlookAnsi
ElseIf (e.Data.GetDataPresent("FileGroupDescriptor")) AndAlso (e.Data.GetDataPresent("FileContents")) Then
Dim hasChromiumMime As Boolean = e.Data.GetDataPresent("Chromium Web Custom MIME Data Format")
Dim hasFileNameW As Boolean = e.Data.GetDataPresent("FileNameW") OrElse e.Data.GetDataPresent("FileName")
Dim hasOutlookLike As Boolean = hasOutlookDescriptor OrElse hasChromiumMime OrElse hasFileNameW
Dim hasFileDrop As Boolean = e.Data.GetDataPresent(DataFormats.FileDrop)
If hasOutlookLike Then
e.Effect = DragDropEffects.Copy e.Effect = DragDropEffects.Copy
'frmForm_Constructor_Main_2.tslblStatusMain_show(True, "DragEnter ... Attachment from Outlook") LOGGER?.Debug("DragEnter ... Outlook/WebView2 erkannt (Descriptor/Chromium/FileNameW)")
LOGGER.Debug("DragEnter ... Attachment from Outlook") ElseIf hasFileDrop Then
ElseIf e.Data.GetDataPresent("FileGroupDescriptor") Then
'handle a message dragged from Outlook
e.Effect = DragDropEffects.Copy e.Effect = DragDropEffects.Copy
'frmForm_Constructor_Main_2.tslblStatusMain_show(True, "DragEnter ... OutlookMessage") LOGGER?.Debug("DragEnter ... SimpleFileDrop")
LOGGER.Debug("DragEnter ... OutlookMessage")
Else Else
'otherwise, do not handle e.Effect = DragDropEffects.None
e.Effect = DragDropEffects.Copy LOGGER?.Debug("DragEnter ... Other FileFormat")
'frmForm_Constructor.tslblStatusMain_show(True, "DragEnter ... Other FileFormat")
LOGGER.Debug("DragEnter ... Other FileFormat")
End If End If
Catch ex As Exception
LOGGER?.Debug("DragEnter Formats: " & String.Join(", ", e.Data.GetFormats()))
Catch ex As System.Exception
End Try End Try
End Sub End Sub
End Class End Class

View File

@@ -33,7 +33,7 @@
</NuGetPackageImportStamp> </NuGetPackageImportStamp>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType> <DebugType>full</DebugType>
<DefineDebug>true</DefineDebug> <DefineDebug>true</DefineDebug>
@@ -70,6 +70,27 @@
<PropertyGroup> <PropertyGroup>
<ApplicationIcon>ORGFLOW_Icon_256x256.ico</ApplicationIcon> <ApplicationIcon>ORGFLOW_Icon_256x256.ico</ApplicationIcon>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\x64\Debug\</OutputPath>
<DocumentationFile>orgFLOW.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<DefineTrace>true</DefineTrace>
<OutputPath>bin\x64\Release\</OutputPath>
<DocumentationFile>orgFLOW.xml</DocumentationFile>
<Optimize>true</Optimize>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="BouncyCastle.Cryptography, Version=2.0.0.0, Culture=neutral, PublicKeyToken=072edcf4a5328938, processorArchitecture=MSIL"> <Reference Include="BouncyCastle.Cryptography, Version=2.0.0.0, Culture=neutral, PublicKeyToken=072edcf4a5328938, processorArchitecture=MSIL">
<HintPath>..\packages\BouncyCastle.Cryptography.2.5.0\lib\net461\BouncyCastle.Cryptography.dll</HintPath> <HintPath>..\packages\BouncyCastle.Cryptography.2.5.0\lib\net461\BouncyCastle.Cryptography.dll</HintPath>
@@ -172,9 +193,9 @@
<Reference Include="DevExpress.XtraWizard.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL"> <Reference Include="DevExpress.XtraWizard.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
</Reference> </Reference>
<Reference Include="DigitalData.Controls.DocumentViewer, Version=1.9.6.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="DigitalData.Controls.DocumentViewer, Version=2.6.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\2_DLL Projekte\DDMonorepo\Controls.DocumentViewer\bin\Debug\DigitalData.Controls.DocumentViewer.dll</HintPath> <HintPath>..\..\..\..\2_DLL Projekte\Controls.DocumentViewer\bin\Debug\DigitalData.Controls.DocumentViewer.dll</HintPath>
</Reference> </Reference>
<Reference Include="DigitalData.GUIs.Common"> <Reference Include="DigitalData.GUIs.Common">
<HintPath>..\..\..\..\2_DLL Projekte\DDMonorepo\GUIs.Common\bin\Debug\DigitalData.GUIs.Common.dll</HintPath> <HintPath>..\..\..\..\2_DLL Projekte\DDMonorepo\GUIs.Common\bin\Debug\DigitalData.GUIs.Common.dll</HintPath>
@@ -1747,6 +1768,10 @@
</PropertyGroup> </PropertyGroup>
<Error Condition="!Exists('..\packages\GdPicture.runtimes.windows.14.3.3\build\net462\GdPicture.runtimes.windows.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\GdPicture.runtimes.windows.14.3.3\build\net462\GdPicture.runtimes.windows.targets'))" /> <Error Condition="!Exists('..\packages\GdPicture.runtimes.windows.14.3.3\build\net462\GdPicture.runtimes.windows.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\GdPicture.runtimes.windows.14.3.3\build\net462\GdPicture.runtimes.windows.targets'))" />
</Target> </Target>
<PropertyGroup>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets. Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild"> <Target Name="BeforeBuild">

View File

@@ -99,7 +99,7 @@ Public Class frmDocSearchResult
Refresh_DocID() Refresh_DocID()
If SplitContainerControl1.Collapsed = False Then If SplitContainerControl1.Collapsed = False Then
Dim OFilePath = ClassHelper.FORMAT_WM_PATH(SelectedFULL_FILEPATH) Dim OFilePath = ClassHelper.FORMAT_WM_PATH(SelectedFULL_FILEPATH)
DocumentViewer1.LoadFile(OFilePath) DocumentViewer1.LoadFile_FromPath(OFilePath)
End If End If
End Sub End Sub
Sub Refresh_DocID() Sub Refresh_DocID()

View File

@@ -52,6 +52,8 @@ Partial Class frmGlobalSearch
Me.BarToggleSearchCombined = New DevExpress.XtraBars.BarToggleSwitchItem() Me.BarToggleSearchCombined = New DevExpress.XtraBars.BarToggleSwitchItem()
Me.BarToggleSearchRecord = New DevExpress.XtraBars.BarToggleSwitchItem() Me.BarToggleSearchRecord = New DevExpress.XtraBars.BarToggleSwitchItem()
Me.BarToggleFulltext = New DevExpress.XtraBars.BarToggleSwitchItem() Me.BarToggleFulltext = New DevExpress.XtraBars.BarToggleSwitchItem()
Me.bbtnitmJump2Filestore = New DevExpress.XtraBars.BarButtonItem()
Me.BarButtonItem2 = New DevExpress.XtraBars.BarButtonItem()
Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage() Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageGroupRecords = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonPageGroupRecords = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
@@ -62,8 +64,6 @@ Partial Class frmGlobalSearch
Me.RibbonPage2 = New DevExpress.XtraBars.Ribbon.RibbonPage() Me.RibbonPage2 = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.DD_ECMAdmin1 = New DD_Record_Organizer.DD_ECMAdmin() Me.DD_ECMAdmin1 = New DD_Record_Organizer.DD_ECMAdmin()
Me.XtraSaveFileDialog1 = New DevExpress.XtraEditors.XtraSaveFileDialog(Me.components) Me.XtraSaveFileDialog1 = New DevExpress.XtraEditors.XtraSaveFileDialog(Me.components)
Me.BarButtonItem1 = New DevExpress.XtraBars.BarButtonItem()
Me.BarButtonItem2 = New DevExpress.XtraBars.BarButtonItem()
CType(Me.SplitContainerMain, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.SplitContainerMain, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.SplitContainerMain.Panel1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.SplitContainerMain.Panel1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainerMain.Panel1.SuspendLayout() Me.SplitContainerMain.Panel1.SuspendLayout()
@@ -223,7 +223,7 @@ Partial Class frmGlobalSearch
'RibbonControl1 'RibbonControl1
' '
Me.RibbonControl1.ExpandCollapseItem.Id = 0 Me.RibbonControl1.ExpandCollapseItem.Id = 0
Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.bsiInfo, Me.BarButtonItem3, Me.BarButtonItem4, Me.BarButtonItem6, Me.BarButtonItem7, Me.BarButtonItem8, Me.BarButtonItem9, Me.BarButtonItem10, Me.BarToggleSearchCombined, Me.BarToggleSearchRecord, Me.BarToggleFulltext, Me.BarButtonItem1, Me.BarButtonItem2}) Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.bsiInfo, Me.BarButtonItem3, Me.BarButtonItem4, Me.BarButtonItem6, Me.BarButtonItem7, Me.BarButtonItem8, Me.BarButtonItem9, Me.BarButtonItem10, Me.BarToggleSearchCombined, Me.BarToggleSearchRecord, Me.BarToggleFulltext, Me.bbtnitmJump2Filestore, Me.BarButtonItem2})
resources.ApplyResources(Me.RibbonControl1, "RibbonControl1") resources.ApplyResources(Me.RibbonControl1, "RibbonControl1")
Me.RibbonControl1.MaxItemId = 17 Me.RibbonControl1.MaxItemId = 17
Me.RibbonControl1.Name = "RibbonControl1" Me.RibbonControl1.Name = "RibbonControl1"
@@ -307,6 +307,20 @@ Partial Class frmGlobalSearch
Me.BarToggleFulltext.Id = 14 Me.BarToggleFulltext.Id = 14
Me.BarToggleFulltext.Name = "BarToggleFulltext" Me.BarToggleFulltext.Name = "BarToggleFulltext"
' '
'bbtnitmJump2Filestore
'
resources.ApplyResources(Me.bbtnitmJump2Filestore, "bbtnitmJump2Filestore")
Me.bbtnitmJump2Filestore.Id = 15
Me.bbtnitmJump2Filestore.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem1.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.bbtnitmJump2Filestore.Name = "bbtnitmJump2Filestore"
'
'BarButtonItem2
'
resources.ApplyResources(Me.BarButtonItem2, "BarButtonItem2")
Me.BarButtonItem2.Id = 16
Me.BarButtonItem2.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem2.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.BarButtonItem2.Name = "BarButtonItem2"
'
'RibbonPage1 'RibbonPage1
' '
Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RibbonPageGroupRecords, Me.RibbonPageGroupFiles, Me.RibbonPageGroupExcel, Me.RibbonPageGroup3}) Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RibbonPageGroupRecords, Me.RibbonPageGroupFiles, Me.RibbonPageGroupExcel, Me.RibbonPageGroup3})
@@ -337,7 +351,7 @@ Partial Class frmGlobalSearch
Me.RibbonPageGroupFiles.ItemLinks.Add(Me.BarButtonItem2) Me.RibbonPageGroupFiles.ItemLinks.Add(Me.BarButtonItem2)
Me.RibbonPageGroupFiles.ItemLinks.Add(Me.BarButtonItem8) Me.RibbonPageGroupFiles.ItemLinks.Add(Me.BarButtonItem8)
Me.RibbonPageGroupFiles.ItemLinks.Add(Me.BarButtonItem10) Me.RibbonPageGroupFiles.ItemLinks.Add(Me.BarButtonItem10)
Me.RibbonPageGroupFiles.ItemLinks.Add(Me.BarButtonItem1) Me.RibbonPageGroupFiles.ItemLinks.Add(Me.bbtnitmJump2Filestore)
Me.RibbonPageGroupFiles.Name = "RibbonPageGroupFiles" Me.RibbonPageGroupFiles.Name = "RibbonPageGroupFiles"
resources.ApplyResources(Me.RibbonPageGroupFiles, "RibbonPageGroupFiles") resources.ApplyResources(Me.RibbonPageGroupFiles, "RibbonPageGroupFiles")
' '
@@ -380,20 +394,6 @@ Partial Class frmGlobalSearch
Me.XtraSaveFileDialog1.FileName = "XtraSaveFileDialog1" Me.XtraSaveFileDialog1.FileName = "XtraSaveFileDialog1"
resources.ApplyResources(Me.XtraSaveFileDialog1, "XtraSaveFileDialog1") resources.ApplyResources(Me.XtraSaveFileDialog1, "XtraSaveFileDialog1")
' '
'BarButtonItem1
'
resources.ApplyResources(Me.BarButtonItem1, "BarButtonItem1")
Me.BarButtonItem1.Id = 15
Me.BarButtonItem1.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem1.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.BarButtonItem1.Name = "BarButtonItem1"
'
'BarButtonItem2
'
resources.ApplyResources(Me.BarButtonItem2, "BarButtonItem2")
Me.BarButtonItem2.Id = 16
Me.BarButtonItem2.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem2.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.BarButtonItem2.Name = "BarButtonItem2"
'
'frmGlobalSearch 'frmGlobalSearch
' '
resources.ApplyResources(Me, "$this") resources.ApplyResources(Me, "$this")
@@ -469,6 +469,6 @@ Partial Class frmGlobalSearch
Friend WithEvents BarToggleFulltext As DevExpress.XtraBars.BarToggleSwitchItem Friend WithEvents BarToggleFulltext As DevExpress.XtraBars.BarToggleSwitchItem
Friend WithEvents RibbonPageGroup3 As DevExpress.XtraBars.Ribbon.RibbonPageGroup Friend WithEvents RibbonPageGroup3 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents LabelControl1 As DevExpress.XtraEditors.LabelControl Friend WithEvents LabelControl1 As DevExpress.XtraEditors.LabelControl
Friend WithEvents BarButtonItem1 As DevExpress.XtraBars.BarButtonItem Friend WithEvents bbtnitmJump2Filestore As DevExpress.XtraBars.BarButtonItem
Friend WithEvents BarButtonItem2 As DevExpress.XtraBars.BarButtonItem Friend WithEvents BarButtonItem2 As DevExpress.XtraBars.BarButtonItem
End Class End Class

View File

@@ -123,7 +123,7 @@
</data> </data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="SplitContainerMain.Location" type="System.Drawing.Point, System.Drawing"> <data name="SplitContainerMain.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 237</value> <value>0, 248</value>
</data> </data>
<data name="GridControlRecords.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms"> <data name="GridControlRecords.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value> <value>Fill</value>
@@ -135,7 +135,7 @@
<value>orgFLOW-Datensätze</value> <value>orgFLOW-Datensätze</value>
</data> </data>
<data name="GridControlRecords.Size" type="System.Drawing.Size, System.Drawing"> <data name="GridControlRecords.Size" type="System.Drawing.Size, System.Drawing">
<value>616, 412</value> <value>616, 402</value>
</data> </data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="GridControlRecords.TabIndex" type="System.Int32, mscorlib"> <data name="GridControlRecords.TabIndex" type="System.Int32, mscorlib">
@@ -205,7 +205,7 @@
<value>Dateien</value> <value>Dateien</value>
</data> </data>
<data name="GridControlFiles.Size" type="System.Drawing.Size, System.Drawing"> <data name="GridControlFiles.Size" type="System.Drawing.Size, System.Drawing">
<value>839, 412</value> <value>841, 402</value>
</data> </data>
<data name="GridControlFiles.TabIndex" type="System.Int32, mscorlib"> <data name="GridControlFiles.TabIndex" type="System.Int32, mscorlib">
<value>4</value> <value>4</value>
@@ -232,7 +232,7 @@
<value>0, 0</value> <value>0, 0</value>
</data> </data>
<data name="ToolStripDokumente.Size" type="System.Drawing.Size, System.Drawing"> <data name="ToolStripDokumente.Size" type="System.Drawing.Size, System.Drawing">
<value>839, 25</value> <value>841, 25</value>
</data> </data>
<data name="ToolStripDokumente.TabIndex" type="System.Int32, mscorlib"> <data name="ToolStripDokumente.TabIndex" type="System.Int32, mscorlib">
<value>3</value> <value>3</value>
@@ -268,7 +268,7 @@
<value>1</value> <value>1</value>
</data> </data>
<data name="SplitContainerMain.Size" type="System.Drawing.Size, System.Drawing"> <data name="SplitContainerMain.Size" type="System.Drawing.Size, System.Drawing">
<value>1467, 437</value> <value>1467, 427</value>
</data> </data>
<data name="SplitContainerMain.TabIndex" type="System.Int32, mscorlib"> <data name="SplitContainerMain.TabIndex" type="System.Int32, mscorlib">
<value>8</value> <value>8</value>
@@ -330,78 +330,6 @@
<data name="&gt;&gt;Label1.ZOrder" xml:space="preserve"> <data name="&gt;&gt;Label1.ZOrder" xml:space="preserve">
<value>4</value> <value>4</value>
</data> </data>
<data name="&gt;&gt;LabelControl1.Name" xml:space="preserve">
<value>LabelControl1</value>
</data>
<data name="&gt;&gt;LabelControl1.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;LabelControl1.Parent" xml:space="preserve">
<value>Panel1</value>
</data>
<data name="&gt;&gt;LabelControl1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;lblFT_Irregular.Name" xml:space="preserve">
<value>lblFT_Irregular</value>
</data>
<data name="&gt;&gt;lblFT_Irregular.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblFT_Irregular.Parent" xml:space="preserve">
<value>Panel1</value>
</data>
<data name="&gt;&gt;lblFT_Irregular.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;txtSearch.Name" xml:space="preserve">
<value>txtSearch</value>
</data>
<data name="&gt;&gt;txtSearch.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;txtSearch.Parent" xml:space="preserve">
<value>Panel1</value>
</data>
<data name="&gt;&gt;txtSearch.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="&gt;&gt;Label2.Name" xml:space="preserve">
<value>Label2</value>
</data>
<data name="&gt;&gt;Label2.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;Label2.Parent" xml:space="preserve">
<value>Panel1</value>
</data>
<data name="&gt;&gt;Label2.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="Panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
</data>
<data name="Panel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 147</value>
</data>
<data name="Panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>1467, 90</value>
</data>
<data name="Panel1.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;Panel1.Name" xml:space="preserve">
<value>Panel1</value>
</data>
<data name="&gt;&gt;Panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;Panel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;Panel1.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="LabelControl1.Appearance.Font" type="System.Drawing.Font, System.Drawing"> <data name="LabelControl1.Appearance.Font" type="System.Drawing.Font, System.Drawing">
<value>Tahoma, 8.25pt, style=Italic</value> <value>Tahoma, 8.25pt, style=Italic</value>
</data> </data>
@@ -510,6 +438,30 @@
<data name="&gt;&gt;Label2.ZOrder" xml:space="preserve"> <data name="&gt;&gt;Label2.ZOrder" xml:space="preserve">
<value>3</value> <value>3</value>
</data> </data>
<data name="Panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
</data>
<data name="Panel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 158</value>
</data>
<data name="Panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>1467, 90</value>
</data>
<data name="Panel1.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;Panel1.Name" xml:space="preserve">
<value>Panel1</value>
</data>
<data name="&gt;&gt;Panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;Panel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;Panel1.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="bsiInfo.ItemAppearance.Normal.Font" type="System.Drawing.Font, System.Drawing"> <data name="bsiInfo.ItemAppearance.Normal.Font" type="System.Drawing.Font, System.Drawing">
<value>Tahoma, 8.25pt, style=Bold, Italic</value> <value>Tahoma, 8.25pt, style=Bold, Italic</value>
</data> </data>
@@ -735,7 +687,7 @@
<data name="BarToggleFulltext.Caption" xml:space="preserve"> <data name="BarToggleFulltext.Caption" xml:space="preserve">
<value>Nur in Volltext</value> <value>Nur in Volltext</value>
</data> </data>
<data name="BarButtonItem1.Caption" xml:space="preserve"> <data name="bbtnitmJump2Filestore.Caption" xml:space="preserve">
<value>Springe zu Filestore</value> <value>Springe zu Filestore</value>
</data> </data>
<data name="BarButtonItem1.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="BarButtonItem1.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
@@ -786,32 +738,17 @@
<data name="RibbonControl1.Location" type="System.Drawing.Point, System.Drawing"> <data name="RibbonControl1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value> <value>0, 0</value>
</data> </data>
<data name="RibbonPageGroup1.Text" xml:space="preserve">
<value>Aktionen</value>
</data>
<data name="RibbonPageGroupRecords.Text" xml:space="preserve">
<value>Datensatz</value>
</data>
<data name="RibbonPageGroupFiles.Text" xml:space="preserve">
<value>Datei(en)</value>
</data>
<data name="RibbonPageGroupExcel.Text" xml:space="preserve">
<value>Funktionen Tabelle</value>
</data>
<data name="RibbonPageGroup3.Text" xml:space="preserve">
<value>Suchvariante</value>
</data>
<data name="RibbonPage1.Text" xml:space="preserve"> <data name="RibbonPage1.Text" xml:space="preserve">
<value>Globale Suche</value> <value>Globale Suche</value>
</data> </data>
<data name="RibbonControl1.Size" type="System.Drawing.Size, System.Drawing"> <data name="RibbonControl1.Size" type="System.Drawing.Size, System.Drawing">
<value>1467, 147</value> <value>1467, 158</value>
</data> </data>
<data name="RibbonStatusBar1.Location" type="System.Drawing.Point, System.Drawing"> <data name="RibbonStatusBar1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 674</value> <value>0, 675</value>
</data> </data>
<data name="RibbonStatusBar1.Size" type="System.Drawing.Size, System.Drawing"> <data name="RibbonStatusBar1.Size" type="System.Drawing.Size, System.Drawing">
<value>1467, 23</value> <value>1467, 22</value>
</data> </data>
<data name="&gt;&gt;RibbonStatusBar1.Name" xml:space="preserve"> <data name="&gt;&gt;RibbonStatusBar1.Name" xml:space="preserve">
<value>RibbonStatusBar1</value> <value>RibbonStatusBar1</value>
@@ -837,6 +774,21 @@
<data name="&gt;&gt;RibbonControl1.ZOrder" xml:space="preserve"> <data name="&gt;&gt;RibbonControl1.ZOrder" xml:space="preserve">
<value>3</value> <value>3</value>
</data> </data>
<data name="RibbonPageGroup1.Text" xml:space="preserve">
<value>Aktionen</value>
</data>
<data name="RibbonPageGroupRecords.Text" xml:space="preserve">
<value>Datensatz</value>
</data>
<data name="RibbonPageGroupFiles.Text" xml:space="preserve">
<value>Datei(en)</value>
</data>
<data name="RibbonPageGroupExcel.Text" xml:space="preserve">
<value>Funktionen Tabelle</value>
</data>
<data name="RibbonPageGroup3.Text" xml:space="preserve">
<value>Suchvariante</value>
</data>
<data name="RibbonPage2.Text" xml:space="preserve"> <data name="RibbonPage2.Text" xml:space="preserve">
<value>RibbonPage2</value> <value>RibbonPage2</value>
</data> </data>
@@ -1009,6 +961,18 @@
<data name="&gt;&gt;BarToggleFulltext.Type" xml:space="preserve"> <data name="&gt;&gt;BarToggleFulltext.Type" xml:space="preserve">
<value>DevExpress.XtraBars.BarToggleSwitchItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value> <value>DevExpress.XtraBars.BarToggleSwitchItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data> </data>
<data name="&gt;&gt;bbtnitmJump2Filestore.Name" xml:space="preserve">
<value>bbtnitmJump2Filestore</value>
</data>
<data name="&gt;&gt;bbtnitmJump2Filestore.Type" xml:space="preserve">
<value>DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;BarButtonItem2.Name" xml:space="preserve">
<value>BarButtonItem2</value>
</data>
<data name="&gt;&gt;BarButtonItem2.Type" xml:space="preserve">
<value>DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;RibbonPage1.Name" xml:space="preserve"> <data name="&gt;&gt;RibbonPage1.Name" xml:space="preserve">
<value>RibbonPage1</value> <value>RibbonPage1</value>
</data> </data>
@@ -1063,18 +1027,6 @@
<data name="&gt;&gt;XtraSaveFileDialog1.Type" xml:space="preserve"> <data name="&gt;&gt;XtraSaveFileDialog1.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.XtraSaveFileDialog, DevExpress.XtraDialogs.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value> <value>DevExpress.XtraEditors.XtraSaveFileDialog, DevExpress.XtraDialogs.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data> </data>
<data name="&gt;&gt;BarButtonItem1.Name" xml:space="preserve">
<value>BarButtonItem1</value>
</data>
<data name="&gt;&gt;BarButtonItem1.Type" xml:space="preserve">
<value>DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;BarButtonItem2.Name" xml:space="preserve">
<value>BarButtonItem2</value>
</data>
<data name="&gt;&gt;BarButtonItem2.Type" xml:space="preserve">
<value>DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve"> <data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>frmGlobalSearch</value> <value>frmGlobalSearch</value>
</data> </data>

View File

@@ -289,7 +289,11 @@ Public Class frmGlobalSearch
End Function End Function
Private Sub frmSearchAllOVer_Load(sender As Object, e As EventArgs) Handles Me.Load Private Sub frmSearchAllOVer_Load(sender As Object, e As EventArgs) Handles Me.Load
If OF_FILESTORE_ENTITY = 0 Then
bbtnitmJump2Filestore.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
Else
bbtnitmJump2Filestore.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
End If
_Helper = New ClassHelper _Helper = New ClassHelper
Load_DocGrid_Layout() Load_DocGrid_Layout()
Load_RecordGrid_Layout() Load_RecordGrid_Layout()
@@ -408,7 +412,7 @@ Public Class frmGlobalSearch
End Sub End Sub
Private Sub BarButtonItem1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem1.ItemClick Private Sub BarButtonItem1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnitmJump2Filestore.ItemClick
For Each row In GridViewFiles.GetSelectedRows For Each row In GridViewFiles.GetSelectedRows
Dim SELECTED_DOC_ID = GridViewFiles.GetRowCellValue(row, "DocID") Dim SELECTED_DOC_ID = GridViewFiles.GetRowCellValue(row, "DocID")
Dim oJumpToDocSQL = String.Format("DECLARE @PID BIGINT Dim oJumpToDocSQL = String.Format("DECLARE @PID BIGINT

View File

@@ -46,15 +46,12 @@ Partial Class frmNodeNavigation
Me.tsitmDMSReadOnly = New DevExpress.XtraBars.BarStaticItem() Me.tsitmDMSReadOnly = New DevExpress.XtraBars.BarStaticItem()
Me.bsiNotification = New DevExpress.XtraBars.BarStaticItem() Me.bsiNotification = New DevExpress.XtraBars.BarStaticItem()
Me.bsiDocIDChanged = New DevExpress.XtraBars.BarStaticItem() Me.bsiDocIDChanged = New DevExpress.XtraBars.BarStaticItem()
Me.BarEditItem1 = New DevExpress.XtraBars.BarEditItem()
Me.RepositoryItemTextEdit1 = New DevExpress.XtraEditors.Repository.RepositoryItemTextEdit() Me.RepositoryItemTextEdit1 = New DevExpress.XtraEditors.Repository.RepositoryItemTextEdit()
Me.FindNode = New DevExpress.XtraBars.BarButtonItem()
Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage() Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RPGNodes = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RPGNodes = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageGroupRecord = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonPageGroupRecord = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageGroupDocResult = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonPageGroupDocResult = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageGroup2 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonStatusBar1 = New DevExpress.XtraBars.Ribbon.RibbonStatusBar() Me.RibbonStatusBar1 = New DevExpress.XtraBars.Ribbon.RibbonStatusBar()
Me.RibbonPage2 = New DevExpress.XtraBars.Ribbon.RibbonPage() Me.RibbonPage2 = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.SplitContainerTreeList = New DevExpress.XtraEditors.SplitContainerControl() Me.SplitContainerTreeList = New DevExpress.XtraEditors.SplitContainerControl()
@@ -169,7 +166,7 @@ Partial Class frmNodeNavigation
'ribbonNodeNavigation 'ribbonNodeNavigation
' '
Me.ribbonNodeNavigation.ExpandCollapseItem.Id = 0 Me.ribbonNodeNavigation.ExpandCollapseItem.Id = 0
Me.ribbonNodeNavigation.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.ribbonNodeNavigation.ExpandCollapseItem, Me.ribbonNodeNavigation.SearchEditItem, Me.bbtnitmRecEdit, Me.bsiInfo, Me.bbtnitmRecSave, Me.bsiDocID, Me.bsitmRecordID, Me.bbtnitmDocResultExport, Me.bbtnitmDocResultLayoutSave, Me.bbtnitmDocResultLayoutReset, Me.bbtnitmDocResultRefresh, Me.BarStaticItemLocked, Me.bsitmtInfoDoc, Me.BarButtonItem1, Me.bbtnitmReloadView, Me.BbtnitmNodeReorder, Me.bbtnItm_TV_Collape_Expand, Me.checkShowPreview, Me.btnCreateNewNode, Me.tsitmDMSReadOnly, Me.bsiNotification, Me.bsiDocIDChanged, Me.BarEditItem1, Me.FindNode}) Me.ribbonNodeNavigation.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.ribbonNodeNavigation.ExpandCollapseItem, Me.ribbonNodeNavigation.SearchEditItem, Me.bbtnitmRecEdit, Me.bsiInfo, Me.bbtnitmRecSave, Me.bsiDocID, Me.bsitmRecordID, Me.bbtnitmDocResultExport, Me.bbtnitmDocResultLayoutSave, Me.bbtnitmDocResultLayoutReset, Me.bbtnitmDocResultRefresh, Me.BarStaticItemLocked, Me.bsitmtInfoDoc, Me.BarButtonItem1, Me.bbtnitmReloadView, Me.BbtnitmNodeReorder, Me.bbtnItm_TV_Collape_Expand, Me.checkShowPreview, Me.btnCreateNewNode, Me.tsitmDMSReadOnly, Me.bsiNotification, Me.bsiDocIDChanged})
Me.ribbonNodeNavigation.Location = New System.Drawing.Point(0, 0) Me.ribbonNodeNavigation.Location = New System.Drawing.Point(0, 0)
Me.ribbonNodeNavigation.MaxItemId = 30 Me.ribbonNodeNavigation.MaxItemId = 30
Me.ribbonNodeNavigation.Name = "ribbonNodeNavigation" Me.ribbonNodeNavigation.Name = "ribbonNodeNavigation"
@@ -181,7 +178,7 @@ Partial Class frmNodeNavigation
Me.ribbonNodeNavigation.ShowExpandCollapseButton = DevExpress.Utils.DefaultBoolean.[True] Me.ribbonNodeNavigation.ShowExpandCollapseButton = DevExpress.Utils.DefaultBoolean.[True]
Me.ribbonNodeNavigation.ShowMoreCommandsButton = DevExpress.Utils.DefaultBoolean.[False] Me.ribbonNodeNavigation.ShowMoreCommandsButton = DevExpress.Utils.DefaultBoolean.[False]
Me.ribbonNodeNavigation.ShowToolbarCustomizeItem = False Me.ribbonNodeNavigation.ShowToolbarCustomizeItem = False
Me.ribbonNodeNavigation.Size = New System.Drawing.Size(1151, 147) Me.ribbonNodeNavigation.Size = New System.Drawing.Size(1151, 158)
Me.ribbonNodeNavigation.StatusBar = Me.RibbonStatusBar1 Me.ribbonNodeNavigation.StatusBar = Me.RibbonStatusBar1
Me.ribbonNodeNavigation.Toolbar.ShowCustomizeItem = False Me.ribbonNodeNavigation.Toolbar.ShowCustomizeItem = False
' '
@@ -336,27 +333,14 @@ Partial Class frmNodeNavigation
Me.bsiDocIDChanged.Name = "bsiDocIDChanged" Me.bsiDocIDChanged.Name = "bsiDocIDChanged"
Me.bsiDocIDChanged.Visibility = DevExpress.XtraBars.BarItemVisibility.OnlyInCustomizing Me.bsiDocIDChanged.Visibility = DevExpress.XtraBars.BarItemVisibility.OnlyInCustomizing
' '
'BarEditItem1
'
Me.BarEditItem1.Caption = "NodeGUID"
Me.BarEditItem1.Edit = Me.RepositoryItemTextEdit1
Me.BarEditItem1.Id = 28
Me.BarEditItem1.Name = "BarEditItem1"
'
'RepositoryItemTextEdit1 'RepositoryItemTextEdit1
' '
Me.RepositoryItemTextEdit1.AutoHeight = False Me.RepositoryItemTextEdit1.AutoHeight = False
Me.RepositoryItemTextEdit1.Name = "RepositoryItemTextEdit1" Me.RepositoryItemTextEdit1.Name = "RepositoryItemTextEdit1"
' '
'FindNode
'
Me.FindNode.Caption = "BarButtonItem19"
Me.FindNode.Id = 29
Me.FindNode.Name = "FindNode"
'
'RibbonPage1 'RibbonPage1
' '
Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RPGNodes, Me.RibbonPageGroupRecord, Me.RibbonPageGroupDocResult, Me.RibbonPageGroup2}) Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RPGNodes, Me.RibbonPageGroupRecord, Me.RibbonPageGroupDocResult})
Me.RibbonPage1.Name = "RibbonPage1" Me.RibbonPage1.Name = "RibbonPage1"
Me.RibbonPage1.Text = "Node Navigation" Me.RibbonPage1.Text = "Node Navigation"
' '
@@ -395,13 +379,6 @@ Partial Class frmNodeNavigation
Me.RibbonPageGroupDocResult.Name = "RibbonPageGroupDocResult" Me.RibbonPageGroupDocResult.Name = "RibbonPageGroupDocResult"
Me.RibbonPageGroupDocResult.Text = "Dateien" Me.RibbonPageGroupDocResult.Text = "Dateien"
' '
'RibbonPageGroup2
'
Me.RibbonPageGroup2.ItemLinks.Add(Me.BarEditItem1)
Me.RibbonPageGroup2.ItemLinks.Add(Me.FindNode)
Me.RibbonPageGroup2.Name = "RibbonPageGroup2"
Me.RibbonPageGroup2.Text = "RibbonPageGroup2"
'
'RibbonStatusBar1 'RibbonStatusBar1
' '
Me.RibbonStatusBar1.ItemLinks.Add(Me.bsiInfo) Me.RibbonStatusBar1.ItemLinks.Add(Me.bsiInfo)
@@ -412,10 +389,10 @@ Partial Class frmNodeNavigation
Me.RibbonStatusBar1.ItemLinks.Add(Me.BarStaticItemLocked) Me.RibbonStatusBar1.ItemLinks.Add(Me.BarStaticItemLocked)
Me.RibbonStatusBar1.ItemLinks.Add(Me.bsitmtInfoDoc) Me.RibbonStatusBar1.ItemLinks.Add(Me.bsitmtInfoDoc)
Me.RibbonStatusBar1.ItemLinks.Add(Me.bsiDocIDChanged) Me.RibbonStatusBar1.ItemLinks.Add(Me.bsiDocIDChanged)
Me.RibbonStatusBar1.Location = New System.Drawing.Point(0, 566) Me.RibbonStatusBar1.Location = New System.Drawing.Point(0, 567)
Me.RibbonStatusBar1.Name = "RibbonStatusBar1" Me.RibbonStatusBar1.Name = "RibbonStatusBar1"
Me.RibbonStatusBar1.Ribbon = Me.ribbonNodeNavigation Me.RibbonStatusBar1.Ribbon = Me.ribbonNodeNavigation
Me.RibbonStatusBar1.Size = New System.Drawing.Size(1151, 23) Me.RibbonStatusBar1.Size = New System.Drawing.Size(1151, 22)
' '
'RibbonPage2 'RibbonPage2
' '
@@ -437,7 +414,7 @@ Partial Class frmNodeNavigation
' '
Me.SplitContainerTreeList.Panel2.Controls.Add(Me.SplitContainerDocumentSearch) Me.SplitContainerTreeList.Panel2.Controls.Add(Me.SplitContainerDocumentSearch)
Me.SplitContainerTreeList.Panel2.Text = "Panel2" Me.SplitContainerTreeList.Panel2.Text = "Panel2"
Me.SplitContainerTreeList.Size = New System.Drawing.Size(776, 419) Me.SplitContainerTreeList.Size = New System.Drawing.Size(776, 409)
Me.SplitContainerTreeList.SplitterPosition = 229 Me.SplitContainerTreeList.SplitterPosition = 229
Me.SplitContainerTreeList.TabIndex = 2 Me.SplitContainerTreeList.TabIndex = 2
' '
@@ -479,7 +456,7 @@ Partial Class frmNodeNavigation
Me.TreeListDevexpress.OptionsView.ShowVertLines = False Me.TreeListDevexpress.OptionsView.ShowVertLines = False
Me.TreeListDevexpress.OptionsView.TreeLineStyle = DevExpress.XtraTreeList.LineStyle.Dark Me.TreeListDevexpress.OptionsView.TreeLineStyle = DevExpress.XtraTreeList.LineStyle.Dark
Me.TreeListDevexpress.ParentFieldName = "PARENT_GUID" Me.TreeListDevexpress.ParentFieldName = "PARENT_GUID"
Me.TreeListDevexpress.Size = New System.Drawing.Size(229, 419) Me.TreeListDevexpress.Size = New System.Drawing.Size(229, 409)
Me.TreeListDevexpress.StateImageList = Me.ImageCollection1 Me.TreeListDevexpress.StateImageList = Me.ImageCollection1
Me.TreeListDevexpress.TabIndex = 1 Me.TreeListDevexpress.TabIndex = 1
' '
@@ -503,7 +480,7 @@ Partial Class frmNodeNavigation
' '
Me.SplitContainerDocumentSearch.Panel2.Controls.Add(Me.GridControlDocSearch) Me.SplitContainerDocumentSearch.Panel2.Controls.Add(Me.GridControlDocSearch)
Me.SplitContainerDocumentSearch.Panel2.Text = "Panel2" Me.SplitContainerDocumentSearch.Panel2.Text = "Panel2"
Me.SplitContainerDocumentSearch.Size = New System.Drawing.Size(535, 419) Me.SplitContainerDocumentSearch.Size = New System.Drawing.Size(537, 409)
Me.SplitContainerDocumentSearch.SplitterPosition = 133 Me.SplitContainerDocumentSearch.SplitterPosition = 133
Me.SplitContainerDocumentSearch.TabIndex = 1 Me.SplitContainerDocumentSearch.TabIndex = 1
' '
@@ -514,7 +491,7 @@ Partial Class frmNodeNavigation
Me.pnlControls.Dock = System.Windows.Forms.DockStyle.Fill Me.pnlControls.Dock = System.Windows.Forms.DockStyle.Fill
Me.pnlControls.Location = New System.Drawing.Point(0, 0) Me.pnlControls.Location = New System.Drawing.Point(0, 0)
Me.pnlControls.Name = "pnlControls" Me.pnlControls.Name = "pnlControls"
Me.pnlControls.Size = New System.Drawing.Size(535, 133) Me.pnlControls.Size = New System.Drawing.Size(537, 133)
Me.pnlControls.TabIndex = 0 Me.pnlControls.TabIndex = 0
' '
'GridControlDocSearch 'GridControlDocSearch
@@ -528,7 +505,7 @@ Partial Class frmNodeNavigation
Me.GridControlDocSearch.Location = New System.Drawing.Point(0, 0) Me.GridControlDocSearch.Location = New System.Drawing.Point(0, 0)
Me.GridControlDocSearch.MainView = Me.GridViewDoc_Search Me.GridControlDocSearch.MainView = Me.GridViewDoc_Search
Me.GridControlDocSearch.Name = "GridControlDocSearch" Me.GridControlDocSearch.Name = "GridControlDocSearch"
Me.GridControlDocSearch.Size = New System.Drawing.Size(535, 274) Me.GridControlDocSearch.Size = New System.Drawing.Size(537, 266)
Me.GridControlDocSearch.TabIndex = 8 Me.GridControlDocSearch.TabIndex = 8
Me.GridControlDocSearch.TabStop = False Me.GridControlDocSearch.TabStop = False
Me.GridControlDocSearch.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.GridViewDoc_Search}) Me.GridControlDocSearch.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.GridViewDoc_Search})
@@ -538,7 +515,7 @@ Partial Class frmNodeNavigation
Me.cmsResultFileDetail.ImageScalingSize = New System.Drawing.Size(18, 18) Me.cmsResultFileDetail.ImageScalingSize = New System.Drawing.Size(18, 18)
Me.cmsResultFileDetail.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.tsmiFileProperties, Me.ToolStripSeparator5, Me.tsmiFileOpen, Me.tsmiFileFolderOpen, Me.ToolStripSeparator1, Me.tsmiFileInWorkMultiple_Lock, Me.tsmiFileInWorkMultiple_Free, Me.tsmiFileInWork, Me.ToolStripSeparator3, Me.tsmiFileLink_Add, Me.tsmiFileLinkRemove, Me.tsmiFileLink_ShowAll, Me.TsmitmJumpToFilestore, Me.LinkPerMailVersendenToolStripMenuItem, Me.ToolStripSeparator2, Me.tsmiFileRename, Me.DokumentartÄndernToolStripMenuItem, Me.tsmiFileVersion, Me.tsmiFileRightsShow, Me.ToolStripSeparator4, Me.tsmiFileDelete}) Me.cmsResultFileDetail.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.tsmiFileProperties, Me.ToolStripSeparator5, Me.tsmiFileOpen, Me.tsmiFileFolderOpen, Me.ToolStripSeparator1, Me.tsmiFileInWorkMultiple_Lock, Me.tsmiFileInWorkMultiple_Free, Me.tsmiFileInWork, Me.ToolStripSeparator3, Me.tsmiFileLink_Add, Me.tsmiFileLinkRemove, Me.tsmiFileLink_ShowAll, Me.TsmitmJumpToFilestore, Me.LinkPerMailVersendenToolStripMenuItem, Me.ToolStripSeparator2, Me.tsmiFileRename, Me.DokumentartÄndernToolStripMenuItem, Me.tsmiFileVersion, Me.tsmiFileRightsShow, Me.ToolStripSeparator4, Me.tsmiFileDelete})
Me.cmsResultFileDetail.Name = "ContextMenuStripResultFiles" Me.cmsResultFileDetail.Name = "ContextMenuStripResultFiles"
Me.cmsResultFileDetail.Size = New System.Drawing.Size(315, 440) Me.cmsResultFileDetail.Size = New System.Drawing.Size(315, 418)
' '
'tsmiFileProperties 'tsmiFileProperties
' '
@@ -754,7 +731,7 @@ Partial Class frmNodeNavigation
' '
Me.SplitContainerDocView.CollapsePanel = DevExpress.XtraEditors.SplitCollapsePanel.Panel2 Me.SplitContainerDocView.CollapsePanel = DevExpress.XtraEditors.SplitCollapsePanel.Panel2
Me.SplitContainerDocView.Dock = System.Windows.Forms.DockStyle.Fill Me.SplitContainerDocView.Dock = System.Windows.Forms.DockStyle.Fill
Me.SplitContainerDocView.Location = New System.Drawing.Point(0, 147) Me.SplitContainerDocView.Location = New System.Drawing.Point(0, 158)
Me.SplitContainerDocView.Name = "SplitContainerDocView" Me.SplitContainerDocView.Name = "SplitContainerDocView"
' '
'SplitContainerDocView.Panel1 'SplitContainerDocView.Panel1
@@ -766,7 +743,7 @@ Partial Class frmNodeNavigation
' '
Me.SplitContainerDocView.Panel2.Controls.Add(Me.DocumentViewer) Me.SplitContainerDocView.Panel2.Controls.Add(Me.DocumentViewer)
Me.SplitContainerDocView.Panel2.Text = "Panel2" Me.SplitContainerDocView.Panel2.Text = "Panel2"
Me.SplitContainerDocView.Size = New System.Drawing.Size(1151, 419) Me.SplitContainerDocView.Size = New System.Drawing.Size(1151, 409)
Me.SplitContainerDocView.SplitterPosition = 776 Me.SplitContainerDocView.SplitterPosition = 776
Me.SplitContainerDocView.TabIndex = 0 Me.SplitContainerDocView.TabIndex = 0
' '
@@ -777,7 +754,7 @@ Partial Class frmNodeNavigation
Me.DocumentViewer.FileLoaded = False Me.DocumentViewer.FileLoaded = False
Me.DocumentViewer.Location = New System.Drawing.Point(0, 0) Me.DocumentViewer.Location = New System.Drawing.Point(0, 0)
Me.DocumentViewer.Name = "DocumentViewer" Me.DocumentViewer.Name = "DocumentViewer"
Me.DocumentViewer.Size = New System.Drawing.Size(363, 419) Me.DocumentViewer.Size = New System.Drawing.Size(365, 409)
Me.DocumentViewer.TabIndex = 0 Me.DocumentViewer.TabIndex = 0
Me.DocumentViewer.Viewer_ForceTemporaryMode = False Me.DocumentViewer.Viewer_ForceTemporaryMode = False
' '
@@ -1242,8 +1219,5 @@ Partial Class frmNodeNavigation
Friend WithEvents DD_DMSDataSet1 As DD_DMSDataSet Friend WithEvents DD_DMSDataSet1 As DD_DMSDataSet
Friend WithEvents bsiDocIDChanged As DevExpress.XtraBars.BarStaticItem Friend WithEvents bsiDocIDChanged As DevExpress.XtraBars.BarStaticItem
Friend WithEvents TsmitmJumpToFilestore As ToolStripMenuItem Friend WithEvents TsmitmJumpToFilestore As ToolStripMenuItem
Friend WithEvents BarEditItem1 As DevExpress.XtraBars.BarEditItem
Friend WithEvents RepositoryItemTextEdit1 As DevExpress.XtraEditors.Repository.RepositoryItemTextEdit Friend WithEvents RepositoryItemTextEdit1 As DevExpress.XtraEditors.Repository.RepositoryItemTextEdit
Friend WithEvents FindNode As DevExpress.XtraBars.BarButtonItem
Friend WithEvents RibbonPageGroup2 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
End Class End Class

View File

@@ -145,13 +145,14 @@ Public Class frmNodeNavigation
End If End If
checkShowPreview.Checked = CONFIG.Config.DocumentViewerShown checkShowPreview.Checked = CONFIG.Config.DocumentViewerShown
UpdateDocViewCollapsedState()
Catch ex As Exception Catch ex As Exception
NNLogger.Error(ex) NNLogger.Error(ex)
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace) ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace)
End Try End Try
End Sub End Sub
Private Async Function frmNodeNavigation_Load(sender As Object, e As EventArgs) As Task Handles Me.Load Private Async Sub frmNodeNavigation_Load(sender As Object, e As EventArgs) Handles Me.Load
NNLogger.Debug("Loading NodeNavigation") NNLogger.Debug("Loading NodeNavigation")
CONSTRUCTORID = CURRENT_CONSTRUCTOR_ID CONSTRUCTORID = CURRENT_CONSTRUCTOR_ID
@@ -222,7 +223,13 @@ Public Class frmNodeNavigation
End Try End Try
Await Load_nodes() Await Load_nodes()
End Function AddHandler ClassDragDrop.FilesDroppedReady, Sub(files As String())
' Hier deine bisherige Verarbeitung von files_dropped triggern.
' Beispiel:
LOGGER?.Info("FilesDroppedReady: " & String.Join("; ", files))
' ... bestehende Routine aufrufen ...
End Sub
End Sub
Private Async Function Load_nodes() As Task Private Async Function Load_nodes() As Task
Dim oHandle = SplashScreenManager.ShowOverlayForm(Me) Dim oHandle = SplashScreenManager.ShowOverlayForm(Me)
NNLogger.Debug("Loading nodes for entity [{0}]", CURRENT_ENTITY_ID) NNLogger.Debug("Loading nodes for entity [{0}]", CURRENT_ENTITY_ID)
@@ -233,32 +240,47 @@ Public Class frmNodeNavigation
Dim oNodeConfigSql = String.Format("select T.* from TBPMO_STRUCTURE_NODES_CONFIGURATION T INNER JOIN VWPMO_CONSTRUCTOR_FORMS T1 ON T.ENTITY_ID = T1.FORM_ID WHERE T.ENTITY_ID = {0}", CURRENT_ENTITY_ID) Dim oNodeConfigSql = String.Format("select T.* from TBPMO_STRUCTURE_NODES_CONFIGURATION T INNER JOIN VWPMO_CONSTRUCTOR_FORMS T1 ON T.ENTITY_ID = T1.FORM_ID WHERE T.ENTITY_ID = {0}", CURRENT_ENTITY_ID)
Dim DT_TREEVIEW_CONFIGURATION = MYDB_ECM.GetDatatable(oNodeConfigSql) Dim DT_TREEVIEW_CONFIGURATION = MYDB_ECM.GetDatatable(oNodeConfigSql)
For Each row As DataRow In DT_TREEVIEW_CONFIGURATION.Rows
Try
Dim bimage = row.ItemEx(Of Object)("NODE_IMAGE", Nothing)
If bimage Is Nothing Then
Continue For
End If
Dim oNodeImage = ByteArrayToBitmap(bimage) Dim imageInit = TryCast(ImageCollection1, System.ComponentModel.ISupportInitialize)
ImageCollection1.AddImage(oNodeImage, row.Item("GUID")) If imageInit IsNot Nothing Then
Catch ex As Exception imageInit.BeginInit()
NNLogger.Error(ex) End If
End Try
Next
TreeListDevexpress.DataSource = DT_STRUCTURE_NODES Try
TreeListDevexpress.KeyFieldName = "GUID" For Each row As DataRow In DT_TREEVIEW_CONFIGURATION.Rows
TreeListDevexpress.ParentFieldName = "PARENT_GUID" Try
TreeListDevexpress.Columns("SEQUENCE").SortOrder = SortOrder.Ascending Dim bimage = row.ItemEx(Of Object)("NODE_IMAGE", Nothing)
TreeListDevexpress.StateImageList = ImageCollection1 If bimage Is Nothing Then
Continue For
End If
Dim oVisibleColumns = New List(Of String) From {"NODE_CAPTION"} ', "NAVIGATION_PATH"} Dim oNodeImage = ByteArrayToBitmap(bimage)
For Each oColumn In TreeListDevexpress.Columns ImageCollection1.AddImage(oNodeImage, row.Item("GUID"))
If oVisibleColumns.Contains(oColumn.FieldName) = False Then Catch ex As Exception
oColumn.Visible = False NNLogger.Error(ex)
End Try
Next
Finally
If imageInit IsNot Nothing Then
imageInit.EndInit()
End If End If
Next End Try
TreeListDevexpress.BeginUpdate()
Try
TreeListDevexpress.DataSource = DT_STRUCTURE_NODES
TreeListDevexpress.KeyFieldName = "GUID"
TreeListDevexpress.ParentFieldName = "PARENT_GUID"
TreeListDevexpress.Columns("SEQUENCE").SortOrder = SortOrder.Ascending
TreeListDevexpress.StateImageList = ImageCollection1
Dim oVisibleColumns As New System.Collections.Generic.HashSet(Of String)(StringComparer.OrdinalIgnoreCase) From {"NODE_CAPTION"}
For Each oColumn As TreeListColumn In TreeListDevexpress.Columns
oColumn.Visible = oVisibleColumns.Contains(oColumn.FieldName)
Next
Finally
TreeListDevexpress.EndUpdate()
End Try
JumptoNode() JumptoNode()
@@ -319,10 +341,6 @@ Public Class frmNodeNavigation
Exit Sub Exit Sub
End If End If
MyFocusedNode = Nothing MyFocusedNode = Nothing
If btnCreateNewNode.Visibility = DevExpress.XtraBars.BarItemVisibility.Always Then
btnCreateNewNode.Enabled = False
End If
If RIGHT_RECORD_AND_FILE_READ_ONLY = True Then If RIGHT_RECORD_AND_FILE_READ_ONLY = True Then
Exit Sub Exit Sub
@@ -386,23 +404,23 @@ Public Class frmNodeNavigation
CurrentNodeConfigId = oNodeConfigId CurrentNodeConfigId = oNodeConfigId
AvailableConfigNodes.Clear() AvailableConfigNodes.Clear()
If btnCreateNewNode.Visibility = DevExpress.XtraBars.BarItemVisibility.Always And If Not IsNothing(NODE_CONFIGURABLE_NODES_DT) Then
Not IsNothing(NODE_CONFIGURABLE_NODES_DT) Then
Dim oNodeConfigList = NODE_CONFIGURABLE_NODES_DT.Select($"PARENT_NODE = {oNodeConfigId}"). Dim oNodeConfigList = NODE_CONFIGURABLE_NODES_DT.Select($"PARENT_NODE = {oNodeConfigId}").
Cast(Of DataRow). Cast(Of DataRow).
Select(Function(row) New frmNewNode.NodeConfig() With { Select(Function(row) New frmNewNode.NodeConfig() With {
.Id = row.Item("GUID"), .Id = row.Item("GUID"),
.Name = row.Item("NAME") .Name = row.Item("NAME")
}).ToList() }).ToList()
AvailableConfigNodes = oNodeConfigList AvailableConfigNodes = oNodeConfigList
If AvailableConfigNodes.Count > 0 Then
btnCreateNewNode.Enabled = True
Else
btnCreateNewNode.Enabled = False
End If
End If End If
NNLogger.Info($"Node changed: NodeID={oNodeConfigId}, NodeGUID={oGuid}, ConfigNodesFound={AvailableConfigNodes.Count}, " &
$"ButtonVisible={btnCreateNewNode.Visibility}, ConfigTableRows={If(IsNothing(NODE_CONFIGURABLE_NODES_DT), 0, NODE_CONFIGURABLE_NODES_DT.Rows.Count)}")
' NEUE zentrale Methode aufrufen statt direkter Manipulation
UpdateCreateNodeButtonState()
' END NEW NODE ' END NEW NODE
CURRENT_NODEID = oGuid CURRENT_NODEID = oGuid
@@ -425,7 +443,7 @@ Public Class frmNodeNavigation
Await Show_Selected_Record_Data(CURRENT_RECORD_ID, oLoadRecordData) Await Show_Selected_Record_Data(CURRENT_RECORD_ID, oLoadRecordData)
DocView_DisplaySelectedDoc(True) Await DocView_DisplaySelectedDoc(True)
ClassRightManagement.Check_Set_Rights(CURRENT_RECORD_ID, _EntityId) ClassRightManagement.Check_Set_Rights(CURRENT_RECORD_ID, _EntityId)
CONTROL_HANDLING() CONTROL_HANDLING()
@@ -486,6 +504,48 @@ Public Class frmNodeNavigation
End If End If
End If End If
End Sub End Sub
' Neue zentrale Methode zum konsistenten Setzen des Button-Status
Private Sub UpdateCreateNodeButtonState()
Try
' *** HIER: Eingangsdiagnose ***
NNLogger.Debug($"UpdateCreateNodeButtonState called - Visibility={btnCreateNewNode.Visibility}, " &
$"CurrentEnabled={btnCreateNewNode.Enabled}, AvailableNodes={AvailableConfigNodes.Count}, " &
$"ConfigTableExists={Not IsNothing(NODE_CONFIGURABLE_NODES_DT)}")
If btnCreateNewNode.Visibility <> DevExpress.XtraBars.BarItemVisibility.Always Then
Exit Sub
End If
' Button aktivieren wenn:
' 1. Konfigurierbare Nodes existieren UND
' 2. Verfügbare Config-Nodes für aktuellen Node vorhanden sind
Dim shouldEnable As Boolean = False
If Not IsNothing(NODE_CONFIGURABLE_NODES_DT) AndAlso
NODE_CONFIGURABLE_NODES_DT.Rows.Count > 0 AndAlso
AvailableConfigNodes.Count > 0 Then
shouldEnable = True
End If
' Thread-sicheres Update
If Me.InvokeRequired Then
Me.Invoke(Sub() btnCreateNewNode.Enabled = shouldEnable)
Else
btnCreateNewNode.Enabled = shouldEnable
End If
If shouldEnable Then
LOGGER.Debug($"btnCreateNewNode ENABLED (AvailableConfigNodes: {AvailableConfigNodes.Count})")
Else
LOGGER.Debug($"btnCreateNewNode DISABLED (ConfigNodes: {AvailableConfigNodes.Count})")
End If
Catch ex As Exception
NNLogger.Error(ex)
' Im Fehlerfall: Sicherheitshalber deaktivieren
btnCreateNewNode.Enabled = False
End Try
End Sub
Public Async Function ShowDialogAsync() As Task(Of DialogResult) Public Async Function ShowDialogAsync() As Task(Of DialogResult)
Return Await Task.Run(Function() Return Await Task.Run(Function()
Return MessageBox.Show("Der Parent-Node wird nun getauscht? Wollen Sie fortfahren?", Return MessageBox.Show("Der Parent-Node wird nun getauscht? Wollen Sie fortfahren?",
@@ -651,9 +711,15 @@ Public Class frmNodeNavigation
btnCreateNewNode.Visibility = DevExpress.XtraBars.BarItemVisibility.Never btnCreateNewNode.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
Dim oSql = String.Format("SELECT * FROM TBPMO_STRUCTURE_NODES_CONFIGURATION where TYPE_NODE = 1000 AND ENTITY_ID IN (SELECT FORM_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0})", oConstructID) Dim oSql = String.Format("SELECT * FROM TBPMO_STRUCTURE_NODES_CONFIGURATION where TYPE_NODE = 1000 AND ENTITY_ID IN (SELECT FORM_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0})", oConstructID)
NODE_CONFIGURABLE_NODES_DT = MYDB_ECM.GetDatatable(oSql) NODE_CONFIGURABLE_NODES_DT = MYDB_ECM.GetDatatable(oSql)
NNLogger.Info($"Load_Configurable_Nodes: ConstructID={oConstructID}, " &
$"FoundRows={If(IsNothing(NODE_CONFIGURABLE_NODES_DT), 0, NODE_CONFIGURABLE_NODES_DT.Rows.Count)}")
If Not IsNothing(NODE_CONFIGURABLE_NODES_DT) Then If Not IsNothing(NODE_CONFIGURABLE_NODES_DT) Then
If NODE_CONFIGURABLE_NODES_DT.Rows.Count > 0 Then If NODE_CONFIGURABLE_NODES_DT.Rows.Count > 0 Then
btnCreateNewNode.Visibility = DevExpress.XtraBars.BarItemVisibility.Always btnCreateNewNode.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
' Initial-State setzen
UpdateCreateNodeButtonState()
End If End If
End If End If
Catch ex As Exception Catch ex As Exception
@@ -978,7 +1044,7 @@ Public Class frmNodeNavigation
Else Else
RibbonPageGroupDocResult.Enabled = True RibbonPageGroupDocResult.Enabled = True
If Node_AfterSelect = False Then If Node_AfterSelect = False Then
SplitContainerDocView.Collapsed = Not CONFIG.Config.DocumentViewerShown UpdateDocViewCollapsedState()
Else Else
SplitContainerDocView.Collapsed = True SplitContainerDocView.Collapsed = True
End If End If
@@ -1831,9 +1897,9 @@ Public Class frmNodeNavigation
End Try End Try
sw.Done() sw.Done()
End Sub End Sub
Private Sub OnCBSelectedValueChanged(sender As Object, e As EventArgs) Private Async Sub OnCBSelectedValueChanged(sender As Object, e As EventArgs)
Try Try
Dim oDocID = Focused_Row_GetDocID() Dim oDocID = Await Focused_Row_GetDocID() ' ✅ Mit Await
If oDocID = 0 Then If oDocID = 0 Then
Exit Sub Exit Sub
End If End If
@@ -1869,9 +1935,9 @@ Public Class frmNodeNavigation
End Try End Try
End Sub End Sub
Private Sub OnDateSelectedValueChanged(sender As Object, e As EventArgs) Private Async Sub OnDateSelectedValueChanged(sender As Object, e As EventArgs)
Try Try
Dim oDocID = Focused_Row_GetDocID() Dim oDocID = Await Focused_Row_GetDocID() ' ✅ Mit Await
If oDocID = 0 Then If oDocID = 0 Then
Exit Sub Exit Sub
End If End If
@@ -1917,9 +1983,9 @@ Public Class frmNodeNavigation
End Try End Try
End Sub End Sub
Private Sub OnTextSelectedValueChanged(sender As Object, e As EventArgs) Private Async Sub OnTextSelectedValueChanged(sender As Object, e As EventArgs)
Try Try
Dim oDocID = Focused_Row_GetDocID() Dim oDocID = Await Focused_Row_GetDocID() ' ✅ Mit Await
If oDocID = 0 Then If oDocID = 0 Then
Exit Sub Exit Sub
End If End If
@@ -1950,10 +2016,10 @@ Public Class frmNodeNavigation
End Try End Try
End Sub End Sub
Private Sub OnCheckboxValueChanged(sender As Object, e As EventArgs) Private Async Sub OnCheckboxValueChanged(sender As Object, e As EventArgs)
'TODO Save Checkboxvalue 'TODO Save Checkboxvalue
Try Try
Dim oDocID = Focused_Row_GetDocID() Dim oDocID = Await Focused_Row_GetDocID() ' ✅ Mit Await
If oDocID = 0 Then If oDocID = 0 Then
Exit Sub Exit Sub
End If End If
@@ -1997,32 +2063,42 @@ Public Class frmNodeNavigation
End Try End Try
End Sub End Sub
Private Sub GridViewDoc_Search_FocusedRowChanged(sender As Object, e As DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs) Handles GridViewDoc_Search.FocusedRowChanged Private Async Sub GridViewDoc_Search_FocusedRowChanged(sender As Object, e As DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs) Handles GridViewDoc_Search.FocusedRowChanged
Focused_Row_GetDocID() ' ✅ Jetzt mit Await aufrufen
Dim docId = Await Focused_Row_GetDocID()
End Sub End Sub
Private Function Focused_Row_GetDocID() As Int64 Private Async Function Focused_Row_GetDocID() As Task(Of Int64)
Try Try
' Early Exit 1: Formular noch nicht angezeigt
If FORM_SHOWN = False Then If FORM_SHOWN = False Then
Return 0 Return 0
End If End If
' Early Exit 2: Node-Wechsel aktiv
If Node_AfterSelect = True Then If Node_AfterSelect = True Then
SplitContainerDocView.Collapsed = True SplitContainerDocView.Collapsed = True
GridViewDoc_Search.ClearSelection() GridViewDoc_Search.ClearSelection()
GridViewDoc_Search.FocusedRowHandle = DevExpress.XtraGrid.GridControl.InvalidRowHandle GridViewDoc_Search.FocusedRowHandle = DevExpress.XtraGrid.GridControl.InvalidRowHandle
Return 0 Return 0
End If End If
Update_DocID_Label(False) Update_DocID_Label(False)
Update_Notification_Label(False, "", "") Update_Notification_Label(False, "", "")
' Prüfung: Ist eine Zeile fokussiert?
If GridViewDoc_Search.FocusedRowHandle >= 0 Then If GridViewDoc_Search.FocusedRowHandle >= 0 Then
Dim oDocID = GridViewDoc_Search.GetRowCellValue(GridViewDoc_Search.FocusedRowHandle, "DocID") Dim oDocID = GridViewDoc_Search.GetRowCellValue(GridViewDoc_Search.FocusedRowHandle, "DocID")
If Not IsNothing(oDocID) Then If Not IsNothing(oDocID) Then
Dim omsg = "Doc-ID: " & oDocID Dim omsg = "Doc-ID: " & oDocID
Update_DocID_Label(True, omsg, EditState.Update) Update_DocID_Label(True, omsg, EditState.Update)
' ✅ Dokumentvorschau nur bei DocID-Wechsel aktualisieren
If SELECTED_DOC_ID <> oDocID Then If SELECTED_DOC_ID <> oDocID Then
SELECTED_DOC_ID = oDocID SELECTED_DOC_ID = oDocID
' Panel-Status setzen (falls Vorschau deaktiviert)
If checkShowPreview.Checked = False Then If checkShowPreview.Checked = False Then
SplitContainerDocView.Collapsed = True SplitContainerDocView.Collapsed = True
Else Else
@@ -2031,8 +2107,10 @@ Public Class frmNodeNavigation
End If End If
End If End If
DocView_DisplaySelectedDoc(False) ' ✅ Async-Aufruf mit Await
Await DocView_DisplaySelectedDoc(False)
End If End If
Update_DocID_Label(True, omsg, EditState.Update) Update_DocID_Label(True, omsg, EditState.Update)
Return SELECTED_DOC_ID Return SELECTED_DOC_ID
Else Else
@@ -2043,6 +2121,7 @@ Public Class frmNodeNavigation
Return 0 Return 0
End If End If
Catch ex As Exception Catch ex As Exception
NNLogger.Error(ex, "Error in Focused_Row_GetDocID")
Return 0 Return 0
End Try End Try
End Function End Function
@@ -2124,115 +2203,96 @@ Public Class frmNodeNavigation
End Sub End Sub
#Region "Dropping Files" #Region "Dropping Files"
Sub Drag_Enter(e As DragEventArgs) Sub Drag_Enter(e As DragEventArgs)
If _EntityId <> 0 Then If _EntityId = 0 Then
If WM_READ_ONLY = False Then
ClassDragDrop.Drag_enter(e)
Else
Update_Notification_Label(True, "READ ONLY ACCESS", "Yellow")
End If
Else
Update_Notification_Label(True, "No entity selected", "Yellow") Update_Notification_Label(True, "No entity selected", "Yellow")
e.Effect = DragDropEffects.None
Exit Sub
End If End If
If WM_READ_ONLY Then
Update_Notification_Label(True, "READ ONLY ACCESS", "Yellow")
e.Effect = DragDropEffects.None
Exit Sub
End If
' Delegiere die Priorisierung (Outlook > FileDrop) an die zentrale Routine
ClassDragDrop.Drag_enter(e)
End Sub End Sub
Private Async Function Drag_Drop(e As DragEventArgs) As Task Private Async Function Drag_Drop(e As DragEventArgs) As Task
Try Try
If ClassDragDrop.Drop_File(e) = False Then ' Basis-Prechecks bevor wir irgendetwas verarbeiten
Exit Function
End If
If USER_PERSONIFIED_TEST = True Then If USER_PERSONIFIED_TEST = True Then
ClassHelper.MSGBOX_Handler("INFO", "Attention", "You are using orgFLOW in personified mode! Adding files is not allowed!") ClassHelper.MSGBOX_Handler("INFO", "Attention", "You are using orgFLOW in personified mode! Adding files is not allowed!")
Exit Function Exit Function
End If End If
If WMMOD.SessionLoggedin = False Then If WMMOD.SessionLoggedin = False Then
ClassHelper.MSGBOX_Handler("INFO", "Attention", "Check Your windream-connection and restart orgFLOW afterwards.", "Could not create a windream session!") ClassHelper.MSGBOX_Handler("INFO", "Attention", "Check Your windream-connection and restart orgFLOW afterwards.", "Could not create a windream session!")
Exit Function Exit Function
End If End If
If _EntityId <> 0 And (RIGHT_READ_ONLY_DOC = False And GridControlDocSearch.ContextMenuStrip.Name = "ContextMenuStripResultFiles") Or RIGHT_ADD_DOC = True Then
Dim sql = "select count(*) from VWPMO_DOKUMENTTYPES where FORMVIEW_ID = " & FORMVIEW_ID
Dim count_DT = MYDB_ECM.GetScalarValue(sql)
If count_DT = 0 And CURRENT_ENTITY_REDUNDANT_ID = 0 Then
MsgBox("No documenttypes for this entity configured! Indexing is not possible!" & vbNewLine & "Please check the configuration!", MsgBoxStyle.Exclamation)
Exit Function
ElseIf count_DT = 0 And CURRENT_ENTITY_REDUNDANT_ID <> 0 Then
sql = "select count(*) from VWPMO_DOKUMENTTYPES where FORM_ID = " & CURRENT_ENTITY_REDUNDANT_ID
count_DT = MYDB_ECM.GetScalarValue(sql)
If count_DT = 0 Then
MsgBox("No documenttypes for this entity configured! Indexing is not possible!" & vbNewLine & "Please check the configuration!", MsgBoxStyle.Exclamation)
Exit Function
End If
End If
If RECORD_CHANGED = True Then
If Save_Record() = False Then
Exit Function
End If
End If
CURRENT_CONTROL_DOCTYPE_MATCH = 0
If CONTROL_DOCTYPE_MATCH <> 0 Then
Try
CURRENT_CONTROL_DOCTYPE_MATCH = ""
CURRENT_CONTROL_DOCTYPE_MATCH = ClassControlValues.GetControlValuesREC_CONTROL(CURRENT_RECORD_ID, CONTROL_DOCTYPE_MATCH)
Catch ex As Exception
NNLogger.Error(ex)
CURRENT_CONTROL_DOCTYPE_MATCH = 0
CURRENT_CONTROL_DOCTYPE_MATCH = ""
End Try
End If ' Rechte-/Kontextprüfung
If Not (_EntityId <> 0 AndAlso ((RIGHT_READ_ONLY_DOC = False AndAlso GridControlDocSearch.ContextMenuStrip.Name = "ContextMenuStripResultFiles") OrElse RIGHT_ADD_DOC = True)) Then
DROPPED_CHECKED = False
If e.Data.GetDataPresent(DataFormats.StringFormat) Then
Dim Wert As String = CType(e.Data.GetData(DataFormats.StringFormat), Object)
Console.WriteLine("DragDrop-Wert: " & Wert)
If Wert.Contains("SCAN") Then
Dim split() = Wert.Split(";")
If IsNumeric(split(1)) Then
CURRENT_FILEID = split(1)
CURRENT_FORMVIEW_ID = FORMVIEW_ID
ClassHelper.Create_USER_FILE_TABLE()
If Not IsNothing(CURRENT_TBPMO_FILES_USER) Then
If CURRENT_TBPMO_FILES_USER.Rows.Count > 0 Then
frmWM_IndexFile.ShowDialog()
End If
End If
'RUN_WD_SEARCH(WD_Suche, "RECORD")
End If
ElseIf (e.Data.GetDataPresent("FileGroupDescriptor")) AndAlso (e.Data.GetDataPresent("FileContents")) Then
If ClassDragDrop.Drop_File(e) = True Then
Check_Dropped_Files()
End If
ElseIf e.Data.GetDataPresent("FileGroupDescriptor") Then
If ClassDragDrop.Drop_File(e) = True Then
Check_Dropped_Files()
End If
End If
Else
If ClassDragDrop.Drop_File(e) = True Then
Check_Dropped_Files()
End If
End If
'Nur wenn neue Dateien abgelegt wurden muss die Prozedur zur aktualisierung der windream Dateien ausgeführt werden...ansonsten muss nichts passieren
If NEW_FILES_ADDED = True Then
Me.Cursor = Cursors.WaitCursor
Await RUN_DOCSEARCH(True)
ClassHelper.GetDocrecordLinks(CURRENT_RECORD_ID)
TimerClearResultfiles.Start()
Else
NNLogger.Debug("No new files were added or windream tab is not focused!")
End If
Me.Cursor = Cursors.Default
Else
'If RIGHT_RECORD_AND_FILE_READ_ONLY = True Then
' NNLogger.Warn("RIGHT_RECORD_AND_FILE_READ_ONLY is set! No DragDrop allowed")
'End If
If RIGHT_READ_ONLY_DOC = True Then If RIGHT_READ_ONLY_DOC = True Then
NNLogger.Warn("RIGHT_WD_FORBIDDEN is set! No DragDrop allowed") NNLogger.Warn("RIGHT_WD_FORBIDDEN is set! No DragDrop allowed")
Else Else
NNLogger.Warn("No DragDrop allowed - ELSE") NNLogger.Warn("No DragDrop allowed - ELSE")
End If End If
Exit Function
End If
' Dokumenttypen-Konfiguration prüfen (wie gehabt)
Dim sql = "select count(*) from VWPMO_DOKUMENTTYPES where FORMVIEW_ID = " & FORMVIEW_ID
Dim count_DT = MYDB_ECM.GetScalarValue(sql)
If count_DT = 0 And CURRENT_ENTITY_REDUNDANT_ID = 0 Then
MsgBox("No documenttypes for this entity configured! Indexing is not possible!" & vbNewLine & "Please check the configuration!", MsgBoxStyle.Exclamation)
Exit Function
ElseIf count_DT = 0 And CURRENT_ENTITY_REDUNDANT_ID <> 0 Then
sql = "select count(*) from VWPMO_DOKUMENTTYPES where FORM_ID = " & CURRENT_ENTITY_REDUNDANT_ID
count_DT = MYDB_ECM.GetScalarValue(sql)
If count_DT = 0 Then
MsgBox("No documenttypes for this entity configured! Indexing is not possible!" & vbNewLine & "Please check the configuration!", MsgBoxStyle.Exclamation)
Exit Function
End If
End If
' Ungespeicherte Änderungen sichern
If RECORD_CHANGED = True Then
If Save_Record() = False Then Exit Function
End If
' Doctype-Match ermitteln (wie gehabt)
CURRENT_CONTROL_DOCTYPE_MATCH = 0
If CONTROL_DOCTYPE_MATCH <> 0 Then
Try
CURRENT_CONTROL_DOCTYPE_MATCH = ""
CURRENT_CONTROL_DOCTYPE_MATCH = ClassControlValues.GetControlValuesREC_CONTROL(CURRENT_RECORD_ID, CONTROL_DOCTYPE_MATCH)
Catch ex As Exception
NNLogger.Error(ex)
CURRENT_CONTROL_DOCTYPE_MATCH = 0
CURRENT_CONTROL_DOCTYPE_MATCH = ""
End Try
End If
DROPPED_CHECKED = False
' Zentrale Verarbeitung: genau EIN Aufruf Outlook/Filesystem/SCAN wird intern erkannt und geschrieben
If ClassDragDrop.Drop_File(e) = False Then
NNLogger.Debug("Drag_Drop: No supported data format detected by ClassDragDrop.")
Exit Function
End If
' Nach erfolgreichem Drop die User-File-Tabelle konsolidieren und ggf. Indexdialog öffnen
Check_Dropped_Files()
' Falls Dateien hinzugefügt wurden, Ergebnisliste aktualisieren
If NEW_FILES_ADDED = True Then
Me.Cursor = Cursors.WaitCursor
Await RUN_DOCSEARCH(True)
ClassHelper.GetDocrecordLinks(CURRENT_RECORD_ID)
TimerClearResultfiles.Start()
Else
NNLogger.Debug("No new files were added or windream tab is not focused!")
End If End If
Catch ex As Exception Catch ex As Exception
NNLogger.Error(ex) NNLogger.Error(ex)
@@ -2527,7 +2587,7 @@ Public Class frmNodeNavigation
Else Else
tsmiFileRenameDisplayname.Visible = False tsmiFileRenameDisplayname.Visible = False
End If End If
If CURRENT_ENTITY_ID <> OF_FILESTORE_ENTITY Then If CURRENT_ENTITY_ID <> OF_FILESTORE_ENTITY And OF_FILESTORE_ENTITY <> 0 Then
TsmitmJumpToFilestore.Visible = True TsmitmJumpToFilestore.Visible = True
Else Else
TsmitmJumpToFilestore.Visible = False TsmitmJumpToFilestore.Visible = False
@@ -3241,18 +3301,28 @@ Public Class frmNodeNavigation
Private Sub bbtnitmRecSave_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnitmRecSave.ItemClick Private Sub bbtnitmRecSave_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnitmRecSave.ItemClick
Save_Record() Save_Record()
End Sub End Sub
''' <summary>
Private Sub checkShowPreview_CheckedChanged(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles checkShowPreview.CheckedChanged ''' Setzt den Collapsed-Status des DocumentViewer-Panels konsistent.
''' Panel ist nur aufgeklappt, wenn DocViewInitialized = True UND checkShowPreview.Checked = True
''' </summary>
Private Sub UpdateDocViewCollapsedState()
If DocViewInitialized AndAlso checkShowPreview.Checked Then
SplitContainerDocView.Collapsed = False
Else
SplitContainerDocView.Collapsed = True
End If
End Sub
Private Async Sub checkShowPreview_CheckedChanged(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles checkShowPreview.CheckedChanged
If FORM_LOADED = False Then If FORM_LOADED = False Then
Exit Sub Exit Sub
End If End If
If DocViewInitialized Then If DocViewInitialized Then
CONFIG.Config.DocumentViewerShown = checkShowPreview.Checked CONFIG.Config.DocumentViewerShown = checkShowPreview.Checked
CONFIG.Save() CONFIG.Save()
SplitContainerDocView.Collapsed = Not checkShowPreview.Checked ' ✅ Konsistente zentrale Methode verwenden
If checkShowPreview.Checked Then UpdateDocViewCollapsedState()
DocView_DisplaySelectedDoc(False)
End If Await DocView_DisplaySelectedDoc(False)
Else Else
SplitContainerDocView.Collapsed = True SplitContainerDocView.Collapsed = True
@@ -3260,104 +3330,48 @@ Public Class frmNodeNavigation
End Sub End Sub
Private Sub GridViewDoc_Search_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles GridViewDoc_Search.SelectionChanged Private Async Sub GridViewDoc_Search_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles GridViewDoc_Search.SelectionChanged
DocView_DisplaySelectedDoc(False) Await DocView_DisplaySelectedDoc(False)
End Sub End Sub
Private Async Sub DocView_DisplaySelectedDoc(AfterNodeChange As Boolean) Private Async Function DocView_DisplaySelectedDoc(AfterNodeChange As Boolean) As Task
' ✅ Early Exit: Keine Vorschau nach Node-Wechsel
If AfterNodeChange Then If AfterNodeChange Then
Exit Sub Return
End If
' ✅ Early Exit: Vorschau ist deaktiviert
If Not checkShowPreview.Checked Then
NNLogger.Info("checkShowPreview NOT Checked.")
Return
End If
' ✅ Early Exit: Viewer nicht initialisiert
If Not DocViewInitialized Then
NNLogger.Info("DocumentViewer not initialized. No preview possible.")
Return
End If End If
Dim oHandle = SplashScreenManager.ShowOverlayForm(Me) Dim oHandle = SplashScreenManager.ShowOverlayForm(Me)
Try Try
Dim oSelectedDoc = ClassDocGrid.GetSingleSelectedDocument(GridViewDoc_Search) Dim oSelectedDoc = ClassDocGrid.GetSingleSelectedDocument(GridViewDoc_Search)
If Not IsNothing(oSelectedDoc) Then
If checkShowPreview.Checked Then
If DocViewInitialized Then
If oSelectedDoc.Count = 1 Then
Close_Document_Viewer()
System.Threading.Thread.Sleep(400)
Dim oDocument As ClassDocGrid.clsWMDoc = oSelectedDoc.First()
Dim oPath = ClassHelper.FORMAT_WM_PATH(oDocument.DocPath)
DocumentViewer.LoadFile(oPath) If IsNothing(oSelectedDoc) OrElse oSelectedDoc.Count <> 1 Then
Else NNLogger.Debug("No single document selected for preview. Check oSelectedDoc count: " & If(IsNothing(oSelectedDoc), "oSelectedDoc is Nothing", oSelectedDoc.Count.ToString()))
NNLogger.Debug("Show_SelectedDoc - oSelectedDocs.Count not = 1 ") Close_Document_Viewer()
Close_Document_Viewer() Return
End If
Else
NNLogger.Info("DocumentViewer not inited. No Show_SelectedDoc")
End If
End If
Else
NNLogger.Debug("Show_SelectedDoc - oSelectedDocs is nothing")
End If End If
' ✅ Alle Prüfungen bestanden → Dokument laden
Close_Document_Viewer()
Await Task.Delay(400)
Dim oDocument As ClassDocGrid.clsWMDoc = oSelectedDoc.First()
Dim oPath = ClassHelper.FORMAT_WM_PATH(oDocument.DocPath)
DocumentViewer.LoadFile_FromPath(oPath)
' If AfterNodeChange Then Exit Sub
'Dim oHandle = SplashScreenManager.ShowOverlayForm(Me)
'Try
' Dim oSelectedDoc = ClassDocGrid.GetSingleSelectedDocument(GridViewDoc_Search)
' If oSelectedDoc Is Nothing OrElse oSelectedDoc.Count <> 1 Then
' NNLogger.Debug("Kein oder mehrere Dokumente ausgewählt.")
' Close_Document_Viewer()
' Return
' End If
' If Not checkShowPreview.Checked OrElse Not DocViewInitialized Then
' NNLogger.Info("Vorschau deaktiviert oder Viewer nicht initialisiert.")
' Return
' End If
' Close_Document_Viewer()
' Await Task.Delay(400)
' Dim oDocument As ClassDocGrid.clsWMDoc = oSelectedDoc.First()
' Dim oPath = ClassHelper.FORMAT_WM_PATH(oDocument.DocPath)
' NNLogger.Debug("Starte DocumentViewer.LoadFile...")
' ' Flag für Erfolg
' Dim fileLoadedSuccessfully As Boolean = False
' ' Starte Timeout-Überwachung
' Dim timeoutTask = Task.Delay(TimeSpan.FromSeconds(20))
' ' Starte Laden im UI-Thread
' Dim loadTask = Task.Run(Sub()
' Try
' ' Direkt im UI-Thread ausführen
' Me.Invoke(Sub()
' DocumentViewer.LoadFile(oPath)
' fileLoadedSuccessfully = True
' End Sub)
' Catch ex As Exception
' NNLogger.Error("Fehler beim Laden des Dokuments: " & ex.Message)
' End Try
' End Sub)
' ' Warte auf Timeout oder Ladeende
' Await Task.WhenAny(loadTask, timeoutTask)
' If Not fileLoadedSuccessfully Then
' NNLogger.Warn("Ladevorgang hat Timeout überschritten oder ist fehlgeschlagen.")
' ' Optional: Viewer zurücksetzen oder Meldung anzeigen
' Else
' NNLogger.Info("Dokument erfolgreich geladen.")
' End If
Catch ex As Exception Catch ex As Exception
NNLogger.Error(ex) NNLogger.Error(ex)
Finally Finally
SplashScreenManager.CloseOverlayForm(oHandle) SplashScreenManager.CloseOverlayForm(oHandle)
End Try End Try
End Sub End Function
@@ -3750,14 +3764,4 @@ Public Class frmNodeNavigation
MessageBox.Show("Unerwarteter Fehler beim Springen zum Filestore-Knoten: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error) MessageBox.Show("Unerwarteter Fehler beim Springen zum Filestore-Knoten: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try End Try
End Sub End Sub
Private Sub FindNode_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles FindNode.ItemClick
Dim oNode = TreeListDevexpress.FindNodeByFieldValue("GUID", BarEditItem1.EditValue)
If Not IsNothing(oNode) Then
TreeListDevexpress.FocusedNode = oNode
TreeListDevexpress.MakeNodeVisible(oNode)
Else
MessageBox.Show("Knoten nicht gefunden!", "Knoten nicht gefunden", MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If
End Sub
End Class End Class

View File

@@ -13,18 +13,23 @@ Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
CD_ROM|Any CPU = CD_ROM|Any CPU CD_ROM|Any CPU = CD_ROM|Any CPU
CD_ROM|Mixed Platforms = CD_ROM|Mixed Platforms CD_ROM|Mixed Platforms = CD_ROM|Mixed Platforms
CD_ROM|x64 = CD_ROM|x64
CD_ROM|x86 = CD_ROM|x86 CD_ROM|x86 = CD_ROM|x86
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
Debug|Mixed Platforms = Debug|Mixed Platforms Debug|Mixed Platforms = Debug|Mixed Platforms
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86 Debug|x86 = Debug|x86
DVD-5|Any CPU = DVD-5|Any CPU DVD-5|Any CPU = DVD-5|Any CPU
DVD-5|Mixed Platforms = DVD-5|Mixed Platforms DVD-5|Mixed Platforms = DVD-5|Mixed Platforms
DVD-5|x64 = DVD-5|x64
DVD-5|x86 = DVD-5|x86 DVD-5|x86 = DVD-5|x86
Release|Any CPU = Release|Any CPU Release|Any CPU = Release|Any CPU
Release|Mixed Platforms = Release|Mixed Platforms Release|Mixed Platforms = Release|Mixed Platforms
Release|x64 = Release|x64
Release|x86 = Release|x86 Release|x86 = Release|x86
SingleImage|Any CPU = SingleImage|Any CPU SingleImage|Any CPU = SingleImage|Any CPU
SingleImage|Mixed Platforms = SingleImage|Mixed Platforms SingleImage|Mixed Platforms = SingleImage|Mixed Platforms
SingleImage|x64 = SingleImage|x64
SingleImage|x86 = SingleImage|x86 SingleImage|x86 = SingleImage|x86
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
@@ -32,78 +37,108 @@ Global
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.CD_ROM|Any CPU.Build.0 = Release|Any CPU {BDCC148B-4C84-4A48-80CF-4C56057294E0}.CD_ROM|Any CPU.Build.0 = Release|Any CPU
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.CD_ROM|Mixed Platforms.ActiveCfg = Debug|Any CPU {BDCC148B-4C84-4A48-80CF-4C56057294E0}.CD_ROM|Mixed Platforms.ActiveCfg = Debug|Any CPU
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.CD_ROM|Mixed Platforms.Build.0 = Debug|Any CPU {BDCC148B-4C84-4A48-80CF-4C56057294E0}.CD_ROM|Mixed Platforms.Build.0 = Debug|Any CPU
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.CD_ROM|x64.ActiveCfg = Release|x64
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.CD_ROM|x64.Build.0 = Release|x64
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.CD_ROM|x86.ActiveCfg = Debug|Any CPU {BDCC148B-4C84-4A48-80CF-4C56057294E0}.CD_ROM|x86.ActiveCfg = Debug|Any CPU
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BDCC148B-4C84-4A48-80CF-4C56057294E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.Debug|Any CPU.Build.0 = Debug|Any CPU {BDCC148B-4C84-4A48-80CF-4C56057294E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {BDCC148B-4C84-4A48-80CF-4C56057294E0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {BDCC148B-4C84-4A48-80CF-4C56057294E0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.Debug|x64.ActiveCfg = Debug|Any CPU
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.Debug|x64.Build.0 = Debug|Any CPU
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.Debug|x86.ActiveCfg = Debug|Any CPU {BDCC148B-4C84-4A48-80CF-4C56057294E0}.Debug|x86.ActiveCfg = Debug|Any CPU
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU {BDCC148B-4C84-4A48-80CF-4C56057294E0}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.DVD-5|Any CPU.Build.0 = Debug|Any CPU {BDCC148B-4C84-4A48-80CF-4C56057294E0}.DVD-5|Any CPU.Build.0 = Debug|Any CPU
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.DVD-5|Mixed Platforms.ActiveCfg = Debug|Any CPU {BDCC148B-4C84-4A48-80CF-4C56057294E0}.DVD-5|Mixed Platforms.ActiveCfg = Debug|Any CPU
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.DVD-5|Mixed Platforms.Build.0 = Debug|Any CPU {BDCC148B-4C84-4A48-80CF-4C56057294E0}.DVD-5|Mixed Platforms.Build.0 = Debug|Any CPU
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.DVD-5|x64.ActiveCfg = Release|x64
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.DVD-5|x64.Build.0 = Release|x64
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.DVD-5|x86.ActiveCfg = Debug|Any CPU {BDCC148B-4C84-4A48-80CF-4C56057294E0}.DVD-5|x86.ActiveCfg = Debug|Any CPU
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.Release|Any CPU.ActiveCfg = Release|Any CPU {BDCC148B-4C84-4A48-80CF-4C56057294E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.Release|Any CPU.Build.0 = Release|Any CPU {BDCC148B-4C84-4A48-80CF-4C56057294E0}.Release|Any CPU.Build.0 = Release|Any CPU
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {BDCC148B-4C84-4A48-80CF-4C56057294E0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.Release|Mixed Platforms.Build.0 = Release|Any CPU {BDCC148B-4C84-4A48-80CF-4C56057294E0}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.Release|x64.ActiveCfg = Release|x64
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.Release|x64.Build.0 = Release|x64
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.Release|x86.ActiveCfg = Release|Any CPU {BDCC148B-4C84-4A48-80CF-4C56057294E0}.Release|x86.ActiveCfg = Release|Any CPU
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU {BDCC148B-4C84-4A48-80CF-4C56057294E0}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.SingleImage|Any CPU.Build.0 = Release|Any CPU {BDCC148B-4C84-4A48-80CF-4C56057294E0}.SingleImage|Any CPU.Build.0 = Release|Any CPU
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.SingleImage|Mixed Platforms.ActiveCfg = Debug|Any CPU {BDCC148B-4C84-4A48-80CF-4C56057294E0}.SingleImage|Mixed Platforms.ActiveCfg = Debug|Any CPU
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.SingleImage|Mixed Platforms.Build.0 = Debug|Any CPU {BDCC148B-4C84-4A48-80CF-4C56057294E0}.SingleImage|Mixed Platforms.Build.0 = Debug|Any CPU
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.SingleImage|x64.ActiveCfg = Release|x64
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.SingleImage|x64.Build.0 = Release|x64
{BDCC148B-4C84-4A48-80CF-4C56057294E0}.SingleImage|x86.ActiveCfg = Debug|Any CPU {BDCC148B-4C84-4A48-80CF-4C56057294E0}.SingleImage|x86.ActiveCfg = Debug|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU {F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.CD_ROM|Any CPU.Build.0 = Release|Any CPU {F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.CD_ROM|Any CPU.Build.0 = Release|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.CD_ROM|Mixed Platforms.ActiveCfg = Release|Any CPU {F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.CD_ROM|Mixed Platforms.ActiveCfg = Release|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.CD_ROM|Mixed Platforms.Build.0 = Release|Any CPU {F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.CD_ROM|Mixed Platforms.Build.0 = Release|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.CD_ROM|x64.ActiveCfg = Release|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.CD_ROM|x64.Build.0 = Release|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.CD_ROM|x86.ActiveCfg = Release|Any CPU {F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.CD_ROM|x86.ActiveCfg = Release|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.Debug|Any CPU.Build.0 = Debug|Any CPU {F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU {F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.Debug|x64.ActiveCfg = Debug|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.Debug|x64.Build.0 = Debug|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.Debug|x86.ActiveCfg = Debug|Any CPU {F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.Debug|x86.ActiveCfg = Debug|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU {F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.DVD-5|Any CPU.Build.0 = Debug|Any CPU {F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.DVD-5|Any CPU.Build.0 = Debug|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.DVD-5|Mixed Platforms.ActiveCfg = Debug|Any CPU {F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.DVD-5|Mixed Platforms.ActiveCfg = Debug|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.DVD-5|Mixed Platforms.Build.0 = Debug|Any CPU {F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.DVD-5|Mixed Platforms.Build.0 = Debug|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.DVD-5|x64.ActiveCfg = Release|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.DVD-5|x64.Build.0 = Release|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.DVD-5|x86.ActiveCfg = Debug|Any CPU {F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.DVD-5|x86.ActiveCfg = Debug|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.Release|Any CPU.ActiveCfg = Release|Any CPU {F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.Release|Any CPU.Build.0 = Release|Any CPU {F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.Release|Any CPU.Build.0 = Release|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.Release|Mixed Platforms.Build.0 = Release|Any CPU {F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.Release|x64.ActiveCfg = Release|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.Release|x64.Build.0 = Release|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.Release|x86.ActiveCfg = Release|Any CPU {F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.Release|x86.ActiveCfg = Release|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU {F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.SingleImage|Any CPU.Build.0 = Release|Any CPU {F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.SingleImage|Any CPU.Build.0 = Release|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.SingleImage|Mixed Platforms.ActiveCfg = Release|Any CPU {F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.SingleImage|Mixed Platforms.ActiveCfg = Release|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.SingleImage|Mixed Platforms.Build.0 = Release|Any CPU {F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.SingleImage|Mixed Platforms.Build.0 = Release|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.SingleImage|x64.ActiveCfg = Release|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.SingleImage|x64.Build.0 = Release|Any CPU
{F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.SingleImage|x86.ActiveCfg = Release|Any CPU {F1C8A9DF-2452-4E3B-9C32-0C792F6ED2E6}.SingleImage|x86.ActiveCfg = Release|Any CPU
{A7F7585A-C46A-4436-9F6E-17629325CE58}.CD_ROM|Any CPU.ActiveCfg = Release|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.CD_ROM|Any CPU.ActiveCfg = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.CD_ROM|Any CPU.Build.0 = Release|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.CD_ROM|Any CPU.Build.0 = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.CD_ROM|Mixed Platforms.ActiveCfg = Release|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.CD_ROM|Mixed Platforms.ActiveCfg = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.CD_ROM|Mixed Platforms.Build.0 = Release|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.CD_ROM|Mixed Platforms.Build.0 = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.CD_ROM|x64.ActiveCfg = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.CD_ROM|x64.Build.0 = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.CD_ROM|x86.ActiveCfg = Release|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.CD_ROM|x86.ActiveCfg = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.CD_ROM|x86.Build.0 = Release|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.CD_ROM|x86.Build.0 = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.Debug|Any CPU.ActiveCfg = Debug|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.Debug|Any CPU.ActiveCfg = Debug|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.Debug|Mixed Platforms.Build.0 = Debug|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.Debug|Mixed Platforms.Build.0 = Debug|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.Debug|x64.ActiveCfg = Debug|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.Debug|x64.Build.0 = Debug|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.Debug|x86.ActiveCfg = Debug|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.Debug|x86.ActiveCfg = Debug|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.Debug|x86.Build.0 = Debug|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.Debug|x86.Build.0 = Debug|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.DVD-5|Any CPU.ActiveCfg = Release|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.DVD-5|Any CPU.ActiveCfg = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.DVD-5|Any CPU.Build.0 = Release|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.DVD-5|Any CPU.Build.0 = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.DVD-5|Mixed Platforms.ActiveCfg = Debug|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.DVD-5|Mixed Platforms.ActiveCfg = Debug|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.DVD-5|Mixed Platforms.Build.0 = Debug|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.DVD-5|Mixed Platforms.Build.0 = Debug|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.DVD-5|x64.ActiveCfg = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.DVD-5|x64.Build.0 = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.DVD-5|x86.ActiveCfg = Debug|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.DVD-5|x86.ActiveCfg = Debug|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.DVD-5|x86.Build.0 = Debug|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.DVD-5|x86.Build.0 = Debug|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.Release|Any CPU.ActiveCfg = Release|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.Release|Any CPU.ActiveCfg = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.Release|Mixed Platforms.ActiveCfg = Release|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.Release|Mixed Platforms.ActiveCfg = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.Release|Mixed Platforms.Build.0 = Release|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.Release|Mixed Platforms.Build.0 = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.Release|x64.ActiveCfg = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.Release|x64.Build.0 = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.Release|x86.ActiveCfg = Release|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.Release|x86.ActiveCfg = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.Release|x86.Build.0 = Release|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.Release|x86.Build.0 = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.SingleImage|Any CPU.ActiveCfg = Release|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.SingleImage|Any CPU.ActiveCfg = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.SingleImage|Any CPU.Build.0 = Release|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.SingleImage|Any CPU.Build.0 = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.SingleImage|Mixed Platforms.ActiveCfg = Release|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.SingleImage|Mixed Platforms.ActiveCfg = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.SingleImage|Mixed Platforms.Build.0 = Release|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.SingleImage|Mixed Platforms.Build.0 = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.SingleImage|x64.ActiveCfg = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.SingleImage|x64.Build.0 = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.SingleImage|x86.ActiveCfg = Release|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.SingleImage|x86.ActiveCfg = Release|x86
{A7F7585A-C46A-4436-9F6E-17629325CE58}.SingleImage|x86.Build.0 = Release|x86 {A7F7585A-C46A-4436-9F6E-17629325CE58}.SingleImage|x86.Build.0 = Release|x86
EndGlobalSection EndGlobalSection