Mini Kabibi Habibi
Imports System
Imports System.Drawing.Imaging
Imports System.Windows.Forms
Imports DevExpress.Utils.Menu
Imports DevExpress.XtraBars
Imports DevExpress.XtraBars.Ribbon
Imports DevExpress.XtraCharts.Printing
Imports DevExpress.XtraCharts.Demos.Modules
Imports DevExpress.DXperience.Demos
Namespace DevExpress.XtraCharts.Demos
Public Class TutorialControl
Inherits TutorialControlBase
Private m_menuManager As IDXMenuManager
Private currentImageFormat As ImageFormat
Public Property MenuManager() As IDXMenuManager
Get
Return m_menuManager
End Get
Set(ByVal value As IDXMenuManager)
m_menuManager = value
End Set
End Property
Public ReadOnly Property ChartRibbonMenuManager() As ChartRibbonMenuManager
Get
Return TryCast(RibbonMenuManager, ChartRibbonMenuManager)
End Get
End Property
Public Overridable ReadOnly Property ChartControl() As ChartControl
Get
Return Nothing
End Get
End Property
Public Overrides ReadOnly Property AllowPrintOptions() As Boolean
Get
Return ChartControl IsNot Nothing
End Get
End Property
Protected Overrides Sub AllowExport()
EnabledPrintExportActions(True, ExportFormats.ImageEx Or ExportFormats.PDF Or ExportFormats.HTML Or ExportFormats.MHT Or ExportFormats.XLS Or ExportFormats.RTF Or ExportFormats.XLSX, False)
End Sub
Protected Overrides Sub ExportToCore(ByVal filename As String, ByVal ext As String)
Dim chart As ChartControl = ChartControl
If chart IsNot Nothing Then
Dim currentCursor As Cursor = Cursor.Current
Cursor.Current = Cursors.WaitCursor
If ext = "rtf" Then
chart.ExportToRtf(filename)
ElseIf ext = "pdf" Then
chart.ExportToPdf(filename)
ElseIf ext = "mht" Then
chart.ExportToMht(filename)
ElseIf ext = "html" Then
chart.ExportToHtml(filename)
ElseIf ext = "xls" Then
chart.ExportToXls(filename)
ElseIf ext = "xlsx" Then
chart.ExportToXlsx(filename)
Else
chart.ExportToImage(filename, currentImageFormat)
End If
Cursor.Current = currentCursor
End If
End Sub
Protected Overrides Sub OnLoad(ByVal e As EventArgs)
MyBase.OnLoad(e)
If Not ParentFormMain Is Nothing Then
Dim exportItem As BarSubItem = DirectCast(ParentFormMain, frmMain).ExportToImageExButton
exportItem.ClearLinks()
AddImageFormat(exportItem, ImageFormat.Bmp)
AddImageFormat(exportItem, ImageFormat.Emf)
AddImageFormat(exportItem, ImageFormat.Exif)
AddImageFormat(exportItem, ImageFormat.Gif)
AddImageFormat(exportItem, ImageFormat.Icon)
AddImageFormat(exportItem, ImageFormat.Jpeg)
AddImageFormat(exportItem, ImageFormat.Png)
AddImageFormat(exportItem, ImageFormat.Tiff)
AddImageFormat(exportItem, ImageFormat.Wmf)
End If
End Sub
Protected Overrides Sub ExportToPDF()
Dim chart As ChartControl = ChartControl
If chart IsNot Nothing Then
Dim sizeMode As PrintSizeMode = chart.OptionsPrint.SizeMode
chart.OptionsPrint.SizeMode = PrintSizeMode.Zoom
Try
ExportTo("pdf", "PDF document (*.pdf)|*.pdf")
Finally
chart.OptionsPrint.SizeMode = sizeMode
End Try
End If
End Sub
Protected Overrides Sub ExportToHTML()
ExportTo("html", "HTML document (*.html)|*.html")
End Sub
Protected Overrides Sub ExportToMHT()
ExportTo("mht", "MHT document (*.mht)|*.mht")
End Sub
Protected Overrides Sub ExportToXLS()
ExportTo("xls", "XLS document (*.xls)|*.xls")
End Sub
Protected Overrides Sub ExportToXLSX()
ExportTo("xlsx", "XLSX document (*.xlsx)|*.xlsx")
End Sub
Protected Overrides Sub ExportToRTF()
ExportTo("rtf", "RTF document (*.rtf)|*.rtf")
End Sub
Protected Overrides Sub ExportToText()
ExportTo("txt", "Text document (*.txt)|*.txt")
End Sub
Protected Overrides Sub PrintPreview()
Dim chart As ChartControl = ChartControl
If chart IsNot Nothing Then
chart.OptionsPrint.SizeMode = PrintSizeMode.Zoom
If RibbonMenuManager.PrintOptions.ShowRibbonPreviewForm Then
chart.ShowRibbonPrintPreview()
Else
chart.ShowPrintPreview()
End If
End If
End Sub
Private Sub AddImageFormat(ByVal biImagesMenuItem As BarSubItem, ByVal format As ImageFormat)
Dim codecInfo As ImageCodecInfo = FindImageCodec(format)
If codecInfo IsNot Nothing Then
Dim item As New BarExportToImageItem(Manager, format, codecInfo)
AddHandler item.ItemClick, AddressOf OnExportImageClick
biImagesMenuItem.AddItem(item)
End If
End Sub
Private Function FindImageCodec(ByVal format As ImageFormat) As ImageCodecInfo
Dim infos As ImageCodecInfo() = ImageCodecInfo.GetImageEncoders()
For Each item As ImageCodecInfo In infos
If item.FormatID.Equals(format.Guid) Then
Return item
End If
Next
Return Nothing
End Function
Private Sub OnExportImageClick(ByVal sender As Object, ByVal e As ItemClickEventArgs)
Dim item As BarExportToImageItem = TryCast(e.Item, BarExportToImageItem)
If item IsNot Nothing Then
currentImageFormat = item.ImageFormat
ExportTo(item.ImageCodecInfo.FilenameExtension, [String].Format("{0} ({1})|{1}", [String].Format("{0} image", item.ImageCodecInfo.FormatDescription), item.ImageCodecInfo.FilenameExtension))
End If
End Sub
End Class
End Namespace