Chart-Logik: Export-Funktionen implementiert
This commit is contained in:
@@ -21,7 +21,11 @@ Imports DigitalData.Modules.Language.Utils
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports DigitalData.Modules.Patterns
|
||||
Imports DevExpress.XtraEditors
|
||||
|
||||
Imports System.Drawing.Imaging
|
||||
Imports System.IO
|
||||
Imports DevExpress.XtraBars
|
||||
Imports DevExpress.Utils.CommonDialogs
|
||||
Imports System.Windows.Forms.VisualStyles
|
||||
|
||||
Public Class frmMonitor
|
||||
Private ReadOnly InvisibleColumnMarkers As New List(Of String) From {"[HTML]", "[SQL]", "[FILENAME]"}
|
||||
@@ -84,6 +88,7 @@ Public Class frmMonitor
|
||||
Private Validator As Validator
|
||||
Private GridLoader As GridLoader
|
||||
|
||||
Private SelectedChart As ChartControl
|
||||
|
||||
Private Sub frmStart_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
||||
Try
|
||||
@@ -125,9 +130,12 @@ Public Class frmMonitor
|
||||
Validator = New Validator(LogConfig, LayoutControl1, AdornerUIManager2, ControlHelper)
|
||||
GridLoader = New GridLoader(LogConfig, SvgImageCollection1)
|
||||
|
||||
AddHandler GridLoader.ChartControlClicked, AddressOf ChartControl_Click
|
||||
|
||||
InitGrid()
|
||||
InitTreeList()
|
||||
InitChartContainer()
|
||||
InitBarItems()
|
||||
|
||||
Dim oGrids As GridView() = New List(Of GridView) From {GridView1, GridView2, GridView3, GridView4}.ToArray
|
||||
GridBuilder.SetDefaults(oGrids)
|
||||
@@ -235,8 +243,6 @@ Public Class frmMonitor
|
||||
|
||||
TreeListResults.DataSource = oTable
|
||||
|
||||
lbResultCount.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
||||
|
||||
Dim oMaxLength = 0
|
||||
For Each oRow As DataRow In oTable.Rows
|
||||
Dim oProcess = oRow.Item("COLUMN1")
|
||||
@@ -339,8 +345,6 @@ Public Class frmMonitor
|
||||
GridViewResults.PopulateColumns()
|
||||
GridBuilder.SetDateTimeColumns(GridViewResults)
|
||||
|
||||
lbResultCount.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
||||
|
||||
For Each oColumn As GridColumn In GridViewResults.Columns
|
||||
If oColumn.ColumnType = GetType(Integer) Then
|
||||
oColumn.AppearanceCell.TextOptions.HAlignment = HorzAlignment.Center
|
||||
@@ -525,7 +529,6 @@ Public Class frmMonitor
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub SetResultVisbility(pSearchMode As ReturnTypeEnum)
|
||||
Select Case pSearchMode
|
||||
Case ReturnTypeEnum.TreeView
|
||||
@@ -535,8 +538,13 @@ Public Class frmMonitor
|
||||
TreeListResults.Dock = DockStyle.Fill
|
||||
ChartViewResultContainer.Visible = False
|
||||
ChartViewResultContainer.Dock = DockStyle.None
|
||||
btnExportDetails.Enabled = True
|
||||
btnExportMain.Enabled = True
|
||||
|
||||
lbResultCount.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
||||
|
||||
EnableButtons(btnExportMain)
|
||||
EnableButtons(btnExportDetails)
|
||||
DisableButtons(btnExportChart2PDF)
|
||||
DisableButtons(btnExportChart2PNG)
|
||||
|
||||
Case ReturnTypeEnum.ChartView
|
||||
GridControlResults.Visible = False
|
||||
@@ -545,8 +553,13 @@ Public Class frmMonitor
|
||||
TreeListResults.Dock = DockStyle.None
|
||||
ChartViewResultContainer.Visible = True
|
||||
ChartViewResultContainer.Dock = DockStyle.Fill
|
||||
btnExportDetails.Enabled = False
|
||||
btnExportMain.Enabled = False
|
||||
|
||||
lbResultCount.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
||||
|
||||
DisableButtons(btnExportMain)
|
||||
DisableButtons(btnExportDetails)
|
||||
EnableButtons(btnExportChart2PDF)
|
||||
EnableButtons(btnExportChart2PNG)
|
||||
|
||||
Case ReturnTypeEnum.Table
|
||||
GridControlResults.Visible = True
|
||||
@@ -555,12 +568,40 @@ Public Class frmMonitor
|
||||
TreeListResults.Dock = DockStyle.None
|
||||
ChartViewResultContainer.Visible = False
|
||||
ChartViewResultContainer.Dock = DockStyle.None
|
||||
btnExportDetails.Enabled = True
|
||||
btnExportMain.Enabled = True
|
||||
|
||||
lbResultCount.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
||||
|
||||
EnableButtons(btnExportMain)
|
||||
EnableButtons(btnExportDetails)
|
||||
DisableButtons(btnExportChart2PDF)
|
||||
DisableButtons(btnExportChart2PNG)
|
||||
|
||||
End Select
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub DisableButtons(pBarButtonItem As BarButtonItem)
|
||||
pBarButtonItem.Enabled = False
|
||||
pBarButtonItem.Visibility = BarItemVisibility.Never
|
||||
End Sub
|
||||
|
||||
Private Sub EnableButtons(pBarButtonItem As BarButtonItem)
|
||||
pBarButtonItem.Enabled = True
|
||||
pBarButtonItem.Visibility = BarItemVisibility.Always
|
||||
End Sub
|
||||
|
||||
Private Sub InitBarItems()
|
||||
btnExportMain.Visibility = BarItemVisibility.Always
|
||||
btnExportMain.Enabled = False
|
||||
btnExportDetails.Visibility = BarItemVisibility.Always
|
||||
btnExportDetails.Enabled = False
|
||||
DisableButtons(btnExportChart2PDF)
|
||||
DisableButtons(btnExportChart2PNG)
|
||||
|
||||
lbResultCount.Visibility = BarItemVisibility.Never
|
||||
lbSearchTime.Visibility = BarItemVisibility.Never
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' Linklogik für Hyperlink-Spalten
|
||||
''' </summary>
|
||||
@@ -668,6 +709,9 @@ Public Class frmMonitor
|
||||
DisposeGrid()
|
||||
InitGrid()
|
||||
|
||||
DisposeCharts()
|
||||
InitChartContainer()
|
||||
|
||||
SplitContainerSQL.Collapsed = True
|
||||
SplitContainerFileHTML.Collapsed = True
|
||||
|
||||
@@ -675,6 +719,7 @@ Public Class frmMonitor
|
||||
btnExportDetails.Enabled = False
|
||||
|
||||
SetResultCount(0)
|
||||
InitBarItems()
|
||||
|
||||
LoadSearch()
|
||||
HideAllTabs()
|
||||
@@ -1177,10 +1222,14 @@ Public Class frmMonitor
|
||||
DisposeGrid()
|
||||
InitGrid()
|
||||
|
||||
DisposeCharts()
|
||||
InitChartContainer()
|
||||
|
||||
HideAllTabs()
|
||||
Await LoadData()
|
||||
|
||||
SetResultCount(0)
|
||||
InitBarItems()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
@@ -1191,12 +1240,21 @@ Public Class frmMonitor
|
||||
GridControlResults = Nothing
|
||||
End Sub
|
||||
|
||||
Private Sub DisposeCharts()
|
||||
ChartViewResultContainer.Dispose()
|
||||
ChartViewResultContainer = Nothing
|
||||
End Sub
|
||||
|
||||
Private Sub SetResultCount(pResults As Integer)
|
||||
lbResultCount.Caption = String.Format(lbResultCount.Tag, pResults)
|
||||
End Sub
|
||||
|
||||
Private Sub SetSearchTimeValue(pValue As String)
|
||||
lbSearchTime.Caption = pValue
|
||||
If pValue.Equals("00:00") Then
|
||||
lbSearchTime.Caption = ""
|
||||
Else
|
||||
lbSearchTime.Caption = pValue
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub SetVersion()
|
||||
@@ -1230,8 +1288,8 @@ Public Class frmMonitor
|
||||
|
||||
Private Sub InitChartContainer()
|
||||
ChartViewResultContainer = GridLoader.InitChartViewResultContainer()
|
||||
|
||||
SplitContainerSQL.Panel1.Controls.Add(ChartViewResultContainer)
|
||||
SelectedChart = Nothing
|
||||
End Sub
|
||||
|
||||
Private Sub ResizeCharContainer()
|
||||
@@ -1261,5 +1319,87 @@ Public Class frmMonitor
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub ChartControl_Click(sender As Object, e As EventArgs)
|
||||
SelectedChart = CType(sender, ChartControl)
|
||||
End Sub
|
||||
|
||||
Private Sub btnExportChart2PDF_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnExportChart2PDF.ItemClick
|
||||
Try
|
||||
If Not IsNothing(SelectedChart) Then
|
||||
XtraSaveFileDialog1.Filter = "PDF Files (*.pdf*)|*.pdf"
|
||||
If XtraSaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
|
||||
' TODO: Filename
|
||||
ExportChart2Pdf(SelectedChart, XtraSaveFileDialog1.FileName)
|
||||
End If
|
||||
Else
|
||||
FormHelper.ShowInfoMessage("Bitte einen Chart auswählen", "Chart Export per PDF")
|
||||
End If
|
||||
Catch ex As Exception
|
||||
FormHelper.ShowErrorMessage(ex, "Chart Export nach PDF")
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub btnExportChart2PNG_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnExportChart2PNG.ItemClick
|
||||
Try
|
||||
If Not IsNothing(SelectedChart) Then
|
||||
XtraSaveFileDialog1.Filter = "PNG Files(* .png *)|*.png"
|
||||
If XtraSaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
|
||||
' TODO: Filename
|
||||
ExportChartToImage(SelectedChart, XtraSaveFileDialog1.FileName)
|
||||
End If
|
||||
Else
|
||||
FormHelper.ShowInfoMessage("Bitte einen Chart auswählen", "Chart Export per PNG")
|
||||
End If
|
||||
Catch ex As Exception
|
||||
FormHelper.ShowErrorMessage(ex, "Chart Export nach PNG")
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Sub ExportChart2Pdf(pMyChart As ChartControl, pFilePath As String)
|
||||
Try
|
||||
pMyChart.OptionsPrint.ImageFormat = DevExpress.XtraCharts.Printing.PrintImageFormat.Metafile
|
||||
pMyChart.ExportToPdf(pFilePath, New DevExpress.XtraPrinting.PdfExportOptions With {
|
||||
.ConvertImagesToJpeg = False
|
||||
})
|
||||
' Exports to a stream as PDF.
|
||||
Dim pdfStream As FileStream = New FileStream(pFilePath, FileMode.Create)
|
||||
pMyChart.ExportToPdf(pdfStream)
|
||||
' ...
|
||||
pdfStream.Close()
|
||||
Catch ex As Exception
|
||||
Logger.Error(ex)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Sub ExportChartToImage(pMyChart As ChartControl, pFilePath As String)
|
||||
Try
|
||||
SaveChartImageToFile(pMyChart, ImageFormat.Png, pFilePath)
|
||||
Dim image As Image = GetChartImage(pMyChart, ImageFormat.Png)
|
||||
image.Save(pFilePath)
|
||||
Catch ex As Exception
|
||||
Logger.Error(ex)
|
||||
End Try
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub SaveChartImageToFile(ByVal chart As ChartControl, ByVal format As ImageFormat, ByVal fileName As String)
|
||||
' Create an image in the specified format from the chart
|
||||
' and save it to the specified path.
|
||||
chart.ExportToImage(fileName, format)
|
||||
End Sub
|
||||
|
||||
Private Function GetChartImage(ByVal chart As ChartControl, ByVal format As ImageFormat) As Image
|
||||
' Create an image.
|
||||
Dim image As Image = Nothing
|
||||
|
||||
' Create an image of the chart.
|
||||
Using s As New MemoryStream()
|
||||
chart.ExportToImage(s, format)
|
||||
image = System.Drawing.Image.FromStream(s)
|
||||
End Using
|
||||
|
||||
' Return the image.
|
||||
Return image
|
||||
End Function
|
||||
End Class
|
||||
|
||||
|
||||
Reference in New Issue
Block a user