Files
tsWPF/Obsoleto/ContenedorLineas.xaml.vb
2026-05-14 08:45:02 +02:00

410 lines
18 KiB
VB.net

Imports System.ComponentModel
Imports DevExpress.Xpf.Core
Imports DevExpress.Xpf.Printing
Imports DevExpress.Utils
Imports tsWPF.Controles
Imports DevExpress.Xpf.Bars
Imports DevExpress.Xpf.Grid
Imports System.IO
Imports System.Threading.Tasks
Imports Microsoft.Win32
Imports tsl5.Extensiones
Public Class ContenedorLineas
Public apLinea As ApLineas
Dim _DescripcionDiseño As String
Dim _TodosUsuariosDiseño As Boolean
Public Property t As Task
Public Event CargaAplicacion(sender As System.Object, e As System.Windows.RoutedEventArgs)
Public Event AntesDeGuardar(sender As System.Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs)
Public Event DespuesDeGuardar(sender As System.Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs)
Public Sub New()
' Llamada necesaria para el diseñador.
InitializeComponent()
' Agregue cualquier inicialización después de la llamada a InitializeComponent().
End Sub
Public Sub New(apLinea As ApLineas, uc As UserControl)
If Not (System.ComponentModel.DesignerProperties.GetIsInDesignMode(Me)) Then
' Llamada necesaria para el diseñador.
InitializeComponent()
Me.contenido.Children.Add(uc)
Me.apLinea = apLinea
apLinea.ContenedorL = Me
apLinea.LanzaEventoCargado()
If apLinea.PermisosConcedidos.Exportar Then
Dim cm As New ContextMenu
Dim mie As New MenuItem()
mie.Tag = "MI_EXPORTAR_EXCEL"
mie.Header = "Exportar a Excel"
AddHandler mie.Click, AddressOf _ExportarExcel
cm.Items.Add(mie)
Dim mi As New MenuItem()
mi.Tag = "MI_EXPORTAR"
mi.Header = "Exportar Otros Formatos"
AddHandler mi.Click, AddressOf _Exportar
cm.Items.Add(mi)
Me.apLinea.Rejilla.ContextMenu = cm
End If
End If
End Sub
Private Sub _ExportarExcel(sender As Object, e As RoutedEventArgs)
Dim mi As MenuItem = sender
Dim cm As ContextMenu = mi.Parent
Dim tsgc As tsGridControl = cm.PlacementTarget
Dim vista As TableView = tsgc.View
Dim sfd As New SaveFileDialog
sfd.FileName = IO.Path.GetDirectoryName("Exportacion") & (tsgc.NombreTablaBase.NothingAVacio & " Exportacion.xlsx").Trim
sfd.Filter = "Fichero Excel (*.xls, *.xlsx, *.csv)|*.xls;*.xlsx;*.csv"
sfd.DefaultExt = ".xlsx"
If sfd.ShowDialog Then
Select Case IO.Path.GetExtension(sfd.FileName).ToLower
Case ".xls"
vista.ExportToXls(sfd.FileName)
Case ".xlsx"
vista.ExportToXlsx(sfd.FileName)
Case ".csv"
vista.ExportToCsv(sfd.FileName)
End Select
Process.Start(sfd.FileName)
End If
End Sub
Private Sub _Exportar(sender As Object, e As RoutedEventArgs)
Dim mi As MenuItem = sender
Dim cm As ContextMenu = mi.Parent
Dim tsgc As tsGridControl = cm.PlacementTarget
Dim vista As TableView = tsgc.View
Try
'Dim link As New PrintableControlLink(CType(vista, TableView))
'link.CreateDocument()
'Dim vi As New tsWPF.ucVisualizadorInformes()
'vi.Visualizador.DocumentSource = link
'Dim docpanel = New DevExpress.Xpf.Docking.DocumentPanel
'Dim tabHeaderPrintInfoControl As New TabHeaderPrintInfoControl() With {.TabName = "Exportación " & tsgc.PropiedadesTSGC.Descripcion}
'docpanel.Caption = tabHeaderPrintInfoControl
'docpanel.Content = vi
'docpanel.ClosingBehavior = DevExpress.Xpf.Docking.ClosingBehavior.ImmediatelyRemove
'Me.apLinea.GrupoDocumentos.Add(docpanel)
'Comun.dm.DockController.Activate(docpanel)
Dim preview As New DocumentPreview()
Dim model As LinkPreviewModel = CreateLinkPreviewModel(TryCast(vista, IPrintableControl))
model.Link.PaperKind = System.Drawing.Printing.PaperKind.A4Rotated
preview.Model = model
Dim tabHeaderPrintInfoControl As New TabHeaderPrintInfoControl() With {.TabName = "Exportación " & tsgc.PropiedadesTSGC.Descripcion, .LinkPreviewModel = model}
Dim docpanel = New DevExpress.Xpf.Docking.DocumentPanel
docpanel.Caption = tabHeaderPrintInfoControl
docpanel.Content = preview
docpanel.ClosingBehavior = DevExpress.Xpf.Docking.ClosingBehavior.ImmediatelyRemove
Me.apLinea.GrupoDocumentos.Add(docpanel)
Comun.dm.DockController.Activate(docpanel)
model.Link.CreateDocument(True)
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End Sub
'Public Shared Function CreateLinkPreviewModel(ByVal printableControl As IPrintableControl) As LinkPreviewModel
' Dim link As New PrintableControlLink(TryCast(printableControl, IPrintableControl))
' Return New LinkPreviewModel(link)
'End Function
'Private Sub BotonEditar(sender As Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs) Handles btEditar.ItemClick
' If Not apLinea.Rejilla.CurrentItem Is Nothing Then
' apLinea.IApLin.Editar()
' End If
'End Sub
Private Sub BotonNuevo(sender As Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs) Handles btNuevo.ItemClick
apLinea.IApLin.Nuevo()
End Sub
Private Sub BotonEliminar(sender As Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs) Handles btEliminar.ItemClick
'apLinea.IApLin.Eliminar()
apLinea.Eliminar()
End Sub
'Private Sub BotonGuardar(sender As Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs) Handles btGuardar.ItemClick
' apLinea.Guardar()
'End Sub
'Private Sub ContenedorLineas_GotFocus(sender As Object, e As RoutedEventArgs) Handles Me.GotFocus
' Debug.WriteLine("contenedorlin.gotfocus")
'End Sub
Private Sub btSeleccionar_CheckedChanged(sender As Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs)
apLinea.SeleccionarHabilitadoCambiado(btSeleccionar.IsChecked)
End Sub
Public Sub btInvertir_ItemClick(sender As Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs)
'Dim enti As System.Data.Objects.DataClasses.EntityObject = Nothing
'For i = 0 To Me.apLinea.Rejilla.VisibleRowCount - 1
' enti = Me.apLinea.Rejilla.GetRow(i)
' Dim key As Integer
' If Not enti Is Nothing Then
' Dim rowHandle As Integer = Me.apLinea.Rejilla.GetRowHandleByVisibleIndex(i)
' key = enti.GetType.GetProperty(Me.apLinea.CampoIndice).GetValue(enti, Nothing)
' Dim newIsSelected As Boolean = Not Me.apLinea.ElementosSeleccionados.GetIsSelected(key)
' Me.apLinea.Rejilla.SetCellValue(rowHandle, "tswpf_seleccionar", newIsSelected)
' End If
'Next
'Me.apLinea.Rejilla.RefreshData()
Try
Dim iq As IQueryable(Of System.Data.Objects.DataClasses.EntityObject)
Dim li As List(Of System.Data.Objects.DataClasses.EntityObject) = Nothing
Dim key As Integer
Try
'iq = Me.apLinea.Rejilla.DataContext
iq = Me.apLinea.Rejilla.ItemsSource
li = iq.ToList
Catch ex As InvalidCastException
'Catch ex As Exception
Try
li = Me.apLinea.Rejilla.ItemsSource
Catch ex2 As Exception
Dim ob = Me.apLinea.Rejilla.ItemsSource
For i = 0 To ob.Count - 1
key = ob(i).GetType.GetProperty(Me.apLinea.CampoIndice).GetValue(ob(i), Nothing)
Dim newIsSelected As Boolean = Not Me.apLinea.ElementosSeleccionados.GetIsSelected(key)
Dim rowHandle As Integer = Me.apLinea.Rejilla.GetRowHandleByListIndex(i)
If Me.apLinea.Rejilla.IsGroupRowExpanded(rowHandle) Or Me.apLinea.Rejilla.GetRowLevelByRowHandle(rowHandle) = 0 Then
Me.apLinea.Rejilla.SetCellValue(rowHandle, "tswpf_seleccionar", newIsSelected)
End If
Next
End Try
End Try
If li IsNot Nothing Then
For i = 0 To li.Count - 1
key = li(i).GetType.GetProperty(Me.apLinea.CampoIndice).GetValue(li(i), Nothing)
Dim newIsSelected As Boolean = Not Me.apLinea.ElementosSeleccionados.GetIsSelected(key)
Dim rowHandle As Integer = Me.apLinea.Rejilla.GetRowHandleByListIndex(i)
If Me.apLinea.Rejilla.IsGroupRowExpanded(rowHandle) Or Me.apLinea.Rejilla.GetRowLevelByRowHandle(rowHandle) = 0 Then
Me.apLinea.Rejilla.SetCellValue(rowHandle, "tswpf_seleccionar", newIsSelected)
End If
Next
End If
Me.apLinea.Rejilla.RefreshData()
Catch ex As Exception
Debug.Write(ex.Message)
End Try
Me.apLinea.LanzaEventoInvertirSeleccion()
'Dim key As Integer
'Dim enti As System.Data.Objects.DataClasses.EntityObject = Nothing
'For i As Integer = 0 To Me.apLinea.Rejilla.DataContext.Count - 1
' enti = Me.apLinea.Rejilla.DataContext.GetType(i)
' key = enti.GetType.GetProperty(Me.apLinea.CampoIndice).GetValue(enti, Nothing)
' Dim newIsSelected As Boolean = Not Me.apLinea.ElementosSeleccionados.GetIsSelected(key)
' Dim rowHandle As Integer = Grid.GetRowHandleByListIndex(i)
' Grid.SetCellValue(rowHandle, "Selected", newIsSelected)
'Next i
End Sub
Private Sub btImprimirListado_ItemClick(sender As Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs)
Dim preview As New DocumentPreview()
Dim model As LinkPreviewModel = CreateLinkPreviewModel(TryCast(Me.apLinea.Rejilla.View, IPrintableControl))
preview.Model = model
Dim tabHeaderPrintInfoControl As New TabHeaderPrintInfoControl() With {.TabName = "Listado de " & Me.apLinea.Titulo, .LinkPreviewModel = model}
Dim docpanel = New DevExpress.Xpf.Docking.DocumentPanel
docpanel.Caption = tabHeaderPrintInfoControl
docpanel.Content = preview
docpanel.ClosingBehavior = DevExpress.Xpf.Docking.ClosingBehavior.ImmediatelyRemove
Me.apLinea.GrupoDocumentos.Add(docpanel)
Comun.dm.DockController.Activate(docpanel)
model.Link.CreateDocument(True)
End Sub
Public Shared Function CreateLinkPreviewModel(ByVal printableControl As IPrintableControl) As LinkPreviewModel
Dim link As New PrintableControlLink(TryCast(printableControl, IPrintableControl))
Return New LinkPreviewModel(link)
End Function
Private Sub btImprimirPlantilla_ItemClick(sender As Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs)
Dim idPlantilla As Integer = bePlantilla.EditValue
Me.apLinea.LanzaImprimirPlantilla(sender, e, idPlantilla)
End Sub
Private Sub btAcciones_ItemClick(sender As Object, e As ItemClickEventArgs)
Dim idAccion As Integer = beAcciones.EditValue
Me.apLinea.LanzaEjecutarAccion(sender, e, idAccion)
End Sub
Private Sub btActualizar_ItemClick(sender As Object, e As ItemClickEventArgs)
Me.apLinea.RefrescaUC()
End Sub
Private Sub ContenedorLineas_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
If DXSplashScreen.IsActive Then DXSplashScreen.Close()
End Sub
Private Sub ContenedorLineas_Unloaded(sender As Object, e As RoutedEventArgs) Handles Me.Unloaded
Try
If apLinea.Contexto IsNot Nothing Then
If apLinea.Contexto.Connection.State <> System.Data.ConnectionState.Closed Then apLinea.Contexto.Connection.Close()
End If
Catch ex As Exception
End Try
End Sub
Private Sub btAyuda_ItemClick(sender As Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs)
Me.apLinea.DelegadoAyuda.Invoke(Me.apLinea.uc.GetType.ToString)
End Sub
Private Sub btDiseño_ItemClick(sender As Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs)
Try
Dim drs = ObtieneDiseñoActual()
Me.apLinea.DelegadoDiseño.Invoke(Me.apLinea.Contexto, OperacionDiseñoEnum.GUARDAR, Me.apLinea.uc.GetType.ToString, _DescripcionDiseño, _TodosUsuariosDiseño, drs)
Catch ex As Exception
If Me.apLinea.DelegadoErrorNoControlado IsNot Nothing Then Me.apLinea.DelegadoErrorNoControlado.Invoke(Me.apLinea, ex)
DXMessageBox.Show(ex.Message, "Error btDiseño_Itemclick")
End Try
End Sub
Friend Function ObtieneDiseñoActual() As Byte()
Dim ld As New DiseñoRejillas
Dim i As Integer
Dim lg As List(Of tsGridControl) = Nothing
tsWPF.ObtieneHijosDeTipo(Of tsGridControl)(ApLineas, lg)
For Each l In lg
i += 1
If l.Name = "" Then l.Name = "tsRejilla-" & i.ToString
Dim dr As New DiseñoRejilla
dr.Nombre = l.Name
dr.Version = "1"
Dim ms As New MemoryStream
'Dim ms As New FileStream("c:\tmp\diseño1.xml", FileMode.CreateNew)
l.SaveLayoutToStream(ms)
' l.SaveLayoutToXml("c:\tmp\diseño2.xml")
'ms.Close()
dr.Diseño = ms.ToArray
ld.Rejillas.Add(dr)
Next
Dim drs = System.Text.Encoding.Unicode.GetBytes(tsl5.Utilidades.serializar(ld))
Return drs
End Function
Private Sub btRestaurarDiseño_ItemClick(sender As Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs)
If apLinea.DiseñoOriginal IsNot Nothing Then
Try
Dim ld As New DiseñoRejillas
ld = tsl5.Utilidades.deserializar(System.Text.Encoding.Unicode.GetString(apLinea.DiseñoOriginal), ld.GetType)
Dim i As Integer
Dim lg As List(Of tsGridControl) = Nothing
tsWPF.ObtieneHijosDeTipo(Of tsGridControl)(ApLineas, lg)
For Each l In lg
i += 1
If l.Name = "" Then l.Name = "tsRejilla-" & i.ToString
Try
If ld.Rejillas.Any(Function(x) x.Nombre = l.Name) Then
Dim dr As DiseñoRejilla = ld.Rejillas.Where(Function(x) x.Nombre = l.Name).First
l.RestoreLayoutFromStream(New System.IO.MemoryStream(dr.Diseño))
End If
Catch ex As Exception
Debug.Write("Error DelegadoDiseño Rejilla")
End Try
Next
Dim drs = System.Text.Encoding.Unicode.GetBytes(tsl5.Utilidades.serializar(ld))
Me.apLinea.DelegadoDiseño.Invoke(Me.apLinea.Contexto, OperacionDiseñoEnum.RESTAURAR_ORIGINAL, Me.apLinea.uc.GetType.ToString, _DescripcionDiseño, _TodosUsuariosDiseño, drs)
Catch ex As Exception
If Me.apLinea.DelegadoErrorNoControlado IsNot Nothing Then Me.apLinea.DelegadoErrorNoControlado.Invoke(Me.apLinea, ex)
End Try
End If
End Sub
Private Sub btGuardarDiseñoComo_ItemClick(sender As Object, e As ItemClickEventArgs)
Try
Dim drs = ObtieneDiseñoActual()
Me.apLinea.DelegadoDiseño.Invoke(Me.apLinea.Contexto, OperacionDiseñoEnum.GUARDAR_COMO, Me.apLinea.uc.GetType.ToString, _DescripcionDiseño, _TodosUsuariosDiseño, drs)
Catch ex As Exception
If Me.apLinea.DelegadoErrorNoControlado IsNot Nothing Then Me.apLinea.DelegadoErrorNoControlado.Invoke(Me.apLinea, ex)
DXMessageBox.Show(ex.Message, "Error btDiseño_Itemclick")
End Try
End Sub
Private Sub btAbrirDiseñoGuardado_ItemClick(sender As Object, e As ItemClickEventArgs)
Dim b = Me.apLinea.DelegadoDiseño.Invoke(Me.apLinea.Contexto, OperacionDiseñoEnum.ABRIR_DISEÑO_GUARDADO, Me.apLinea.uc.GetType.ToString, _DescripcionDiseño, _TodosUsuariosDiseño, Nothing)
If b IsNot Nothing Then
Dim ld As New DiseñoRejillas
ld = tsl5.Utilidades.deserializar(System.Text.Encoding.Unicode.GetString(b), ld.GetType)
Dim i As Integer
Dim lg As List(Of tsGridControl) = Nothing
tsWPF.ObtieneHijosDeTipo(Of tsGridControl)(Me, lg)
For Each l In lg
i += 1
If l.Name = "" Then l.Name = "tsRejilla-" & i.ToString
Try
If ld.Rejillas.Any(Function(x) x.Nombre = l.Name) Then
Dim dr As DiseñoRejilla = ld.Rejillas.Where(Function(x) x.Nombre = l.Name).First
l.RestoreLayoutFromStream(New System.IO.MemoryStream(dr.Diseño))
End If
Catch ex As Exception
If Me.apLinea.DelegadoErrorNoControlado IsNot Nothing Then Me.apLinea.DelegadoErrorNoControlado.Invoke(Me.apLinea, ex)
DXMessageBox.Show(ex.Message, "Error btDiseño_Itemclick")
End Try
Next
End If
End Sub
Private Sub BtExportar_ItemClick(sender As Object, e As ItemClickEventArgs)
Dim vista As TableView = Me.apLinea.Rejilla.View
Dim sfd As New SaveFileDialog
sfd.FileName = IO.Path.GetDirectoryName("Exportacion") & (Me.apLinea.Rejilla.NombreTablaBase.NothingAVacio & " Exportacion.xlsx").Trim
sfd.Filter = "Fichero Excel (*.xls, *.xlsx, *.csv)|*.xls;*.xlsx;*.csv"
sfd.DefaultExt = ".xlsx"
If sfd.ShowDialog Then
Select Case IO.Path.GetExtension(sfd.FileName).ToLower
Case ".xls"
vista.ExportToXls(sfd.FileName)
Case ".xlsx"
vista.ExportToXlsx(sfd.FileName)
Case ".csv"
vista.ExportToCsv(sfd.FileName)
End Select
Process.Start(sfd.FileName)
End If
End Sub
Private Sub BtCapturar_ItemClick(sender As Object, e As ItemClickEventArgs)
Dim sficherojpg = tsl5.Utilidades.ObtieneFicheroAleatorio(System.IO.Path.GetTempPath, "jpg")
IO.File.WriteAllBytes(sficherojpg, Me.apLinea.uc.ObtieneImagen(1, 100))
Process.Start(sficherojpg)
End Sub
End Class