Files
tsWPFCore/Informes/ucDiseñadorInformes.xaml.vb

191 lines
7.1 KiB
VB.net

Imports DevExpress.Xpf.Reports.UserDesigner
Imports DevExpress.Xpf.Reports.UserDesigner.Native
Imports DevExpress.XtraReports.UI
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.IO
Imports System.Linq
Imports System.Text
Imports System.Windows
Imports DevExpress.Xpf.Core
Imports DevExpress.Xpf.Ribbon
Imports DevExpress.Xpf.Core.Native
Imports Microsoft.Win32
Public Class ucDiseñadorInformes
'Private _irs As DevExpress.Xpf.Reports.UserDesigner.IReportStorage
'Private _xr As DevExpress.XtraReports.UI.XtraReport
'Private _id As Integer
' Public Delegate Sub Guardar(ms As IO.Stream, idPlantilla As Integer)
' Public Delegate Sub Guardar(b() As Byte, idPlantilla As Integer)
' Private _DelegadoGuardar As Guardar
Private _idPlantilla As Integer
Private Sub ucDiseñadorInformes_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
' Me.tsrd.ReportStorage = _irs
' Me.tsrd.OpenDocument(_xr)
End Sub
Public Sub New(xr As DevExpress.XtraReports.UI.XtraReport, idPlantilla As Integer, DelegadoGuardar As IRS.Guardar)
Try
Dim irs = New IRS(idPlantilla, DelegadoGuardar)
' Llamada necesaria para el diseñador.
DXSplashScreen.Show(Of SplashScreenTecnosis)()
DXSplashScreen.SetState("Cargando Diseñador de Plantillas ...")
InitializeComponent()
DXSplashScreen.SetState("Cargando Plantilla ...")
Me.tsrd.ReportStorage = irs
Me.tsrd.OpenDocument(xr)
_idPlantilla = idPlantilla
Catch ex As Exception
If DXSplashScreen.IsActive Then DXSplashScreen.Close()
Throw New Exception(ex.Message, ex)
End Try
' _xr = xr
' _DelegadoGuardar = DelegadoGuardar
' DXSplashScreen.Close()
' Agregue cualquier inicialización después de la llamada a InitializeComponent().
End Sub
'Private Sub tsrd_DocumentSaved(sender As Object, e As ReportDesignerDocumentEventArgs)
' Dim report As XtraReport = e.Document.Report
' Dim ms As New MemoryStream
' report.SaveLayout(ms)
' _DelegadoGuardar(ms.ToArray, _idPlantilla)
'End Sub
Private Sub tsrd_Loaded(sender As Object, e As RoutedEventArgs) Handles tsrd.Loaded
Try
If DXSplashScreen.IsActive Then DXSplashScreen.Close()
Dim rd As RibbonControl = CType(LayoutHelper.FindElementByType(tsrd, GetType(RibbonControl)), RibbonControl)
If rd IsNot Nothing Then
Dim categorias = rd.Categories
For Each c In rd.Categories
For Each p In c.Pages
For Each g In p.Groups
For Each item In g.Items
If TypeOf item Is DevExpress.Xpf.Bars.BarButtonItem Then
Dim it = TryCast(item, DevExpress.Xpf.Bars.BarButtonItem)
If it IsNot Nothing AndAlso it.Content IsNot Nothing Then
Debug.Write(it.Content)
Select Case it.Content.ToString.ToLower
'Case "new report", "open...", "save as..."
' it.IsVisible = False
Case "new report"
it.IsVisible = False
Case "open..."
it.Content = "Abrir..."
' it.IsVisible = True
Case "save as..."
it.Content = "Guardar como..."
Case "save"
it.Content = "Guardar"
End Select
End If
End If
Next
Next
Next
Next
End If
Catch ex As Exception
DXMessageBox.Show(ex.Message & vbCrLf & ex.StackTrace, "Error en tsrd_Loaded")
Throw New Exception(ex.Message, ex)
End Try
' tsrdv.ActiveDocument.Close()
End Sub
End Class
Public Class IRS
Implements IReportStorage
Public Delegate Sub Guardar(b() As Byte, idPlantilla As Integer)
' Private _xr As DevExpress.XtraReports.UI.XtraReport
Private _idPlantilla As Integer
Private _DelegadoGuardar As Guardar
Public Function CanCreateNew() As Boolean Implements IReportStorage.CanCreateNew
Return False
End Function
Public Function CanOpen() As Boolean Implements IReportStorage.CanOpen
Return True
End Function
Public Function CreateNew() As XtraReport Implements IReportStorage.CreateNew
End Function
Public Function CreateNewSubreport() As XtraReport Implements IReportStorage.CreateNewSubreport
End Function
Public Function GetErrorMessage(exception As Exception) As String Implements IReportStorage.GetErrorMessage
End Function
Private Function GetBuffer(ByVal report As XtraReport) As Byte()
Using stream As New MemoryStream()
report.SaveLayout(stream)
Return stream.ToArray()
End Using
End Function
Public Function Load(reportID As String, designerReportSerializer As IReportSerializer) As XtraReport Implements IReportStorage.Load
Return XtraReport.FromFile(reportID, True)
' Return XtraReport.FromStream(MS, True)
End Function
Public Function Open(designer As IReportDesignerUI) As String Implements IReportStorage.Open
Dim fb As New OpenFileDialog
fb.Filter = "Archivo xml|*.xml"
fb.DefaultExt = ".xml"
If fb.ShowDialog Then
Return fb.FileName
Else
Return ""
End If
End Function
Public Function Save(reportID As String, reportProvider As IReportProvider, saveAs As Boolean, reportTitle As String, designer As IReportDesignerUI) As String Implements IReportStorage.Save
Dim report As XtraReport = reportProvider.GetReport()
If saveAs Then
Dim sfd As New SaveFileDialog
sfd.FileName = report.Name & ".xml"
sfd.Filter = "Archivo xml|*.xml"
sfd.DefaultExt = ".xml"
If sfd.ShowDialog Then
Dim fs As New IO.FileStream(sfd.FileName, FileMode.Create)
report.SaveLayoutToXml(fs)
fs.Close()
End If
Return ""
Else
Dim ms As New MemoryStream
report.SaveLayoutToXml(ms)
_DelegadoGuardar(ms.ToArray, _idPlantilla)
Return ""
End If
End Function
Public Sub New(idPlantilla As Integer, DelegadoGuardar As Guardar)
_DelegadoGuardar = DelegadoGuardar
_idPlantilla = idPlantilla
' _xr = xr
End Sub
End Class