Neue Exportfunktion und UI-Verbesserungen

- `MouseWheelMode` im `DocumentViewer` auf vertikales Scrollen geändert.
- Neue Parameter (`WM_SUFFIX`, `MAP_SHAREDRIVE`, `SavetoDrive`) für Dokumentenverarbeitung hinzugefügt.
- `GridView1` durch `GridViewResult` ersetzt.
- Schaltfläche `bbtnitemExportFiles` für Datei-Export hinzugefügt.
- Logik für temporäre Kopien (`CopyWM2Temp`) in `frmDocumentResultList` implementiert.
- Ressourcen und Layouts in mehreren Dateien aktualisiert.
- Neue Schaltfläche `BarButtonItem6` in `frmSQLEditor` hinzugefügt.
This commit is contained in:
Developer01
2026-06-05 11:21:39 +02:00
parent 45485400e1
commit a6f3031860
11 changed files with 357 additions and 188 deletions

View File

@@ -13,6 +13,10 @@ Namespace DocumentResultList
Public ProfileGuid As Integer
Public ShowBackNavigation As Boolean = True
Public ShowFileList As Boolean = True
Public WM_SUFFIX As String = ""
Public MAP_SHAREDRIVE As String = ""
Public MAP_BLACKLIST As String
Public SavetoDrive As Boolean = False
End Class
Public Class DocumentResult

View File

