diff --git a/GUIs.Monitor/Forms/frmMonitor.Designer.vb b/GUIs.Monitor/Forms/frmMonitor.Designer.vb
index 06efa04..ada7aab 100644
--- a/GUIs.Monitor/Forms/frmMonitor.Designer.vb
+++ b/GUIs.Monitor/Forms/frmMonitor.Designer.vb
@@ -24,6 +24,7 @@ Partial Class frmMonitor
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim PushTransition1 As DevExpress.Utils.Animation.PushTransition = New DevExpress.Utils.Animation.PushTransition()
+ Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmMonitor))
Me.RibbonControl1 = New DevExpress.XtraBars.Ribbon.RibbonControl()
Me.ApplicationMenu1 = New DevExpress.XtraBars.Ribbon.ApplicationMenu(Me.components)
Me.BarButtonItem1 = New DevExpress.XtraBars.BarButtonItem()
@@ -85,6 +86,8 @@ Partial Class frmMonitor
Me.AdornerUIManager2 = New DevExpress.Utils.VisualEffects.AdornerUIManager(Me.components)
Me.WorkspaceManager1 = New DevExpress.Utils.WorkspaceManager(Me.components)
Me.SplashScreenManager1 = New DevExpress.XtraSplashScreen.SplashScreenManager(Me, GetType(Global.DigitalData.GUIs.Monitor.frmLoading), True, True)
+ Me.btnExportChart2PDF = New DevExpress.XtraBars.BarButtonItem()
+ Me.btnExportChart2PNG = New DevExpress.XtraBars.BarButtonItem()
CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.ApplicationMenu1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.XtraTabControlFileHTML, System.ComponentModel.ISupportInitialize).BeginInit()
@@ -144,9 +147,9 @@ Partial Class frmMonitor
'
Me.RibbonControl1.ApplicationButtonDropDownControl = Me.ApplicationMenu1
Me.RibbonControl1.ExpandCollapseItem.Id = 0
- Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.buttonSearch, Me.BarButtonItem1, Me.btnExportDetails, Me.btnExportMain, Me.lbResultCount, Me.btnReloadSearches, Me.btnResetLayout, Me.BarButtonItem2, Me.lbVersion, Me.BarButtonItem3, Me.lbSearchTime})
+ Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.buttonSearch, Me.BarButtonItem1, Me.btnExportDetails, Me.btnExportMain, Me.lbResultCount, Me.btnReloadSearches, Me.btnResetLayout, Me.BarButtonItem2, Me.lbVersion, Me.BarButtonItem3, Me.lbSearchTime, Me.btnExportChart2PDF, Me.btnExportChart2PNG})
Me.RibbonControl1.Location = New System.Drawing.Point(0, 0)
- Me.RibbonControl1.MaxItemId = 14
+ Me.RibbonControl1.MaxItemId = 16
Me.RibbonControl1.Name = "RibbonControl1"
Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1})
Me.RibbonControl1.ShowToolbarCustomizeItem = False
@@ -270,6 +273,8 @@ Partial Class frmMonitor
Me.RibbonPageGroup2.Alignment = DevExpress.XtraBars.Ribbon.RibbonPageGroupAlignment.Far
Me.RibbonPageGroup2.ItemLinks.Add(Me.btnExportMain)
Me.RibbonPageGroup2.ItemLinks.Add(Me.btnExportDetails)
+ Me.RibbonPageGroup2.ItemLinks.Add(Me.btnExportChart2PDF)
+ Me.RibbonPageGroup2.ItemLinks.Add(Me.btnExportChart2PNG)
Me.RibbonPageGroup2.Name = "RibbonPageGroup2"
Me.RibbonPageGroup2.Text = "Export"
'
@@ -686,6 +691,22 @@ Partial Class frmMonitor
'
Me.SplashScreenManager1.ClosingDelay = 500
'
+ 'btnExportChart2PDF
+ '
+ Me.btnExportChart2PDF.Caption = "Export Charts als PDF"
+ Me.btnExportChart2PDF.Enabled = False
+ Me.btnExportChart2PDF.Id = 14
+ Me.btnExportChart2PDF.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem4.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
+ Me.btnExportChart2PDF.Name = "btnExportChart2PDF"
+ '
+ 'btnExportChart2PNG
+ '
+ Me.btnExportChart2PNG.Caption = "Export Charts als Bild"
+ Me.btnExportChart2PNG.Enabled = False
+ Me.btnExportChart2PNG.Id = 15
+ Me.btnExportChart2PNG.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem5.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
+ Me.btnExportChart2PNG.Name = "btnExportChart2PNG"
+ '
'frmMonitor
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@@ -820,4 +841,6 @@ Partial Class frmMonitor
Friend WithEvents lbVersion As DevExpress.XtraBars.BarStaticItem
Friend WithEvents BarButtonItem3 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents lbSearchTime As DevExpress.XtraBars.BarStaticItem
+ Friend WithEvents btnExportChart2PDF As DevExpress.XtraBars.BarButtonItem
+ Friend WithEvents btnExportChart2PNG As DevExpress.XtraBars.BarButtonItem
End Class
diff --git a/GUIs.Monitor/Forms/frmMonitor.resx b/GUIs.Monitor/Forms/frmMonitor.resx
index 72b2740..28b3162 100644
--- a/GUIs.Monitor/Forms/frmMonitor.resx
+++ b/GUIs.Monitor/Forms/frmMonitor.resx
@@ -120,6 +120,64 @@
362, 17
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
+ LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+ dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAABoHAAAC77u/
+ PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+ IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+ MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+ Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+ MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJs
+ YWNre2ZpbGw6IzcyNzI3Mjt9Cgkuc3Qwe29wYWNpdHk6MC4yO30KPC9zdHlsZT4NCiAgPHBhdGggZD0i
+ TTgsNGgxOHY2aDJWM2MwLTAuNS0wLjUtMS0xLTFIN0M2LjUsMiw2LDIuNSw2LDN2N2gyVjR6IiBjbGFz
+ cz0iQmxhY2siIC8+DQogIDxwYXRoIGQ9Ik0yNiwyNkg4VjE2SDZ2MTFjMCwwLjUsMC41LDEsMSwxaDIw
+ YzAuNSwwLDEtMC41LDEtMVYxNmgtMlYyNnoiIGNsYXNzPSJCbGFjayIgLz4NCiAgPHBhdGggZD0iTTEw
+ LjMsMTEuNkg5LjZWMTRoMC42YzAuOSwwLDEuMy0wLjQsMS4zLTEuMkMxMS41LDEyLDExLjEsMTEuNiwx
+ MC4zLDExLjZ6IiBjbGFzcz0iUmVkIiAvPg0KICA8cGF0aCBkPSJNMTYuNywxMS43aC0wLjh2NC45aDAu
+ OGMwLjcsMCwxLjMtMC4yLDEuNi0wLjdzMC42LTEuMSwwLjYtMS44YzAtMC43LTAuMi0xLjMtMC42LTEu
+ NyAgQzE4LDExLjksMTcuNCwxMS43LDE2LjcsMTEuN3oiIGNsYXNzPSJSZWQiIC8+DQogIDxwYXRoIGQ9
+ Ik0yOSw4SDVDNC40LDgsNCw4LjQsNCw5djEwYzAsMC42LDAuNCwxLDEsMWgyNGMwLjYsMCwxLTAuNCwx
+ LTFWOUMzMCw4LjQsMjkuNiw4LDI5LDh6IE0xMi41LDE0LjYgIGMtMC41LDAuNS0xLjIsMC43LTIuMSww
+ LjdIOS42VjE4SDh2LTcuN2gyLjVjMS44LDAsMi43LDAuOCwyLjcsMi41QzEzLjIsMTMuNSwxMywxNC4y
+ LDEyLjUsMTQuNnogTTE5LjYsMTYuOSAgQzE4LjksMTcuNiwxOCwxOCwxNi44LDE4aC0yLjV2LTcuN2gy
+ LjVjMi41LDAsMy44LDEuMywzLjgsMy44QzIwLjcsMTUuMywyMC4zLDE2LjIsMTkuNiwxNi45eiBNMjYs
+ MTEuN2gtMi41djEuOWgyLjNWMTVoLTIuM3YzICBoLTEuNnYtNy43SDI2VjExLjd6IiBjbGFzcz0iUmVk
+ IiAvPg0KICA8ZyBjbGFzcz0ic3QwIj4NCiAgICA8cGF0aCBkPSJNMTAuMywxMS42SDkuNlYxNGgwLjZj
+ MC45LDAsMS4zLTAuNCwxLjMtMS4yQzExLjUsMTIsMTEuMSwxMS42LDEwLjMsMTEuNnoiIGNsYXNzPSJC
+ bGFjayIgLz4NCiAgICA8cGF0aCBkPSJNMTYuNywxMS43aC0wLjh2NC45aDAuOGMwLjcsMCwxLjMtMC4y
+ LDEuNi0wLjdzMC42LTEuMSwwLjYtMS44YzAtMC43LTAuMi0xLjMtMC42LTEuNyAgIEMxOCwxMS45LDE3
+ LjQsMTEuNywxNi43LDExLjd6IiBjbGFzcz0iQmxhY2siIC8+DQogICAgPHBhdGggZD0iTTI5LDhINUM0
+ LjQsOCw0LDguNCw0LDl2MTBjMCwwLjYsMC40LDEsMSwxaDI0YzAuNiwwLDEtMC40LDEtMVY5QzMwLDgu
+ NCwyOS42LDgsMjksOHogTTEyLjUsMTQuNiAgIGMtMC41LDAuNS0xLjIsMC43LTIuMSwwLjdIOS42VjE4
+ SDh2LTcuN2gyLjVjMS44LDAsMi43LDAuOCwyLjcsMi41QzEzLjIsMTMuNSwxMywxNC4yLDEyLjUsMTQu
+ NnogTTE5LjYsMTYuOSAgIEMxOC45LDE3LjYsMTgsMTgsMTYuOCwxOGgtMi41di03LjdoMi41YzIuNSww
+ LDMuOCwxLjMsMy44LDMuOEMyMC43LDE1LjMsMjAuMywxNi4yLDE5LjYsMTYuOXogTTI2LDExLjdoLTIu
+ NXYxLjloMi4zVjE1aC0yLjN2MyAgIGgtMS42di03LjdIMjZWMTEuN3oiIGNsYXNzPSJCbGFjayIgLz4N
+ CiAgPC9nPg0KPC9zdmc+Cw==
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
+ LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+ dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAANECAAAC77u/
+ PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+ IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+ MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+ Y2U9InByZXNlcnZlIiBpZD0iUGljdHVyZSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+ MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
+ R3JlZW57ZmlsbDojMDM5QzIzO30KCS5ZZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5zdDB7b3BhY2l0eTow
+ LjU7fQo8L3N0eWxlPg0KICA8cGF0aCBkPSJNMjksNEgzQzIuNSw0LDIsNC41LDIsNXYyMmMwLDAuNSww
+ LjUsMSwxLDFoMjZjMC41LDAsMS0wLjUsMS0xVjVDMzAsNC41LDI5LjUsNCwyOSw0eiBNMjgsMjZINFY2
+ aDI0VjI2eiIgY2xhc3M9IkJsYWNrIiAvPg0KICA8Y2lyY2xlIGN4PSIyMSIgY3k9IjExIiByPSIzIiBj
+ bGFzcz0iWWVsbG93IiAvPg0KICA8cG9seWdvbiBwb2ludHM9IjIwLDI0IDEwLDE0IDYsMTggNiwyNCAi
+ IGNsYXNzPSJHcmVlbiIgLz4NCiAgPGcgY2xhc3M9InN0MCI+DQogICAgPHBvbHlnb24gcG9pbnRzPSIy
+ MiwyNCAxOCwyMCAyMCwxOCAyNiwyNCAgIiBjbGFzcz0iR3JlZW4iIC8+DQogIDwvZz4NCjwvc3ZnPgs=
+
+
196, 17
diff --git a/GUIs.Monitor/Forms/frmMonitor.vb b/GUIs.Monitor/Forms/frmMonitor.vb
index 9d46a9d..49d7f21 100644
--- a/GUIs.Monitor/Forms/frmMonitor.vb
+++ b/GUIs.Monitor/Forms/frmMonitor.vb
@@ -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
+
'''
''' Linklogik für Hyperlink-Spalten
'''
@@ -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
diff --git a/GUIs.Monitor/Helper/GridLoader.vb b/GUIs.Monitor/Helper/GridLoader.vb
index 62395ec..82ea7dc 100644
--- a/GUIs.Monitor/Helper/GridLoader.vb
+++ b/GUIs.Monitor/Helper/GridLoader.vb
@@ -23,6 +23,8 @@ Public Class GridLoader
Public ReadOnly Property SvgImageCollection As SvgImageCollection
Public ReadOnly Property GridBuilder As GridBuilder
+ Public Event ChartControlClicked As EventHandler
+
Private ReadOnly StateIcons As New Dictionary(Of String, NodeImage) From {
{STATE_SUCCESS, NodeImage.Success},
{STATE_FAILURE, NodeImage.Failure}
@@ -131,6 +133,11 @@ Public Class GridLoader
.Dock = DockStyle.Fill
}
+ AddHandler oChartControlTopLeft.Click, AddressOf ChartControl_Click
+ AddHandler oChartControlTopRight.Click, AddressOf ChartControl_Click
+ AddHandler oChartControlBottomLeft.Click, AddressOf ChartControl_Click
+ AddHandler oChartControlBottomRight.Click, AddressOf ChartControl_Click
+
oSplitContainerTop.Panel1.AddControl(oChartControlTopLeft)
oSplitContainerTop.Panel2.AddControl(oChartControlTopRight)
oSplitContainerBottom.Panel1.AddControl(oChartControlBottomLeft)
@@ -139,6 +146,10 @@ Public Class GridLoader
Return oChartViewResultContainer
End Function
+ Private Sub ChartControl_Click(sender As Object, e As EventArgs)
+ RaiseEvent ChartControlClicked(sender, Nothing)
+ End Sub
+
Public Sub InitTreeListColumns(pTreeList As TreeList, pMaxLength As Integer)
Dim oColumn1 = pTreeList.Columns.Item("COLUMN1")
Dim oColumn2 = pTreeList.Columns.Item("COLUMN2")