Agregar archivos de proyecto.

This commit is contained in:
2026-05-14 08:45:02 +02:00
parent 0bf9686303
commit 371937db13
129 changed files with 100769 additions and 0 deletions

View File

@@ -0,0 +1,409 @@
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