@@ -24,7 +24,7 @@ Partial Class frmDocumentResultList
Dim FadeTransition1 As DevExpress.Utils.Animation.FadeTransition = New DevExpress.Utils.Animation.FadeTransition()
Me.SplitContainerControl1 = New DevExpress.XtraEditors.SplitContainerControl()
Me.GridControl1 = New DevExpress.XtraGrid.GridControl()
Me.GridView1 = New DevExpress.XtraGrid.Views.BandedGrid.BandedGridView()
Me.GridViewResult = New DevExpress.XtraGrid.Views.BandedGrid.BandedGridView()
Me.GridBand1 = New DevExpress.XtraGrid.Views.BandedGrid.GridBand()
Me.RibbonControl = New DevExpress.XtraBars.Ribbon.RibbonControl()
Me.SvgImageCollection1 = New DevExpress.Utils.SvgImageCollection(Me.components)
@@ -68,13 +68,13 @@ Partial Class frmDocumentResultList
Me.btnSaveWorkspaceAs = New DevExpress.XtraBars.BarButtonItem()
Me.btnSaveAsMySearch = New DevExpress.XtraBars.BarButtonItem()
Me.lblCurrentWorkspace = New DevExpress.XtraBars.BarStaticItem()
Me.BarButtonItem6 = New DevExpress.XtraBars.BarButtonItem()
Me.bbtnitemExportFiles = New DevExpress.XtraBars.BarButtonItem()
Me.RibbonPageStart = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.RibbonPageGroup_Navigation = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageGroupExport = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageRefresh = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageGroupDocument = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageGroupFilesystem = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageGroupExport = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageGroupCheckInOut = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageGroupWorkflow = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageGroupAttribute = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
@@ -124,7 +124,7 @@ Partial Class frmDocumentResultList
Me.SplitContainerControl1.Panel2.SuspendLayout()
Me.SplitContainerControl1.SuspendLayout()
CType(Me.GridControl1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.GridView1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.GridViewResult, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.RibbonControl, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.SvgImageCollection1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.cmbGridFontSize, System.ComponentModel.ISupportInitialize).BeginInit()
@@ -184,27 +184,27 @@ Partial Class frmDocumentResultList
'GridControl1
'
resources.ApplyResources(Me.GridControl1, "GridControl1")
Me.GridControl1.MainView = Me.GridView1
Me.GridControl1.MainView = Me.GridViewResult
Me.GridControl1.MenuManager = Me.RibbonControl
Me.GridControl1.Name = "GridControl1"
Me.GridControl1.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.GridView1})
Me.GridControl1.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.GridViewResult})
'
'GridView1
'GridViewResult
'
Me.GridView1.Appearance.FocusedCell.BackColor = System.Drawing.Color.Gainsboro
Me.GridView1.Appearance.FocusedCell.Options.UseBackColor = True
Me.GridView1.Appearance.FocusedRow.BackColor = System.Drawing.Color.Gainsboro
Me.GridView1.Appearance.FocusedRow.Options.UseBackColor = True
Me.GridView1.Bands.AddRange(New DevExpress.XtraGrid.Views.BandedGrid.GridBand() {Me.GridBand1})
Me.GridView1.GridControl = Me.GridControl1
Me.GridView1.Name = "GridView1"
Me.GridView1.OptionsBehavior.Editable = False
Me.GridView1.OptionsBehavior.ReadOnly = True
Me.GridView1.OptionsSelection.EnableAppearanceFocusedCell = False
Me.GridView1.OptionsView.ShowAutoFilterRow = True
Me.GridView1.OptionsView.ShowHorizontalLines = DevExpress.Utils.DefaultBoolean.[False]
Me.GridView1.OptionsView.ShowIndicator = False
Me.GridView1.OptionsView.ShowVerticalLines = DevExpress.Utils.DefaultBoolean.[False]
Me.GridViewResult.Appearance.FocusedCell.BackColor = System.Drawing.Color.Gainsboro
Me.GridViewResult.Appearance.FocusedCell.Options.UseBackColor = True
Me.GridViewResult.Appearance.FocusedRow.BackColor = System.Drawing.Color.Gainsboro
Me.GridViewResult.Appearance.FocusedRow.Options.UseBackColor = True
Me.GridViewResult.Bands.AddRange(New DevExpress.XtraGrid.Views.BandedGrid.GridBand() {Me.GridBand1})
Me.GridViewResult.GridControl = Me.GridControl1
Me.GridViewResult.Name = "GridViewResult"
Me.GridViewResult.OptionsBehavior.Editable = False
Me.GridViewResult.OptionsBehavior.ReadOnly = True
Me.GridViewResult.OptionsSelection.EnableAppearanceFocusedCell = False
Me.GridViewResult.OptionsView.ShowAutoFilterRow = True
Me.GridViewResult.OptionsView.ShowHorizontalLines = DevExpress.Utils.DefaultBoolean.[False]
Me.GridViewResult.OptionsView.ShowIndicator = False
Me.GridViewResult.OptionsView.ShowVerticalLines = DevExpress.Utils.DefaultBoolean.[False]
'
'GridBand1
'
@@ -222,9 +222,9 @@ Partial Class frmDocumentResultList
Me.RibbonControl.ColorScheme = DevExpress.XtraBars.Ribbon.RibbonControlColorScheme.Green
Me.RibbonControl.ExpandCollapseItem.Id = 0
Me.RibbonControl.Images = Me.SvgImageCollection1
Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem, Me.RibbonControl.SearchEditItem, Me.SwitchMainContainerHorizontal, Me.SwitchDetailContainerHorizontal, Me.BarButtonItemExportGrid1, Me.BarStaticItem1, Me.labelResultCount, Me.BarButtonBack, Me.BarButtonResetGridLayout, Me.labelCriticalError, Me.labelWarning, Me.MenuItemFileOpen, Me.MenuItemPropertiesIDB, Me.MenuItemFolderOpen, Me.MenuItemFilepathCopy, Me.MenuItemFolderpathCopy, Me.MenuItemProperties, Me.MenuItemsOpenFileZooFlow, Me.MenuItemPropertiesZooFlow, Me.ButtonRefresh, Me.BarButtonItem1, Me.BarButtonItem2, Me.BarButtonItem3, Me.BarButtonItem4, Me.BarButtonItem5, Me.MenuItemStartAdhocWorkflow, Me.MenuItemCheckInFile, Me.MenuItemCheckOutFile, Me.MenuItemVersionFile, Me.chkGridShowQuickfilter, Me.chkGridShowGrouping, Me.chkGridShowTitle, Me.MenuItemSaveProperties, Me.BarButtonItem11, Me.BarEditItemGridFontSize, Me.btnSaveWorkspace, Me.BarWorkspaceMenuItem1, Me.btnSaveWorkspaceAs, Me.btnSaveAsMySearch, Me.lblCurrentWorkspace, Me.BarButtonItem6})
Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem, Me.RibbonControl.SearchEditItem, Me.SwitchMainContainerHorizontal, Me.SwitchDetailContainerHorizontal, Me.BarButtonItemExportGrid1, Me.BarStaticItem1, Me.labelResultCount, Me.BarButtonBack, Me.BarButtonResetGridLayout, Me.labelCriticalError, Me.labelWarning, Me.MenuItemFileOpen, Me.MenuItemPropertiesIDB, Me.MenuItemFolderOpen, Me.MenuItemFilepathCopy, Me.MenuItemFolderpathCopy, Me.MenuItemProperties, Me.MenuItemsOpenFileZooFlow, Me.MenuItemPropertiesZooFlow, Me.ButtonRefresh, Me.BarButtonItem1, Me.BarButtonItem2, Me.BarButtonItem3, Me.BarButtonItem4, Me.BarButtonItem5, Me.MenuItemStartAdhocWorkflow, Me.MenuItemCheckInFile, Me.MenuItemCheckOutFile, Me.MenuItemVersionFile, Me.chkGridShowQuickfilter, Me.chkGridShowGrouping, Me.chkGridShowTitle, Me.MenuItemSaveProperties, Me.BarButtonItem11, Me.BarEditItemGridFontSize, Me.btnSaveWorkspace, Me.BarWorkspaceMenuItem1, Me.btnSaveWorkspaceAs, Me.btnSaveAsMySearch, Me.lblCurrentWorkspace, Me.bbtnitemExportFiles})
resources.ApplyResources(Me.RibbonControl, "RibbonControl")
Me.RibbonControl.MaxItemId = 62
Me.RibbonControl.MaxItemId = 63
Me.RibbonControl.Name = "RibbonControl"
Me.RibbonControl.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPageStart, Me.RibbonPage2})
Me.RibbonControl.RepositoryItems.AddRange(New DevExpress.XtraEditors.Repository.RepositoryItem() {Me.RepositoryItemTextEdit1, Me.RepositoryItemTextEdit2, Me.RepositoryItemSearchControl1, Me.cmbGridFontSize})
@@ -258,7 +258,6 @@ Partial Class frmDocumentResultList
Me.BarButtonItemExportGrid1.Id = 3
Me.BarButtonItemExportGrid1.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItemExportGrid1.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.BarButtonItemExportGrid1.Name = "BarButtonItemExportGrid1"
Me.BarButtonItemExportGrid1.Visibility = DevExpress.XtraBars.BarItemVisibility.OnlyInCustomizing
'
'BarStaticItem1
'
@@ -531,16 +530,16 @@ Partial Class frmDocumentResultList
Me.lblCurrentWorkspace.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph
Me.lblCurrentWorkspace.Tag = "Arbeitsbereich: {0}"
'
'BarButtonItem6
'bbtnitemExportFiles
'
resources.ApplyResources(Me.BarButtonItem6, "BarButtonItem6")
Me.BarButtonItem6.Id = 61
Me.BarButtonItem6.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem6.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.BarButtonItem6.Name = "BarButtonItem6"
resources.ApplyResources(Me.bbtnitemExportFiles, "bbtnitemExportFiles")
Me.bbtnitemExportFiles.Id = 61
Me.bbtnitemExportFiles.ImageOptions.SvgImage = CType(resources.GetObject("bbtnitemExportFiles.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.bbtnitemExportFiles.Name = "bbtnitemExportFiles"
'
'RibbonPageStart
'
Me.RibbonPageStart.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup_Navigation, Me.RibbonPageGroupExport, Me.RibbonPageRefresh, Me.RibbonPageGroupDocument, Me.RibbonPageGroupFilesystem, Me.RibbonPageGroupCheckInOut, Me.RibbonPageGroupWorkflow, Me.RibbonPageGroupAttribute, Me.RibbonPageGroupWorkspace, Me.RibbonPageGroupSavedSearch})
Me.RibbonPageStart.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup_Navigation, Me.RibbonPageRefresh, Me.RibbonPageGroupDocument, Me.RibbonPageGroupFilesystem, Me.RibbonPageGroupExport, Me.RibbonPageGroupCheckInOut, Me.RibbonPageGroupWorkflow, Me.RibbonPageGroupAttribute, Me.RibbonPageGroupWorkspace, Me.RibbonPageGroupSavedSearch})
Me.RibbonPageStart.Name = "RibbonPageStart"
resources.ApplyResources(Me.RibbonPageStart, "RibbonPageStart")
'
@@ -551,14 +550,6 @@ Partial Class frmDocumentResultList
Me.RibbonPageGroup_Navigation.Name = "RibbonPageGroup_Navigation"
resources.ApplyResources(Me.RibbonPageGroup_Navigation, "RibbonPageGroup_Navigation")
'
'RibbonPageGroupExport
'
Me.RibbonPageGroupExport.Alignment = DevExpress.XtraBars.Ribbon.RibbonPageGroupAlignment.Far
Me.RibbonPageGroupExport.ItemLinks.Add(Me.BarButtonItemExportGrid1)
Me.RibbonPageGroupExport.ItemLinks.Add(Me.BarButtonItem6)
Me.RibbonPageGroupExport.Name = "RibbonPageGroupExport"
resources.ApplyResources(Me.RibbonPageGroupExport, "RibbonPageGroupExport")
'
'RibbonPageRefresh
'
Me.RibbonPageRefresh.Alignment = DevExpress.XtraBars.Ribbon.RibbonPageGroupAlignment.Far
@@ -581,6 +572,13 @@ Partial Class frmDocumentResultList
Me.RibbonPageGroupFilesystem.Name = "RibbonPageGroupFilesystem"
resources.ApplyResources(Me.RibbonPageGroupFilesystem, "RibbonPageGroupFilesystem")
'
'RibbonPageGroupExport
'
Me.RibbonPageGroupExport.ItemLinks.Add(Me.BarButtonItemExportGrid1)
Me.RibbonPageGroupExport.ItemLinks.Add(Me.bbtnitemExportFiles)
Me.RibbonPageGroupExport.Name = "RibbonPageGroupExport"
resources.ApplyResources(Me.RibbonPageGroupExport, "RibbonPageGroupExport")
'
'RibbonPageGroupCheckInOut
'
Me.RibbonPageGroupCheckInOut.ItemLinks.Add(Me.MenuItemCheckOutFile)
@@ -887,7 +885,7 @@ Partial Class frmDocumentResultList
Me.LayoutControlItem1.Name = "LayoutControlItem1"
Me.LayoutControlItem1.Size = New System.Drawing.Size(224, 24)
resources.ApplyResources(Me.LayoutControlItem1, "LayoutControlItem1")
Me.LayoutControlItem1.TextSize = New System.Drawing.Size(124, 13)
Me.LayoutControlItem1.TextSize = New System.Drawing.Size(126, 13)
'
'LayoutControlItem2
'
@@ -896,7 +894,7 @@ Partial Class frmDocumentResultList
Me.LayoutControlItem2.Name = "LayoutControlItem2"
Me.LayoutControlItem2.Size = New System.Drawing.Size(224, 24)
resources.ApplyResources(Me.LayoutControlItem2, "LayoutControlItem2")
Me.LayoutControlItem2.TextSize = New System.Drawing.Size(124, 13)
Me.LayoutControlItem2.TextSize = New System.Drawing.Size(126, 13)
'
'EmptySpaceItem1
'
@@ -927,9 +925,9 @@ Partial Class frmDocumentResultList
Me.AllowFormGlass = DevExpress.Utils.DefaultBoolean.[True]
resources.ApplyResources(Me, "$this")
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.Controls.Add(Me.DockPanelFileList)
Me.Controls.Add(Me.DockPanelPreview)
Me.Controls.Add(Me.panelContainerStatus)
Me.Controls.Add(Me.DockPanelFileList)
Me.Controls.Add(Me.RibbonStatusBar)
Me.Controls.Add(Me.RibbonControl)
Me.IconOptions.Icon = CType(resources.GetObject("frmDocumentResultList.IconOptions.Icon"), System.Drawing.Icon)
@@ -944,7 +942,7 @@ Partial Class frmDocumentResultList
CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).EndInit()
Me.SplitContainerControl1.ResumeLayout(False)
CType(Me.GridControl1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.GridView1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.GridViewResult, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.RibbonControl, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.SvgImageCollection1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.cmbGridFontSize, System.ComponentModel.ISupportInitialize).EndInit()
@@ -1012,7 +1010,7 @@ Partial Class frmDocumentResultList
Friend WithEvents RepositoryItemTextEdit2 As DevExpress.XtraEditors.Repository.RepositoryItemTextEdit
Friend WithEvents labelCriticalError As DevExpress.XtraBars.BarStaticItem
Friend WithEvents labelWarning As DevExpress.XtraBars.BarStaticItem
Friend WithEvents GridView1 As DevExpress.XtraGrid.Views.BandedGrid.BandedGridView
Friend WithEvents GridViewResult As DevExpress.XtraGrid.Views.BandedGrid.BandedGridView
Friend WithEvents GridBand1 As DevExpress.XtraGrid.Views.BandedGrid.GridBand
Friend WithEvents MenuItemFileOpen As DevExpress.XtraBars.BarButtonItem
Friend WithEvents MenuItemPropertiesIDB As DevExpress.XtraBars.BarButtonItem
@@ -1080,5 +1078,5 @@ Partial Class frmDocumentResultList
Friend WithEvents btnSaveAsMySearch As DevExpress.XtraBars.BarButtonItem
Friend WithEvents RibbonPageGroupSavedSearch As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents lblCurrentWorkspace As DevExpress.XtraBars.BarStaticItem
Friend WithEvents BarButtonItem6 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents bbtnitemExportFiles As DevExpress.XtraBars.BarButtonItem
End Class

View File

@@ -505,48 +505,6 @@
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>1189, 671</value>
</data>
<data name="DockPanel2_Container.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 46</value>
</data>
<data name="DockPanel2_Container.Size" type="System.Drawing.Size, System.Drawing">
<value>583, 442</value>
</data>
<data name="DockPanel2_Container.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;DockPanel2_Container.Name" xml:space="preserve">
<value>DockPanel2_Container</value>
</data>
<data name="&gt;&gt;DockPanel2_Container.Type" xml:space="preserve">
<value>DevExpress.XtraBars.Docking.ControlContainer, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;DockPanel2_Container.Parent" xml:space="preserve">
<value>DockPanelFileList</value>
</data>
<data name="&gt;&gt;DockPanel2_Container.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="DockPanelFileList.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 158</value>
</data>
<data name="DockPanelFileList.Size" type="System.Drawing.Size, System.Drawing">
<value>590, 491</value>
</data>
<data name="DockPanelFileList.Text" xml:space="preserve">
<value>Ergebnisse</value>
</data>
<data name="&gt;&gt;DockPanelFileList.Name" xml:space="preserve">
<value>DockPanelFileList</value>
</data>
<data name="&gt;&gt;DockPanelFileList.Type" xml:space="preserve">
<value>DevExpress.XtraBars.Docking.DockPanel, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;DockPanelFileList.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;DockPanelFileList.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="DocumentViewer1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
@@ -563,7 +521,7 @@
<value>DocumentViewer1</value>
</data>
<data name="&gt;&gt;DocumentViewer1.Type" xml:space="preserve">
<value>DigitalData.Controls.DocumentViewer.DocumentViewer, DigitalData.Controls.DocumentViewer, Version=2.7.0.0, Culture=neutral, PublicKeyToken=null</value>
<value>DigitalData.Controls.DocumentViewer.DocumentViewer, DigitalData.Controls.DocumentViewer, Version=2.7.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;DocumentViewer1.Parent" xml:space="preserve">
<value>DockPanel1_Container</value>
@@ -611,7 +569,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;DockPanelPreview.ZOrder" xml:space="preserve">
<value>1</value>
<value>0</value>
</data>
<data name="CtrlObjectPropertyDialog.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
@@ -680,10 +638,10 @@
<value>0</value>
</data>
<data name="txtCheckedOutWho.Location" type="System.Drawing.Point, System.Drawing">
<value>160, 45</value>
<value>162, 45</value>
</data>
<data name="txtCheckedOutWho.Size" type="System.Drawing.Size, System.Drawing">
<value>84, 20</value>
<value>82, 20</value>
</data>
<data name="txtCheckedOutWho.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
@@ -704,7 +662,7 @@
<value />
</data>
<data name="dateCheckedOutWhen.Location" type="System.Drawing.Point, System.Drawing">
<value>160, 69</value>
<value>162, 69</value>
</data>
<data name="dateCheckedOutWhen.Properties.Buttons" type="DevExpress.XtraEditors.Controls.ButtonPredefines, DevExpress.Utils.v21.2">
<value>Combo</value>
@@ -713,7 +671,7 @@
<value>Combo</value>
</data>
<data name="dateCheckedOutWhen.Size" type="System.Drawing.Size, System.Drawing">
<value>84, 20</value>
<value>82, 20</value>
</data>
<data name="dateCheckedOutWhen.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
@@ -827,6 +785,48 @@
<value>$this</value>
</data>
<data name="&gt;&gt;panelContainerStatus.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="DockPanel2_Container.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 46</value>
</data>
<data name="DockPanel2_Container.Size" type="System.Drawing.Size, System.Drawing">
<value>583, 442</value>
</data>
<data name="DockPanel2_Container.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;DockPanel2_Container.Name" xml:space="preserve">
<value>DockPanel2_Container</value>
</data>
<data name="&gt;&gt;DockPanel2_Container.Type" xml:space="preserve">
<value>DevExpress.XtraBars.Docking.ControlContainer, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;DockPanel2_Container.Parent" xml:space="preserve">
<value>DockPanelFileList</value>
</data>
<data name="&gt;&gt;DockPanel2_Container.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="DockPanelFileList.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 158</value>
</data>
<data name="DockPanelFileList.Size" type="System.Drawing.Size, System.Drawing">
<value>590, 491</value>
</data>
<data name="DockPanelFileList.Text" xml:space="preserve">
<value>Ergebnisse</value>
</data>
<data name="&gt;&gt;DockPanelFileList.Name" xml:space="preserve">
<value>DockPanelFileList</value>
</data>
<data name="&gt;&gt;DockPanelFileList.Type" xml:space="preserve">
<value>DevExpress.XtraBars.Docking.DockPanel, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;DockPanelFileList.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;DockPanelFileList.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="lblCurrentWorkspace.Caption" xml:space="preserve">
@@ -933,10 +933,10 @@
<data name="$this.Text" xml:space="preserve">
<value>Dokumenten Suche</value>
</data>
<data name="&gt;&gt;GridView1.Name" xml:space="preserve">
<value>GridView1</value>
<data name="&gt;&gt;GridViewResult.Name" xml:space="preserve">
<value>GridViewResult</value>
</data>
<data name="&gt;&gt;GridView1.Type" xml:space="preserve">
<data name="&gt;&gt;GridViewResult.Type" xml:space="preserve">
<value>DevExpress.XtraGrid.Views.BandedGrid.BandedGridView, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;GridBand1.Name" xml:space="preserve">
@@ -1191,10 +1191,10 @@
<data name="&gt;&gt;lblCurrentWorkspace.Type" xml:space="preserve">
<value>DevExpress.XtraBars.BarStaticItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;BarButtonItem6.Name" xml:space="preserve">
<value>BarButtonItem6</value>
<data name="&gt;&gt;bbtnitemExportFiles.Name" xml:space="preserve">
<value>bbtnitemExportFiles</value>
</data>
<data name="&gt;&gt;BarButtonItem6.Type" xml:space="preserve">
<data name="&gt;&gt;bbtnitemExportFiles.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;RibbonPageStart.Name" xml:space="preserve">
@@ -1209,12 +1209,6 @@
<data name="&gt;&gt;RibbonPageGroup_Navigation.Type" xml:space="preserve">
<value>DevExpress.XtraBars.Ribbon.RibbonPageGroup, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;RibbonPageGroupExport.Name" xml:space="preserve">
<value>RibbonPageGroupExport</value>
</data>
<data name="&gt;&gt;RibbonPageGroupExport.Type" xml:space="preserve">
<value>DevExpress.XtraBars.Ribbon.RibbonPageGroup, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;RibbonPageRefresh.Name" xml:space="preserve">
<value>RibbonPageRefresh</value>
</data>
@@ -1233,6 +1227,12 @@
<data name="&gt;&gt;RibbonPageGroupFilesystem.Type" xml:space="preserve">
<value>DevExpress.XtraBars.Ribbon.RibbonPageGroup, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;RibbonPageGroupExport.Name" xml:space="preserve">
<value>RibbonPageGroupExport</value>
</data>
<data name="&gt;&gt;RibbonPageGroupExport.Type" xml:space="preserve">
<value>DevExpress.XtraBars.Ribbon.RibbonPageGroup, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;RibbonPageGroupCheckInOut.Name" xml:space="preserve">
<value>RibbonPageGroupCheckInOut</value>
</data>
@@ -1389,10 +1389,10 @@
<data name="btnSaveAsMySearch.Caption" xml:space="preserve">
<value>Als meine Suche speichern</value>
</data>
<data name="BarButtonItem6.Caption" xml:space="preserve">
<data name="bbtnitemExportFiles.Caption" xml:space="preserve">
<value>Export</value>
</data>
<data name="BarButtonItem6.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<data name="bbtnitemExportFiles.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -1415,9 +1415,6 @@
<data name="RibbonPageGroup_Navigation.Text" xml:space="preserve">
<value>Navigation</value>
</data>
<data name="RibbonPageGroupExport.Text" xml:space="preserve">
<value>Export</value>
</data>
<data name="RibbonPageRefresh.Text" xml:space="preserve">
<value>Aktualisieren</value>
</data>
@@ -1427,6 +1424,9 @@
<data name="RibbonPageGroupFilesystem.Text" xml:space="preserve">
<value>Dateien und Ordner</value>
</data>
<data name="RibbonPageGroupExport.Text" xml:space="preserve">
<value>Export</value>
</data>
<data name="RibbonPageGroupCheckInOut.Text" xml:space="preserve">
<value>Bearbeiten</value>
</data>

View File

@@ -32,6 +32,8 @@ Public Class frmDocumentResultList
Private ReadOnly Property _Logger As Logger Implements IBaseForm._Logger
Public Property ShouldReturnToPreviousForm As Boolean = False Implements IResultForm.ShouldReturnToPreviousForm
Private Const CopyWM2Temp As Boolean = False
' Helper Classes
Private EDMI_API_Client As Client
Private Documentloader As Loader
@@ -54,6 +56,7 @@ Public Class frmDocumentResultList
Private WM_SUFFIX As String = "\\WINDREAM\OBJECTS"
Private MAP_SHAREDRIVE As String = ""
Private MAP_BLACKLIST As String = ""
Private SavetoDrive As Boolean = False
' Runtime variables
Private Property ResultLists As List(Of DocumentResult)
@@ -119,6 +122,11 @@ Public Class frmDocumentResultList
LogConfig = pLogConfig
_Logger = pLogConfig.GetLogger()
SavetoDrive = pParams.SavetoDrive
_Logger.Debug("SavetoDrive setting is set to [{0}]", SavetoDrive)
FormHelper = New FormHelper(pLogConfig, Me)
_documentPathHandler = New DocumentPathHandler(pLogConfig)
@@ -129,10 +137,16 @@ Public Class frmDocumentResultList
Config = New ConfigManager(Of Config)(pLogConfig, oConfigPath, oConfigPath)
Helpers = New DocumentResultList.Helpers(pLogConfig)
Filesystem = New FilesystemEx(pLogConfig)
GridBuilder = New GridBuilder(New List(Of GridView) From {GridView1, GridView2, GridView3})
GridBuilder = New GridBuilder(New List(Of GridView) From {GridViewResult, GridView2, GridView3})
FileEx = New Modules.Windows.File(pLogConfig)
LayoutManager = New Layout(pLogConfig, Config, New List(Of GridView) From {GridView1, GridView2, GridView3}, pEnvironment)
LayoutManager = New Layout(pLogConfig, Config, New List(Of GridView) From {GridViewResult, GridView2, GridView3}, pEnvironment)
Workspace = New Workspace(Of Config)(pLogConfig, Config, WorkspaceManager1, UserLanguage)
CopyWMFile2Temp = Environment.Settings.CopyWMFile2Temp
WM_SUFFIX = Environment.Settings.WM_SUFFIX
MAP_SHAREDRIVE = Environment.Settings.MAP_SHAREDRIVE
MAP_BLACKLIST = Environment.Settings.MAP_BLACKLIST
_Logger.Info($"Initialisierung frmDocumentResultList mit WM_SUFFIX=[{WM_SUFFIX}], MAP_SHAREDRIVE=[{MAP_SHAREDRIVE}], MAP_BLACKLIST=[{MAP_BLACKLIST}], CopyWMFile2Temp=[{CopyWMFile2Temp}], SavetoDrive = [{SavetoDrive}]")
End Sub
Private Function GetOperationMode() As OperationMode
@@ -221,7 +235,12 @@ Public Class frmDocumentResultList
Else
RibbonPageGroupFilesystem.Visible = False
End If
'If SavetoDrive = True Then
bbtnitemExportFiles.Visibility = BarItemVisibility.Always
'Else
' _Logger.Debug("SavetoDrive is set to False, hiding export button")
' bbtnitemExportFiles.Visibility = BarItemVisibility.Never
'End If
chkGridShowQuickfilter.Checked = LayoutManager.GetFilterRowVisible()
chkGridShowGrouping.Checked = LayoutManager.GetGroupPanelVisible()
chkGridShowTitle.Checked = LayoutManager.GetBandTitleVisible()
@@ -276,7 +295,7 @@ Public Class frmDocumentResultList
' so we can set the row handle and start loading the (only) file
If Params.ShowFileList = False Then
DockPanelFileList.HideImmediately()
GridView1.FocusedRowHandle = 0
GridViewResult.FocusedRowHandle = 0
Else
DockPanelFileList.Show()
End If
@@ -306,10 +325,10 @@ Public Class frmDocumentResultList
End Try
End Sub
Private Sub SelectFirstRowInGrid1()
If GridView1.RowCount > 0 Then
GridView1.FocusedRowHandle = 0
If GridViewResult.RowCount > 0 Then
GridViewResult.FocusedRowHandle = 0
Else
GridView1.FocusedRowHandle = GridControl.InvalidRowHandle
GridViewResult.FocusedRowHandle = GridControl.InvalidRowHandle
End If
End Sub
Private Sub Workspace_WorkspaceLoaded(sender As Object, e As String)
@@ -332,12 +351,20 @@ Public Class frmDocumentResultList
If _documentPathHandler IsNot Nothing Then
_documentPathHandler.Cleanup()
End If
Try
If CopyWM2Temp = True Then
_Logger.Debug("🗑️ Bereinige Temp-Ordner beim Schließen...")
_documentPathHandler.CleanupTempFolder()
End If
Catch cleanupEx As Exception
_Logger.Warn($"⚠️ Fehler beim Bereinigen des Temp-Ordners: {cleanupEx.Message}")
End Try
Catch ex As Exception
_Logger.Error(ex)
End Try
End Sub
Private Async Sub GridView_FocusedRowChanged(sender As GridView, e As FocusedRowChangedEventArgs) Handles GridView1.FocusedRowChanged, GridView2.FocusedRowChanged, GridView3.FocusedRowChanged
Private Async Sub GridView_FocusedRowChanged(sender As GridView, e As FocusedRowChangedEventArgs) Handles GridViewResult.FocusedRowChanged, GridView2.FocusedRowChanged, GridView3.FocusedRowChanged
Helpers.SetRowHandle(e)
Try
@@ -367,25 +394,34 @@ Public Class frmDocumentResultList
' Load Document in Document Viewer
Dim oFileName = $"{oObjectId}.{oDocument.Extension}"
'If CopyWMFile2Temp = True Then
' _Logger.Debug("Loading document into viewer with path handler and copying WM file to temp. ObjectId: [{0}], Filename: [{1}], FullPath: [{2}]", oObjectId, oFileName, oFullPath)
' ' Optionen konfigurieren
' Dim options As New DocumentPathHandler.DocumentPathOptions With {
' .EnableMapping = True,
' .WMSuffix = WM_SUFFIX,
' .SpecificDrive = If(Len(MAP_SHAREDRIVE) = 1, MAP_SHAREDRIVE, ""),
' .DriveBlacklist = MAP_BLACKLIST,
' .CopyToTemp = True,
' .TempFolder = TEMP_DOCUMENT_FOLDER,
' .UnmapAfterCopy = True
' }
'Else
If Not IsNothing(oDocument.Contents) Then
If Not IsNothing(oDocument.Contents) And CopyWM2Temp = False Then
_Logger.Debug("Loading document into viewer with MemoryStream handler (LoadFile_FromStream). ObjectId: [{0}], Filename: [{1}], FullPath: [{2}]", oObjectId, oFileName, oFullPath)
DocumentViewer1.LoadFile_FromStream(oFileName, New MemoryStream(oDocument.Contents))
Else
_Logger.Debug("Loading document into viewer from filepath (LoadFile_FromPath). ObjectId: [{0}], Filename: [{1}], FullPath: [{2}]", oObjectId, oFileName, oFullPath)
DocumentViewer1.LoadFile_FromPath(oFullPath)
Dim oResolvedFilename As String = oFullPath
If CopyWM2Temp = True AndAlso Not String.IsNullOrWhiteSpace(oResolvedFilename) Then
Dim options As New DocumentPathHandler.DocumentPathOptions With {
.EnableMapping = True,
.WMSuffix = WM_SUFFIX,
.SpecificDrive = If(Len(MAP_SHAREDRIVE) = 1, MAP_SHAREDRIVE, ""),
.DriveBlacklist = MAP_BLACKLIST,
.CopyToTemp = True,
.TempFolder = TEMP_DOCUMENT_FOLDER,
.UnmapAfterCopy = True
}
Dim result = _documentPathHandler.ProcessDocumentPath(oResolvedFilename, options)
If result.Success AndAlso Not String.IsNullOrWhiteSpace(result.FinalPath) AndAlso File.Exists(result.FinalPath) Then
_Logger.Info($"✓ Zusatzdokument via Temp aufgelöst: [{result.FinalPath}]")
oResolvedFilename = result.FinalPath
Else
_Logger.Warn($"⚠️ Temp-Auflösung fehlgeschlagen für [{oResolvedFilename}]: {result.ErrorMessage} - Fallback auf Originalpfad")
oResolvedFilename = oFullPath
End If
Else
_Logger.Debug("Keine Temp-Kopie für Dokument erforderlich oder möglich. Originalpfad wird verwendet. ObjectId: [{0}], Filename: [{1}], FullPath: [{2}]", oObjectId, oFileName, oFullPath)
End If
_Logger.Debug("Loading document into viewer from filepath (LoadFile_FromPath). ObjectId: [{0}], Filename: [{1}], FullPath: [{2}]", oObjectId, oFileName, oResolvedFilename)
DocumentViewer1.LoadFile_FromPath(oResolvedFilename)
End If
'End If
@@ -432,16 +468,12 @@ Public Class frmDocumentResultList
' Hide Export and filesystem options for view only right
If pDocument.AccessRight = Rights.AccessRight.VIEW_ONLY Then
DocumentViewer1.SetViewOnly(True)
RibbonPageGroupExport.Visible = False
If OperationMode = OperationMode.NoAppServer Then
RibbonPageGroupFilesystem.Visible = False
MenuItemProperties.Visibility = BarItemVisibility.Never
End If
Else
DocumentViewer1.SetViewOnly(False)
RibbonPageGroupExport.Visible = True
If OperationMode = OperationMode.NoAppServer Then
RibbonPageGroupFilesystem.Visible = True
MenuItemProperties.Visibility = BarItemVisibility.Always
@@ -583,8 +615,8 @@ Public Class frmDocumentResultList
IsLoading = True
Try
' Save current row handle and unset it
Dim oCurrentRowHandle As Integer = GridView1.FocusedRowHandle
GridView1.FocusedRowHandle = GridControl.InvalidRowHandle
Dim oCurrentRowHandle As Integer = GridViewResult.FocusedRowHandle
GridViewResult.FocusedRowHandle = GridControl.InvalidRowHandle
' Save the new results
ResultLists = pResults
@@ -597,12 +629,12 @@ Public Class frmDocumentResultList
LoadGridDataAndLayout()
' Restore old selection only if still valid; otherwise select first row
If GridView1.IsValidRowHandle(oCurrentRowHandle) Then
GridView1.FocusedRowHandle = oCurrentRowHandle
ElseIf GridView1.RowCount > 0 Then
GridView1.FocusedRowHandle = 0
If GridViewResult.IsValidRowHandle(oCurrentRowHandle) Then
GridViewResult.FocusedRowHandle = oCurrentRowHandle
ElseIf GridViewResult.RowCount > 0 Then
GridViewResult.FocusedRowHandle = 0
Else
GridView1.FocusedRowHandle = GridControl.InvalidRowHandle
GridViewResult.FocusedRowHandle = GridControl.InvalidRowHandle
End If
Return True
@@ -653,9 +685,9 @@ Public Class frmDocumentResultList
Case 0
Dim oResult As DocumentResultList.DocumentResult = ResultLists.Item(0)
LoadGridData(GridView1, oResult)
LoadGridData(GridViewResult, oResult)
'LayoutManager.GridView_RestoreLayout(GridView1)
CreateDocumentGrid(GridView1, oResult)
CreateDocumentGrid(GridViewResult, oResult)
UpdateGridHeader(ResultLists, oIndex, oResult.Datatable.Rows.Count)
Case 1
@@ -878,7 +910,7 @@ Public Class frmDocumentResultList
SetActiveGridBand()
End Sub
Private Sub GridView1_FocusedRowChanged(sender As GridView, e As FocusedRowChangedEventArgs) Handles GridView1.FocusedRowChanged, GridView2.FocusedRowChanged, GridView3.FocusedRowChanged
Private Sub GridView1_FocusedRowChanged(sender As GridView, e As FocusedRowChangedEventArgs) Handles GridViewResult.FocusedRowChanged, GridView2.FocusedRowChanged, GridView3.FocusedRowChanged
Dim oGrid As GridControl = sender.GridControl
_ActiveGrid = oGrid
End Sub
@@ -895,7 +927,7 @@ Public Class frmDocumentResultList
End If
End Sub
Private Sub GridView1_ColumnFilterChanged(sender As GridView, e As EventArgs) Handles GridView1.ColumnFilterChanged
Private Sub GridView1_ColumnFilterChanged(sender As GridView, e As EventArgs) Handles GridViewResult.ColumnFilterChanged
Dim oRowCount = sender.RowCount
UpdateGridHeader(ResultLists, 0, oRowCount)
End Sub
@@ -1047,7 +1079,7 @@ Public Class frmDocumentResultList
#End Region
#Region "Drag to Export"
Private Sub GridView1_MouseDown(sender As GridView, e As MouseEventArgs) Handles GridView1.MouseDown
Private Sub GridView1_MouseDown(sender As GridView, e As MouseEventArgs) Handles GridViewResult.MouseDown
If sender.FocusedRowHandle >= 0 Then
Dim oDragSize As Size = SystemInformation.DragSize
@@ -1058,11 +1090,11 @@ Public Class frmDocumentResultList
End If
End Sub
Private Sub GridView1_MouseUp(sender As GridView, e As MouseEventArgs) Handles GridView1.MouseUp
Private Sub GridView1_MouseUp(sender As GridView, e As MouseEventArgs) Handles GridViewResult.MouseUp
_DragBoxFromMouseDown = Rectangle.Empty
End Sub
Private Sub GridView1_MouseMove(sender As GridView, e As MouseEventArgs) Handles GridView1.MouseMove
Private Sub GridView1_MouseMove(sender As GridView, e As MouseEventArgs) Handles GridViewResult.MouseMove
If e.Button AndAlso e.Button = MouseButtons.Left Then
If _DragBoxFromMouseDown <> Rectangle.Empty And Not _DragBoxFromMouseDown.Contains(e.X, e.Y) Then
@@ -1137,7 +1169,7 @@ Public Class frmDocumentResultList
End Sub
Private Sub BarButtonItem11_ItemClick(sender As Object, e As ItemClickEventArgs) Handles BarButtonItem11.ItemClick
GridView1.ShowCustomization()
GridViewResult.ShowCustomization()
End Sub
Private Sub CtrlObjectPropertyDialog_Enter(sender As Object, e As EventArgs) Handles CtrlObjectPropertyDialog.Enter
@@ -1148,7 +1180,7 @@ Public Class frmDocumentResultList
RibbonPageGroupAttribute.Enabled = False
End Sub
Private Sub GridView1_RowStyle(sender As Object, e As RowStyleEventArgs) Handles GridView1.RowStyle
Private Sub GridView1_RowStyle(sender As Object, e As RowStyleEventArgs) Handles GridViewResult.RowStyle
Dim oGridView As BandedGridView = sender
Dim oRow As DataRowView = oGridView.GetRow(e.RowHandle)
@@ -1211,4 +1243,100 @@ Public Class frmDocumentResultList
End Sub
Private Sub bbtnitemExportFiles_ItemClick(sender As Object, e As ItemClickEventArgs) Handles bbtnitemExportFiles.ItemClick
Try
' Zielordner wählen
Using oFolderDialog As New FolderBrowserDialog()
oFolderDialog.Description = "Choose folder for filexport"
oFolderDialog.ShowNewFolderButton = True
If oFolderDialog.ShowDialog() <> DialogResult.OK Then
Exit Sub
End If
Dim oTargetFolder As String = oFolderDialog.SelectedPath
Dim oActiveView As BandedGridView = DirectCast(If(GetActiveGridControl()?.DefaultView, GridViewResult), BandedGridView)
Dim oCopied As Integer = 0
Dim oSkipped As Integer = 0
Dim oErrors As New List(Of String)
' Alle sichtbaren (nicht gefilterten) Zeilen durchlaufen
For oRowHandle As Integer = 0 To oActiveView.RowCount - 1
Try
Dim oRow = oActiveView.GetDataRow(oRowHandle)
If oRow Is Nothing Then
Continue For
End If
Dim oFilePath = oRow.ItemEx(ColumnFilepath, "")
If String.IsNullOrWhiteSpace(oFilePath) Then
oSkipped += 1
Continue For
End If
' Pfadauflösung via CopyWM2Temp analog zu GridView_FocusedRowChanged
Dim oResolvedPath As String = oFilePath
If CopyWM2Temp = True AndAlso Not String.IsNullOrWhiteSpace(oResolvedPath) Then
Dim oOptions As New DocumentPathHandler.DocumentPathOptions With {
.EnableMapping = True,
.WMSuffix = WM_SUFFIX,
.SpecificDrive = If(Len(MAP_SHAREDRIVE) = 1, MAP_SHAREDRIVE, ""),
.DriveBlacklist = MAP_BLACKLIST,
.CopyToTemp = True,
.TempFolder = TEMP_DOCUMENT_FOLDER,
.UnmapAfterCopy = True
}
Dim oResult = _documentPathHandler.ProcessDocumentPath(oResolvedPath, oOptions)
If oResult.Success AndAlso Not String.IsNullOrWhiteSpace(oResult.FinalPath) AndAlso File.Exists(oResult.FinalPath) Then
_Logger.Info($"✓ Exportpfad via Temp aufgelöst: [{oResult.FinalPath}]")
oResolvedPath = oResult.FinalPath
Else
_Logger.Warn($"⚠️ Temp-Auflösung fehlgeschlagen für [{oFilePath}]: {oResult.ErrorMessage} - Fallback auf Originalpfad")
oResolvedPath = oFilePath
End If
End If
If Not File.Exists(oResolvedPath) Then
_Logger.Warn($"Datei nicht gefunden, wird übersprungen: [{oResolvedPath}]")
oErrors.Add(oResolvedPath)
Continue For
End If
Dim oDestFileName = Path.GetFileName(oResolvedPath)
Dim oDestPath = Path.Combine(oTargetFolder, oDestFileName)
' Bei Namenskollision Suffix anhängen
If File.Exists(oDestPath) Then
Dim oBaseName = Path.GetFileNameWithoutExtension(oDestFileName)
Dim oExt = Path.GetExtension(oDestFileName)
oDestPath = Path.Combine(oTargetFolder, $"{oBaseName}_{oRowHandle}{oExt}")
End If
File.Copy(oResolvedPath, oDestPath)
oCopied += 1
_Logger.Debug($"Datei exportiert: [{oResolvedPath}] → [{oDestPath}]")
Catch ex As Exception
_Logger.Error(ex)
oErrors.Add(ex.Message)
End Try
Next
' Ergebnismeldung
Dim oMsg As String = $"{oCopied} Datei(en) erfolgreich exportiert."
If oSkipped > 0 Then
oMsg &= $"{vbNewLine}{oSkipped} Zeile(n) ohne Dateipfad übersprungen."
End If
If oErrors.Count > 0 Then
oMsg &= $"{vbNewLine}{oErrors.Count} Fehler:{vbNewLine}{String.Join(vbNewLine, oErrors)}"
FormHelper.ShowErrorMessage(New IOException(oMsg), "Dateiexport")
Else
FormHelper.ShowSuccessMessage(oMsg, "Dateiexport")
End If
End Using
Catch ex As Exception
FormHelper.ShowErrorMessage(ex, "bbtnitemExportFiles_ItemClick")
End Try
End Sub
End Class