2490 lines
145 KiB
VB.net
2490 lines
145 KiB
VB.net
Imports DevExpress.Xpf.Docking
|
|
Imports DevExpress.Xpf.Editors
|
|
Imports DevExpress.Xpf.Core
|
|
Imports DevExpress.Mvvm
|
|
Imports DevExpress.Xpf.Grid
|
|
Imports tsl5
|
|
Imports DevExpress.Xpf.Core.Native
|
|
Imports System.Data
|
|
Imports System.Data.Objects
|
|
Imports System.Data.Objects.DataClasses
|
|
Imports DevExpress.Xpf.Printing
|
|
Imports tsWPF.Controles
|
|
Imports DevExpress.Xpf.Bars
|
|
Imports System.IO
|
|
Imports System.IO.Compression
|
|
Imports tsl5.Extensiones
|
|
Imports tsl5.Extensiones.StringExtensions
|
|
Imports System.Data.Entity
|
|
Imports Microsoft.Win32
|
|
Imports System.ComponentModel
|
|
Imports System.Data.Entity.Infrastructure
|
|
Imports tsWPF
|
|
Imports System.Data.SqlClient
|
|
Imports System.Data.Common
|
|
Imports DevExpress.Xpf.Docking.Base
|
|
Imports DevExpress.XtraReports.UI
|
|
Imports tsl5.Enumeraciones
|
|
Imports tsWPF.Comun
|
|
|
|
Public MustInherit Class tsUserControl
|
|
Inherits UserControl
|
|
Public Property TabStopEnCamposNoUsuales As Boolean = True
|
|
Public MustOverride Function EstableceDCPrincipal(Optional Background As Boolean = False, Optional FuerzaNuevo As Boolean = False, Optional Refrescar As Boolean = False) As tsWPF.Comun.EstadosAplicacion
|
|
|
|
Public MustOverride Sub EstableceDataContextSecundarios(Optional Background As Boolean = False)
|
|
' ReadOnly Property TituloPestaña As String
|
|
' Public MustOverride ReadOnly Property CampoIndice As String
|
|
Public MustOverride ReadOnly Property idRegistroAplicacionActual As String
|
|
Public MustOverride Sub EstableceTitulo()
|
|
Public MustOverride ReadOnly Property DescripcionRegistro As String
|
|
|
|
' Sub Guardar()
|
|
Public MustOverride Sub Cargado()
|
|
Public MustOverride Function ObtieneBD() As Object
|
|
' Public MustOverride Function ObtieneConexionBD() As tsl5.Datos.BBDD
|
|
' ReadOnly Property Titulo As String
|
|
Public MustOverride ReadOnly Property NombreTablaBase As String
|
|
|
|
Friend Sub LanzaBotonNuevoPulsado()
|
|
RaiseEvent BotonNuevoPulsado()
|
|
End Sub
|
|
|
|
' Sub EstableceAplicacion(ap As Aplicacion)
|
|
Public MustOverride Function ObtienePermisos() As Permisos
|
|
|
|
|
|
' Function Obtiene_ucControlBusqueda() As UserControl
|
|
|
|
|
|
|
|
|
|
|
|
Public Sub New()
|
|
MyBase.New()
|
|
End Sub
|
|
|
|
' Friend _IAplicacion As IAplicacion
|
|
' Private _uc As UserControl
|
|
Private _ContenedorAplicacion As ContenedorAplicacion
|
|
' Private _idAplicacion As String
|
|
' Private _DatosConexionBD As tsl5.Datos.BBDD
|
|
Friend DiseñoOriginal As Byte()
|
|
|
|
Public Property ObjetosContenedores As New List(Of Object)
|
|
Public Property Lineas As New List(Of tsGridControl)
|
|
Public Property ControlesTS As New List(Of tsLayoutItem)
|
|
Public Property ObjetosSeleccionables As New List(Of ObjetoSeleccionable)
|
|
Public Property ObjetoActual As Object
|
|
'Public Property Contexto As Object
|
|
Public Property ContextoOc As ObjectContext
|
|
Public Property Contexto As Object
|
|
Public _Estado As tsWPF.Comun.EstadosAplicacion
|
|
Public PermisosConcedidos As Permisos
|
|
|
|
|
|
Public Property RefrescoSolicitado As Boolean = False
|
|
Public Property HabilitarRefresco As Boolean = False
|
|
' Public Property HabilitarRefrescoEnOtrasPestañas As Boolean = False
|
|
Friend ValidarControles As Boolean
|
|
Public Property docpanel As DevExpress.Xpf.Docking.DocumentPanel
|
|
|
|
Public Property OtrosParametros As String
|
|
Public Property ErroresValidacion As ErroresValidacion
|
|
Public Property DelegadoErrorNoControlado As ErrorNoControlado
|
|
Public GrupoDocumentos As DocumentGroup
|
|
' Private AperturaAutomatica As Boolean
|
|
Public Tipo_ucControlBusqueda As Type
|
|
Public GridSeleccion As tsGridControl
|
|
Public GridBusqueda As Object
|
|
Private TieneBotonDefecto As Boolean
|
|
Public Event AntesGuardar(sender As Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs, ByRef Cancelar As Boolean, ByRef MensajesError As Hashtable, EliminacionManual As Integer)
|
|
Public Event AntesEliminar(sender As Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs, ByRef Cancelar As Boolean, ByRef MensajesError As Hashtable, ByRef OmitirPreguntaContinuar As Boolean)
|
|
Public Event DespuesEliminar(sender As Object)
|
|
Public Event DespuesGuardar(sender As Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs, OpcionGuardado As Integer)
|
|
Public Event ErrorGuardando(sender As Object, ex As Exception, OpcionGuardado As Integer)
|
|
Public Event DespuesCancelarGuardar(sender As Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs, OpcionGuardado As Integer)
|
|
Public Event CampoActualizado(sender As Object, e As DataTransferEventArgs)
|
|
Public Event OtrosParametrosEstablecido()
|
|
Public Event ContenedorAplicacionEstablecido()
|
|
Public Event ValidarControl(sender As Object, e As ValidationEventArgs, ByRef ErrorValidacion As ErrorValidacion, ByRef ValorOriginalCambiado As Object)
|
|
Public Event EstadoCambiado(EstadoAnterior As tsWPF.Comun.EstadosAplicacion, EstadoNuevo As tsWPF.Comun.EstadosAplicacion)
|
|
Public Event Enlazar(Celda As EditGridCellData, Defecto As Boolean)
|
|
Public Event EjecutarAccion(sender As Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs, idAccion As Integer)
|
|
Public Event ImprimirPlantilla(sender As Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs, idPlantilla As Integer)
|
|
Public Event TeclaFuncionPulsada(sender As Object, e As KeyEventArgs)
|
|
Public Event ObtieneIdentificadorBloqueo(ByRef id As Integer?, ByRef Aplicacion As String)
|
|
|
|
' Public Event AbreRegistroBuscado(uc As tsUserControl)
|
|
Public Event BotonNuevoPulsado()
|
|
|
|
Friend Property DelegadoAyuda As Ayuda
|
|
Friend Property DelegadoDiseño As Diseño
|
|
Public Delegate Sub ErrorNoControlado(Aplicacion As tsUserControl, ex As Exception)
|
|
Public Delegate Sub Ayuda(Codigo As String)
|
|
Public Delegate Function Diseño(bd As Object, Operacion As OperacionDiseñoEnum, CodigoAplicacion As String, ByRef Descripcion As String, ByRef TodosUsuarios As Boolean, DiseñoRejillas As Byte()) As Byte()
|
|
|
|
Public Property BloqueoActivo As tsBloqueo
|
|
Public Delegate Function DelegadoBloqueo(Aplicacion As tsUserControl, Accion As tsBloqueo.AccionBloqueEnum) As tsBloqueo
|
|
Public Property FuerzaMensajesBloqueos As Boolean = False
|
|
Private _DelegadoBloqueo As DelegadoBloqueo
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Public Property Estado As tsWPF.Comun.EstadosAplicacion
|
|
Get
|
|
Return _Estado
|
|
End Get
|
|
Set(value As tsWPF.Comun.EstadosAplicacion)
|
|
Dim EstadoAnterior As tsWPF.Comun.EstadosAplicacion = _Estado
|
|
If EstadoAnterior = tsWPF.Comun.EstadosAplicacion.ModificandoRegistro And value <> tsWPF.Comun.EstadosAplicacion.Nuevo AndAlso BloqueoActivo IsNot Nothing Then _DelegadoBloqueo.Invoke(Me, tsBloqueo.AccionBloqueEnum.DESBLOQUEAR)
|
|
If CambiarEstado(EstadoAnterior, value) Then
|
|
_Estado = value
|
|
RaiseEvent EstadoCambiado(EstadoAnterior, _Estado)
|
|
If value = tsWPF.Comun.EstadosAplicacion.ModificandoRegistro And _DelegadoBloqueo IsNot Nothing Then BloqueoActivo = _DelegadoBloqueo.Invoke(Me, tsBloqueo.AccionBloqueEnum.BLOQUEAR)
|
|
CompruebaBloqueo()
|
|
If Me.docpanel IsNot Nothing Then Me.docpanel.Tag = Me.idRegistroAplicacionActual
|
|
End If
|
|
End Set
|
|
End Property
|
|
Private Sub CompruebaBloqueo()
|
|
If BloqueoActivo IsNot Nothing AndAlso BloqueoActivo.ExistenOtrosBloqueos AndAlso BloqueoActivo.Tipobloqueo <> tsBloqueo.TipoBloqueoEnum.SIN_AVISOS Then
|
|
If Me.ContenedorAplicacion.btGuardar.IsEnabled OrElse FuerzaMensajesBloqueos Then
|
|
If DXSplashScreen.IsActive Then DXSplashScreen.Close()
|
|
If BloqueoActivo.Tipobloqueo = tsBloqueo.TipoBloqueoEnum.CON_AVISOS Then
|
|
DXMessageBox.Show("El registro está abierto otros usuarios, por lo que si almacena, puede darse problemas de concurrencia.", "Atención")
|
|
Else
|
|
EstableceSoloLectura()
|
|
DXMessageBox.Show("El registro está abierto por otros usuarios, por lo que no podrá modificarlo.", "Atención")
|
|
End If
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Public Function CambiarEstado(EstadoAnterior As tsWPF.Comun.EstadosAplicacion, EstadoNuevo As tsWPF.Comun.EstadosAplicacion, Optional FuerzaCambio As Boolean = False) As Boolean
|
|
If Not (System.ComponentModel.DesignerProperties.GetIsInDesignMode(Me)) Then
|
|
Try
|
|
If EstadoAnterior <> EstadoNuevo Or FuerzaCambio Then
|
|
CambiarEstado = True
|
|
Dim o As Object
|
|
Select Case EstadoNuevo
|
|
Case tsWPF.Comun.EstadosAplicacion.ModificandoRegistro, tsWPF.Comun.EstadosAplicacion.AplicacionSinIndice
|
|
If EstadoNuevo = tsWPF.Comun.EstadosAplicacion.ModificandoRegistro Then
|
|
_ContenedorAplicacion.siEstado.Content = "Operación Actual: Modificando " & Me.DescripcionRegistro
|
|
Else
|
|
_ContenedorAplicacion.siEstado.Content = "Operación Actual: Mostrando " & Me.DescripcionRegistro
|
|
End If
|
|
_ContenedorAplicacion.btNuevo.IsEnabled = False
|
|
_ContenedorAplicacion.btGuardar.IsEnabled = Me.PermisosConcedidos.Modificar Or ModoSuperUsuario
|
|
_ContenedorAplicacion.btGuardarYBuscar.IsEnabled = Me.PermisosConcedidos.Modificar Or ModoSuperUsuario
|
|
_ContenedorAplicacion.btEliminar.IsEnabled = Me.PermisosConcedidos.Eliminar Or ModoSuperUsuario
|
|
_ContenedorAplicacion.btNuevo.IsEnabled = Me.PermisosConcedidos.Nuevos Or ModoSuperUsuario
|
|
_ContenedorAplicacion.btActualizar.IsEnabled = True
|
|
For Each tsli As tsLayoutItem In Me.ControlesTS
|
|
o = tsli.Content
|
|
Try
|
|
EstableceSoloLectura(o, (tsli.PropiedadesTS.Modificable = TiposModificacion.NoModificable Or tsli.PropiedadesTS.Modificable = TiposModificacion.ModificableEnNuevos))
|
|
Catch ex As Exception
|
|
End Try
|
|
Next
|
|
For Each l In Me.Lineas
|
|
|
|
Dim SoloLectura = ModoSuperUsuario Or Not (l.PropiedadesTS.Modificable = TiposModificacion.Modificable Or l.PropiedadesTS.Modificable = TiposModificacion.ModificableEnExistentes)
|
|
If SoloLectura Then
|
|
l.EstableceSoloLectura()
|
|
Else
|
|
l.ReEstableceValoresDefectoSoloLectura()
|
|
End If
|
|
If Not l.ContextMenu Is Nothing Then
|
|
Dim mis = (From m As MenuItem In l.ContextMenu.Items Where m.Tag = "MI_ELIMINA")
|
|
If mis.Count > 0 Then
|
|
Dim mi As MenuItem = mis.First
|
|
mi.IsEnabled = Not SoloLectura
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
Case tsWPF.Comun.EstadosAplicacion.Nuevo
|
|
|
|
_ContenedorAplicacion.siEstado.Content = "Operacion Actual: Añadiendo " & Me.DescripcionRegistro
|
|
_ContenedorAplicacion.btNuevo.IsEnabled = Me.PermisosConcedidos.Nuevos
|
|
_ContenedorAplicacion.btGuardar.IsEnabled = True
|
|
_ContenedorAplicacion.btGuardarYBuscar.IsEnabled = True
|
|
_ContenedorAplicacion.btEliminar.IsEnabled = False
|
|
_ContenedorAplicacion.btActualizar.IsEnabled = True
|
|
For Each tsli As tsLayoutItem In Me.ControlesTS
|
|
Try
|
|
o = tsli.Content
|
|
EstableceSoloLectura(o, (ModoSuperUsuario Or tsli.PropiedadesTS.Modificable = TiposModificacion.NoModificable Or tsli.PropiedadesTS.Modificable = TiposModificacion.ModificableEnExistentes))
|
|
Catch ex As Exception
|
|
End Try
|
|
Next
|
|
For Each l In Me.Lineas
|
|
Dim SoloLectura = Not (ModoSuperUsuario Or l.PropiedadesTS.Modificable = TiposModificacion.Modificable Or l.PropiedadesTS.Modificable = TiposModificacion.ModificableEnNuevos)
|
|
If SoloLectura Then
|
|
l.EstableceSoloLectura()
|
|
Else
|
|
l.ReEstableceValoresDefectoSoloLectura()
|
|
End If
|
|
If Not l.ContextMenu Is Nothing Then
|
|
Dim mis = (From m As MenuItem In l.ContextMenu.Items Where m.Tag = "MI_ELIMINA")
|
|
If mis.Count > 0 Then
|
|
Dim mi As MenuItem = mis.First
|
|
mi.IsEnabled = Not SoloLectura
|
|
End If
|
|
End If
|
|
Next
|
|
End Select
|
|
CambiarEstado = True
|
|
Else
|
|
CambiarEstado = False
|
|
End If
|
|
Catch EX As Exception
|
|
MsgBox(EX.Message, , "en cambiarestado")
|
|
CambiarEstado = False
|
|
End Try
|
|
Else
|
|
CambiarEstado = False
|
|
End If
|
|
End Function
|
|
|
|
Public Sub RefrescaUC(Optional ForzarCambioEstado As Boolean = False, Optional Background As Boolean = False)
|
|
Try
|
|
Select Case Me.Estado
|
|
Case tsWPF.Comun.EstadosAplicacion.ModificandoRegistro
|
|
'Dim oCampoIndice As Object = Nothing
|
|
'Dim o = Me.DataContext
|
|
'Dim CampoIndice As String
|
|
'Try
|
|
' CampoIndice = DataContext.entitykey.entitykeyvalues(0).key
|
|
' oCampoIndice = o.GetType.GetProperty(CampoIndice)
|
|
'Catch
|
|
'End Try
|
|
Me.Contexto = ObtieneBD()
|
|
If Me.Contexto.GetType.BaseType Is GetType(ObjectContext) Then
|
|
Me.ContextoOc = TryCast(Me.Contexto, ObjectContext)
|
|
Else
|
|
EstableceContextoOcdbContext()
|
|
End If
|
|
' If Me.Contexto IsNot Nothing AndAlso Me.Contexto.GetType.BaseType Is GetType(ObjectContext) AndAlso DirectCast(Contexto, ObjectContext).Connection.State = ConnectionState.Closed Then AperturaAutomatica = True
|
|
DCPrincipal(Background,, True)
|
|
'If ForzarCambioEstado Then RaiseEvent EstadoCambiado(EstadosAplicacion.ModificandoRegistro, tsWPF.Comun.EstadosAplicacion.ModificandoRegistro)
|
|
If ForzarCambioEstado OrElse (BloqueoActivo IsNot Nothing) Then
|
|
CambiarEstado(EstadosAplicacion.ModificandoRegistro, tsWPF.Comun.EstadosAplicacion.ModificandoRegistro, True)
|
|
If _DelegadoBloqueo IsNot Nothing Then BloqueoActivo = _DelegadoBloqueo.Invoke(Me, tsBloqueo.AccionBloqueEnum.BLOQUEAR)
|
|
CompruebaBloqueo()
|
|
If ForzarCambioEstado Then RaiseEvent EstadoCambiado(EstadosAplicacion.ModificandoRegistro, tsWPF.Comun.EstadosAplicacion.ModificandoRegistro)
|
|
End If
|
|
EstableceDataContextSecundarios(Background)
|
|
|
|
Case tsWPF.Comun.EstadosAplicacion.Nuevo
|
|
EstableceDataContextSecundarios(Background)
|
|
Case tsWPF.Comun.EstadosAplicacion.AplicacionSinIndice
|
|
' Me.Contexto = ObtieneBD()
|
|
' EstableceDataContextPrincipal()
|
|
Me.Contexto = ObtieneBD()
|
|
' If Me.Contexto IsNot Nothing AndAlso Me.Contexto.GetType.BaseType Is GetType(ObjectContext) AndAlso DirectCast(Contexto, ObjectContext).Connection.State = ConnectionState.Closed Then AperturaAutomatica = True
|
|
DCPrincipal(Background,, True)
|
|
End Select
|
|
RefrescarEnActivacion = False
|
|
Catch ex As Exception
|
|
If DelegadoErrorNoControlado IsNot Nothing Then DelegadoErrorNoControlado.Invoke(Me, ex)
|
|
DXMessageBox.Show(ex.Message, "Error")
|
|
Finally
|
|
RefrescoSolicitado = False
|
|
End Try
|
|
|
|
End Sub
|
|
Private Sub EstableceContextoOcdbContext()
|
|
If Me.Contexto.GetType.BaseType Is GetType(DbContext) Then
|
|
Me.ContextoOc = TryCast(Contexto, IObjectContextAdapter).ObjectContext
|
|
End If
|
|
End Sub
|
|
Friend Function DCPrincipal(Optional BackGround As Boolean = False, Optional FuerzaNuevo As Boolean = False, Optional Refrescar As Boolean = False) As tsWPF.Comun.EstadosAplicacion
|
|
Dim oc As ObjectContext = Nothing
|
|
Try
|
|
'If AperturaAutomatica Then
|
|
' oc = DirectCast(Contexto, ObjectContext)
|
|
' If oc.Connection.State <> ConnectionState.Open Then oc.Connection.Open()
|
|
'End If
|
|
Dim est = EstableceDCPrincipal(BackGround, FuerzaNuevo, Refrescar)
|
|
Return est
|
|
Catch ex As Exception
|
|
If DelegadoErrorNoControlado IsNot Nothing Then DelegadoErrorNoControlado.Invoke(Me, ex)
|
|
Throw New Exception(ex.Message, ex)
|
|
' Finally
|
|
'Try
|
|
' If AperturaAutomatica Then
|
|
' If oc.Connection.State = ConnectionState.Open Then oc.Connection.Close()
|
|
' End If
|
|
'Catch ex As Exception
|
|
' If DelegadoErrorNoControlado IsNot Nothing Then DelegadoErrorNoControlado.Invoke(Me, ex)
|
|
' DXMessageBox.Show(ex.Message, "Error")
|
|
'End Try
|
|
End Try
|
|
End Function
|
|
|
|
Public ReadOnly Property ContenedorAplicacion As ContenedorAplicacion
|
|
Get
|
|
Return _ContenedorAplicacion
|
|
End Get
|
|
End Property
|
|
|
|
Public Property ModoSuperUsuario As Boolean
|
|
Public Property RefrescarEnActivacion As Boolean
|
|
|
|
Public Delegate Sub ActivacionPestaña()
|
|
|
|
Public Property DelegadoActivacion As ActivacionPestaña
|
|
Public Property PermitirVariosNuevos As Boolean
|
|
|
|
Public Sub AgregaErroresTSGC(tsgc As tsGridControl, MensajesError As Hashtable, e As GridRowValidationEventArgs)
|
|
Dim ev As ErroresValidacion = Me.ErroresValidacion
|
|
ev.LimpiarErrores("TSGC-" & tsgc.PropiedadesTS.NumeroObjeto.ToString & ":" & e.RowHandle.ToString)
|
|
Dim sErrores As String = ""
|
|
For Each MensajeError In MensajesError
|
|
ev.AgregaError(New ErrorValidacion("TSGC-" & tsgc.PropiedadesTS.NumeroObjeto.ToString & ":" & e.RowHandle.ToString & ":" & MensajeError.Key, tsgc, MensajeError.Value, Nothing, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical), e)
|
|
sErrores &= MensajeError.Value & vbCrLf
|
|
Next
|
|
e.SetError(sErrores)
|
|
End Sub
|
|
'Public Sub New(Contenido As IAplicacion, Optional Mayusculizar As Boolean = True, Optional FuncionAyuda As Ayuda = Nothing, Optional FuncionDiseño As Diseño = Nothing, Optional FuncionErrorNoControlado As ErrorNoControlado = Nothing, Optional OtrosParametros As String = "")
|
|
' ' Me.NombreTablaBase = Contenido.NombreTablaBase
|
|
' ' MyBase.New
|
|
|
|
' 'Cargado()
|
|
'End Sub
|
|
|
|
Friend Sub LanzaCerraryVolverAUltimaPestaña()
|
|
Comun.dm.DockController.RemovePanel(docpanel)
|
|
Try
|
|
If Comun.DocPanelAnterior IsNot Nothing Then Comun.dm.Activate(DocPanelAnterior)
|
|
Catch
|
|
End Try
|
|
End Sub
|
|
|
|
Friend Sub LanzaBuscarNuevoRegistro(CerrarPanel As Boolean)
|
|
Dim uc As tsUserControl = Activator.CreateInstance(Tipo_ucControlBusqueda)
|
|
uc.AbreAplicacionEnPestaña(Me.GrupoDocumentos, DelegadoAyuda, DelegadoDiseño, DelegadoErrorNoControlado, OtrosParametros)
|
|
If CerrarPanel Then
|
|
Comun.dm.DockController.RemovePanel(docpanel)
|
|
End If
|
|
End Sub
|
|
'Friend Sub LanzaGuardarYBuscarNuevoRegistro()
|
|
' Dim uc As tsUserControl = Activator.CreateInstance(Tipo_ucControlBusqueda)
|
|
' uc.AbreAplicacionEnPestaña(Me.GrupoDocumentos, DelegadoAyuda, DelegadoDiseño, DelegadoErrorNoControlado, OtrosParametros)
|
|
'End Sub
|
|
|
|
|
|
Public Sub RellenaContextoOCDesdeDBcontext()
|
|
Try
|
|
' Me.ContextoOc = Me.Contexto
|
|
' If Me.Contexto.GetType.BaseType Is GetType(ObjectContext) Then
|
|
' Me.ContextoOc = TryCast(Me.Contexto, ObjectContext)
|
|
' ElseIf Me.Contexto.GetType.BaseType Is GetType(DbContext) Then
|
|
Dim dc = TryCast(Me.Contexto, DbContext)
|
|
Me.ContextoOc = TryCast(dc, IObjectContextAdapter).ObjectContext
|
|
' End If
|
|
Catch ex As Exception
|
|
' DXMessageBox.Show("Error en Rellenacontextooc " & ex.Message, "Error")
|
|
Throw New Exception(ex.Message, ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub EstableceDCSecundarios(Optional BackGround As Boolean = False)
|
|
Try
|
|
_ContenedorAplicacion.IsEnabled = False
|
|
EstableceDataContextSecundarios(BackGround)
|
|
_ContenedorAplicacion.bePlantilla.IsVisible = Not (_ContenedorAplicacion.cbPlantillaAImprimir.ItemsSource Is Nothing OrElse _ContenedorAplicacion.cbPlantillaAImprimir.ItemsSource.Count = 0 OrElse Me.PermisosConcedidos.Impresion = False)
|
|
_ContenedorAplicacion.btImprimirPlantilla.IsVisible = Not (_ContenedorAplicacion.cbPlantillaAImprimir.ItemsSource Is Nothing OrElse _ContenedorAplicacion.cbPlantillaAImprimir.ItemsSource.Count = 0 OrElse Me.PermisosConcedidos.Impresion = False)
|
|
_ContenedorAplicacion.beAcciones.IsVisible = Not (_ContenedorAplicacion.cbAcciones.ItemsSource Is Nothing OrElse _ContenedorAplicacion.cbAcciones.ItemsSource.Count = 0)
|
|
_ContenedorAplicacion.btAcciones.IsVisible = Not (_ContenedorAplicacion.cbAcciones.ItemsSource Is Nothing OrElse _ContenedorAplicacion.cbAcciones.ItemsSource.Count = 0)
|
|
Catch ex As Exception
|
|
If DelegadoErrorNoControlado IsNot Nothing Then DelegadoErrorNoControlado.Invoke(Me, ex)
|
|
DXMessageBox.Show(ex.Message, "Error")
|
|
Finally
|
|
_ContenedorAplicacion.IsEnabled = True
|
|
End Try
|
|
End Sub
|
|
|
|
Friend Sub LanzaTeclaFuncionPulsada(sender As Object, e As KeyEventArgs)
|
|
RaiseEvent TeclaFuncionPulsada(sender, e)
|
|
End Sub
|
|
|
|
Private Sub Contexto_SavingChanges(sender As Object, e As EventArgs)
|
|
RefrescaAplicaciones() ' If Me.GrupoDocumentos IsNot Nothing Then Comun.RefrescaAplicaciones(Me.GrupoDocumentos.Parent, Nothing, Me.docpanel.Tag)
|
|
End Sub
|
|
Public Sub RefrescaAplicaciones()
|
|
If Me.GrupoDocumentos IsNot Nothing Then Comun.RefrescaAplicaciones(Me.GrupoDocumentos.Parent, Nothing, Me.docpanel.Tag)
|
|
End Sub
|
|
Private Sub uc_PreviewKeyDown(sender As Object, e As KeyEventArgs)
|
|
Select Case e.Key
|
|
Case Key.F1
|
|
If Me.ContenedorAplicacion.BarraPrincipal.Visible And Me.ContenedorAplicacion.btGuardarYBuscar.IsVisible And Me.ContenedorAplicacion.btGuardarYBuscar.IsEnabled Then Me.ContenedorAplicacion.btGuardarYBuscar_ItemClick(Nothing, Nothing)
|
|
Case Key.F2
|
|
If Me.ContenedorAplicacion.BarraPrincipal.Visible And Me.ContenedorAplicacion.btGuardar.IsVisible And Me.ContenedorAplicacion.btGuardar.IsEnabled Then Me.ContenedorAplicacion.btGuardar_ItemClick(Nothing, Nothing)
|
|
Case Key.F3
|
|
If Me.ContenedorAplicacion.BarraPrincipal.Visible And Me.ContenedorAplicacion.btBuscar.IsVisible And Me.ContenedorAplicacion.btBuscar.IsEnabled Then Me.ContenedorAplicacion.btBuscar_ItemClick(Nothing, Nothing)
|
|
Case Key.F4
|
|
If Me.ContenedorAplicacion.BarraPrincipal.Visible And Me.ContenedorAplicacion.btNuevo.IsVisible And Me.ContenedorAplicacion.btNuevo.IsEnabled Then Me.ContenedorAplicacion.Nuevo(Nothing, Nothing)
|
|
Case Key.F5
|
|
If Me.ContenedorAplicacion.BarraPrincipal.Visible And Me.ContenedorAplicacion.btActualizar.IsVisible And Me.ContenedorAplicacion.btActualizar.IsEnabled Then Me.ContenedorAplicacion.btActualizar_ItemClick(Nothing, Nothing)
|
|
Case Key.F7
|
|
If Me.ContenedorAplicacion.BarraPrincipal.Visible And Me.ContenedorAplicacion.btImprimirPlantilla.IsVisible And Me.ContenedorAplicacion.btImprimirPlantilla.IsEnabled Then Me.ContenedorAplicacion.btImprimirPlantilla_ItemClick(Nothing, Nothing)
|
|
Case Key.F8
|
|
Comun.dm.DockController.RemovePanel(docpanel)
|
|
Case Key.Pause
|
|
If Keyboard.Modifiers = ModifierKeys.Shift And ModoSuperUsuario = False And tsWPF.Configuracion.FuncionModoSuperUsuario IsNot Nothing Then
|
|
ModoSuperUsuario = tsWPF.Configuracion.FuncionModoSuperUsuario(Me)
|
|
If ModoSuperUsuario Then
|
|
'Me.ContenedorCL.Dispatcher.BeginInvoke(New Action(Sub() Me.ContenedorCL.IniciaAnimacion("Datos Guardadados", Colors.Black)), System.Windows.Threading.DispatcherPriority.Normal)
|
|
Me.ContenedorAplicacion.IniciaAnimacionBlink("Modo Super Usuario", Colors.Red)
|
|
RefrescaUC(True)
|
|
End If
|
|
End If
|
|
Case Else
|
|
Try
|
|
If Keyboard.FocusedElement IsNot Nothing AndAlso Keyboard.FocusedElement.GetType.ToString.ToLower.Contains(".richedit.") Then
|
|
Exit Sub
|
|
End If
|
|
Catch ex As Exception
|
|
End Try
|
|
If e.Key = Key.Enter AndAlso Not TieneBotonDefecto Then
|
|
If Not ObjetoActual Is Nothing AndAlso (Not ObjetoActual.GetType Is GetType(tsGridControl) OrElse Keyboard.Modifiers = ModifierKeys.Control) Then
|
|
Dim CapturarEnter As Boolean = True
|
|
Dim clave As Integer
|
|
If ObjetoActual.GetType Is GetType(tsGridControl) Then
|
|
clave = TryCast(ObjetoActual, tsGridControl).PropiedadesTS.NumeroObjeto
|
|
Else
|
|
Dim pts As PropiedadesTS = ObjetoActual.parent.PropiedadesTs
|
|
clave = pts.NumeroObjeto
|
|
CapturarEnter = pts.CapturarEnter
|
|
End If
|
|
Dim bContinuar As Boolean
|
|
Select Case ObjetoActual.GetType
|
|
Case GetType(ComboBoxEdit)
|
|
bContinuar = Not TryCast(ObjetoActual, ComboBoxEdit).IsPopupOpen
|
|
Case GetType(LookUp.LookUpEdit)
|
|
bContinuar = Not TryCast(ObjetoActual, LookUp.LookUpEdit).IsPopupOpen
|
|
Case Else
|
|
bContinuar = True
|
|
End Select
|
|
If bContinuar And CapturarEnter Then
|
|
|
|
Dim os As ObjetoSeleccionable = (From o In ObjetosSeleccionables Where o.PropiedadesTS.NumeroObjeto = clave).First
|
|
Dim i As Integer = ObjetosSeleccionables.IndexOf(os)
|
|
' Dim btbDeshabilitado As Boolean
|
|
Do
|
|
' btbDeshabilitado = False
|
|
If i = ObjetosSeleccionables.Count - 1 Then
|
|
i = 0
|
|
Else
|
|
i += 1
|
|
End If
|
|
' sigo.focus()
|
|
'Dim pt As Object = ObjetosSeleccionables(i).Objeto.parent
|
|
'If pt IsNot Nothing AndAlso pt.GetType Is GetType(DevExpress.Xpf.Core.DXTabItem) Then
|
|
' Dim tb As DevExpress.Xpf.Core.DXTabItem = pt
|
|
' If Not tb.IsSelected And tb.Visibility = Visibility.Visible Then
|
|
' btbDeshabilitado = True
|
|
' End If
|
|
'End If
|
|
Loop Until ObjetosSeleccionables(i).PropiedadesTS.UsualCorreccion
|
|
Dim sigo As Object = ObjetosSeleccionables(i).Objeto
|
|
' sigo.focus()
|
|
Dim p As Object = sigo.parent
|
|
' Dim bEnfocar As Boolean = True
|
|
Do While Not p Is Nothing
|
|
If p.GetType Is GetType(DevExpress.Xpf.Core.DXTabItem) Then
|
|
Dim tb As DevExpress.Xpf.Core.DXTabItem = p
|
|
If Not tb.IsSelected And tb.Visibility = Visibility.Visible Then
|
|
|
|
' bEnfocar = False
|
|
'p.focus()
|
|
' IndicePrimerCampoPestaña = i
|
|
'Dispatcher.BeginInvoke(New Action(Sub() p.isSelected = True))
|
|
tb.IsSelected = True
|
|
' p.focus()
|
|
' Dim parametros() As Object = {sigo}
|
|
' Dispatcher.BeginInvoke(New Action(Function() sigo.Focus()))
|
|
' sigo.focus()
|
|
'Exit Do
|
|
End If
|
|
'p = uc.Parent
|
|
p = p.Parent
|
|
Else
|
|
p = p.PARENT
|
|
End If
|
|
Loop
|
|
e.Handled = CapturarEnter 'True
|
|
Me.Dispatcher.BeginInvoke(New Action(Function() sigo.Focus()), System.Windows.Threading.DispatcherPriority.ContextIdle)
|
|
End If
|
|
Else
|
|
Try
|
|
If ObjetoActual.GetType Is GetType(tsGridControl) Then
|
|
Dim tsgc As tsGridControl = DirectCast(ObjetoActual, tsGridControl)
|
|
Dim ctsc = TryCast(tsgc.CurrentColumn, tsGridColumn)
|
|
If Not (ctsc IsNot Nothing AndAlso ctsc.CapturarEnter = True) Then
|
|
If tsgc.PropiedadesTS.CapturarEnter Then
|
|
tsgc.LanzaEnterPulsado()
|
|
Do
|
|
Dim ca = tsgc.CurrentColumn.FieldName
|
|
tsgc.View.MoveNextCell()
|
|
Dim cs = tsgc.CurrentColumn.FieldName
|
|
If ca = cs Then
|
|
tsgc.View.MoveNextRow()
|
|
tsgc.CurrentColumn = tsgc.Columns.First
|
|
End If
|
|
Loop Until TryCast(ObjetoActual, tsGridControl).CurrentColumn.TabStop
|
|
e.Handled = True
|
|
End If
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
End Try
|
|
End If
|
|
Else
|
|
If Not ObjetoActual Is Nothing AndAlso Keyboard.Modifiers = ModifierKeys.Control Then
|
|
If (e.Key = Key.Insert Or e.Key = Key.A) And ObjetoActual.GetType Is GetType(tsGridControl) Then
|
|
Dim gc As tsGridControl = TryCast(ObjetoActual, tsGridControl)
|
|
gc.View.CommitEditing()
|
|
|
|
gc.View.FocusedRowHandle = DataControlBase.NewItemRowHandle
|
|
|
|
gc.CurrentColumn = gc.Columns(0)
|
|
|
|
|
|
'Debug.WriteLine(gc.ItemsSource.count.GetType.ToString)
|
|
''Dim ni As EntityObject = TryCast(gc.ItemsSource, EntityCollection(Of EntityObject)).DefaultIfEmpty()
|
|
'' Debug.WriteLine(gc.View.GetType.ToString)
|
|
''gc.DataContext.Add(ni)
|
|
''gc.CurrentItem = ni
|
|
''Dim kk = f(Of String)()
|
|
'Dim tipo As Type = gc.ItemsSource.BaseType.GetGenericArguments.First
|
|
'Dim kk2 = f2(gc.ItemsSource.GetType)
|
|
|
|
|
|
End If
|
|
' Else
|
|
|
|
'If (e.Key = Key.Back OrElse e.Key = Key.Delete) AndAlso ObjetoActual IsNot Nothing AndAlso ObjetoActual.GetType Is GetType(ComboBoxEdit) Then
|
|
' ObjetoActual.editvalue = Nothing
|
|
' e.Handled = True
|
|
'End If
|
|
|
|
'Else
|
|
' If (e.Key = Key.A Or e.Key = Key.R) And Keyboard.Modifiers = ModifierKeys.Control Then
|
|
|
|
' Dim scaler = TryCast(dm.LayoutTransform, ScaleTransform)
|
|
|
|
' If scaler Is Nothing Then
|
|
' scaler = New ScaleTransform(1.0, 1.0)
|
|
' dm.LayoutTransform = scaler
|
|
' End If
|
|
|
|
' Dim animator As New DoubleAnimation()
|
|
' animator.Duration = New Duration(TimeSpan.FromMilliseconds(600))
|
|
|
|
' Dim nuevaEscala As Double
|
|
' If e.Key = Key.A Then
|
|
' scaler.ScaleX += 0.05
|
|
' Else
|
|
' scaler.ScaleX -= 0.05
|
|
' End If
|
|
' animator.[To] = nuevaEscala
|
|
' scaler.BeginAnimation(ScaleTransform.ScaleXProperty, animator)
|
|
' scaler.BeginAnimation(ScaleTransform.ScaleYProperty, animator)
|
|
' End If
|
|
End If
|
|
End If
|
|
If (Keyboard.Modifiers And ModifierKeys.Control) AndAlso e.Key = Key.B Then
|
|
If Me.GridSeleccion IsNot Nothing OrElse Me.GridBusqueda IsNot Nothing Then
|
|
If GridBusqueda IsNot Nothing Then
|
|
Dim tv = TryCast(Me.GridBusqueda.View, TableView)
|
|
If tv IsNot Nothing Then
|
|
If tv.SearchControl IsNot Nothing Then
|
|
tv.SearchControl.Focus()
|
|
End If
|
|
End If
|
|
Else
|
|
Dim tv = TryCast(Me.GridSeleccion.View, TableView)
|
|
If tv IsNot Nothing Then
|
|
If tv.SearchControl IsNot Nothing Then
|
|
tv.SearchControl.Focus()
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
End Select
|
|
End Sub
|
|
|
|
Public Function ObtieneVentana() As dxwGenerica
|
|
Dim dxw As New dxwGenerica
|
|
dxw.Content = _ContenedorAplicacion
|
|
Return dxw
|
|
End Function
|
|
|
|
Public Shared Function ActivaPestaña(Dg As DocumentGroup, idPestaña As String) As Boolean
|
|
If Comun.dm Is Nothing Then
|
|
Comun.dm = Dg.GetDockLayoutManager
|
|
' AddHandler Comun.dm.DockItemClosing, AddressOf Cerrando_Docitem
|
|
End If
|
|
Dim dcs As IEnumerable(Of BaseLayoutItem)
|
|
dcs = (From p In Dg.Items Where p.Tag = idPestaña)
|
|
If dcs.Count > 0 Then Comun.dm.Activate(dcs(0))
|
|
Return dcs.Count > 0
|
|
End Function
|
|
Public Sub AbreAplicacionEnPestaña(DocumentGroup As DocumentGroup, Optional FuncionAyuda As Ayuda = Nothing, Optional FuncionDiseño As Diseño = Nothing, Optional FuncionErrorNoControlado As ErrorNoControlado = Nothing, Optional OtrosParametros As String = "", Optional FuncionBloqueo As DelegadoBloqueo = Nothing, Optional SoloUnNuevo As Boolean = True)
|
|
Try
|
|
ConfiguraAplicacion(FuncionAyuda, FuncionDiseño, FuncionErrorNoControlado, OtrosParametros, FuncionBloqueo)
|
|
If Estado <> tsWPF.Comun.EstadosAplicacion.Cancelado Then
|
|
If DocumentGroup Is Nothing Then
|
|
Dim st = Environment.StackTrace
|
|
Throw New Exception("DocumentGroup es nothing. Pila de llamadas: " & st)
|
|
End If
|
|
GrupoDocumentos = DocumentGroup
|
|
If Comun.dm Is Nothing Then
|
|
Comun.dm = DocumentGroup.GetDockLayoutManager
|
|
' AddHandler Comun.dm.DockItemClosing, AddressOf Cerrando_Docitem
|
|
End If
|
|
Dim NuevoPanel As Boolean = False
|
|
If Estado = EstadosAplicacion.Nuevo AndAlso SoloUnNuevo = False Then NuevoPanel = True
|
|
Dim dcs As IEnumerable(Of BaseLayoutItem) = Nothing
|
|
If NuevoPanel = False Then
|
|
dcs = From p In GrupoDocumentos.Items Where p.Tag IsNot Nothing AndAlso p.Tag = idRegistroAplicacionActual
|
|
NuevoPanel = (dcs.Count = 0)
|
|
End If
|
|
If NuevoPanel Then
|
|
docpanel = New DevExpress.Xpf.Docking.DocumentPanel
|
|
If OtrosParametros.Contains("SUBTABS") Then
|
|
Dim ti As New DXTabItem
|
|
ti.Header = "prueba"
|
|
ti.Content = Me._ContenedorAplicacion
|
|
ti.AllowHide = DevExpress.Utils.DefaultBoolean.True
|
|
' aqui
|
|
Dim tc As New DXTabControl
|
|
tc.View.RemoveTabItemsOnHiding = True
|
|
tc.Items.Add(ti)
|
|
docpanel.Content = tc
|
|
|
|
Else
|
|
docpanel.Content = Me._ContenedorAplicacion
|
|
End If
|
|
docpanel.ClosingBehavior = DevExpress.Xpf.Docking.ClosingBehavior.ImmediatelyRemove
|
|
'docpanel.ShowCloseButton = tsWPF.Configuracion.MostrarBotonCerrarEnPestaña
|
|
If tsWPF.Configuracion.MostrarBotonCerrarEnPestaña Then GrupoDocumentos.ClosePageButtonShowMode = ClosePageButtonShowMode.InAllTabPageHeaders
|
|
GrupoDocumentos.Items.Add(docpanel)
|
|
Comun.dm.Activate(docpanel)
|
|
EstableceTitulo()
|
|
docpanel.Tag = idRegistroAplicacionActual
|
|
' Dispatcher.BeginInvoke(New Action(Sub() ValidarControles = True), System.Windows.Threading.DispatcherPriority.Loaded)
|
|
Dispatcher.BeginInvoke(New Action(Sub() ValidarControles = True), System.Windows.Threading.DispatcherPriority.Background)
|
|
Else
|
|
Comun.dm.Activate(dcs(0))
|
|
End If
|
|
End If
|
|
Catch EX As Exception
|
|
If DelegadoErrorNoControlado IsNot Nothing Then DelegadoErrorNoControlado.Invoke(Me, EX)
|
|
DXMessageBox.Show(EX.Message, "Error")
|
|
End Try
|
|
End Sub
|
|
|
|
'Private Shared Sub Cerrando_Docitem(sender As Object, e As ItemCancelEventArgs)
|
|
'Try
|
|
' If e.Item.GetType Is GetType(DocumentPanel) Then
|
|
' Dim dp As DocumentPanel = e.Item
|
|
' If dp.Content.GetType Is GetType(ContenedorAplicacion) Then
|
|
' Dim Cap As ContenedorAplicacion = dp.Content
|
|
' Dim uc As tsUserControl = Cap._Aplicacion
|
|
' If uc.BloqueoActivo IsNot Nothing Then uc._DelegadoBloqueo.Invoke(uc, tsBloqueo.AccionBloqueEnum.DESBLOQUEAR)
|
|
' End If
|
|
' End If
|
|
'Catch
|
|
'End Try
|
|
'End Sub
|
|
|
|
Private Sub ConfiguraAplicacion(Optional FuncionAyuda As Ayuda = Nothing, Optional FuncionDiseño As Diseño = Nothing, Optional FuncionErrorNoControlado As ErrorNoControlado = Nothing, Optional OtrosParametros As String = "", Optional FuncionBloqueo As DelegadoBloqueo = Nothing, Optional ModoVentana As Boolean = False)
|
|
Try
|
|
If DXSplashScreen.IsActive = False Then DXSplashScreen.Show(Of SplashScreenTecnosis)()
|
|
DXSplashScreen.SetState("Cargando ...")
|
|
Me._DelegadoBloqueo = FuncionBloqueo
|
|
Me.OtrosParametros = OtrosParametros
|
|
RaiseEvent OtrosParametrosEstablecido()
|
|
_ContenedorAplicacion = New ContenedorAplicacion(Me)
|
|
RaiseEvent ContenedorAplicacionEstablecido()
|
|
DelegadoAyuda = FuncionAyuda
|
|
If DelegadoAyuda Is Nothing Then _ContenedorAplicacion.btAyuda.IsVisible = False
|
|
DelegadoDiseño = FuncionDiseño
|
|
DelegadoErrorNoControlado = FuncionErrorNoControlado
|
|
Me.Contexto = Me.ObtieneBD
|
|
|
|
'Me.ContextoOc = Me.Contexto
|
|
If Me.Contexto.GetType.BaseType Is GetType(ObjectContext) Then
|
|
Me.ContextoOc = Me.Contexto
|
|
Else
|
|
Me.RellenaContextoOCDesdeDBcontext()
|
|
End If
|
|
|
|
If Configuracion.ModoEventosContextoSavingChanges = ModoContextoSavingChangesEnum.EventoSavingChanges AndAlso Me.Contexto.GetType.BaseType Is GetType(ObjectContext) Then
|
|
AddHandler DirectCast(Contexto, ObjectContext).SavingChanges, AddressOf Contexto_SavingChanges
|
|
End If
|
|
Me.PermisosConcedidos = ObtienePermisos()
|
|
If Me.PermisosConcedidos.Consultar = False Then Throw New PKICOAS.TSException("Permiso de acceso a " & Me.DescripcionRegistro & " Denegado", "PERMISO_DENEGADO")
|
|
ObtieneControlesTS(Me.Content, ControlesTS, ObjetosContenedores, Lineas, 0)
|
|
_ContenedorAplicacion.contenido.Children.Add(Me)
|
|
ErroresValidacion = New ErroresValidacion(_ContenedorAplicacion.lpMensajes)
|
|
|
|
Me.Estado = DCPrincipal()
|
|
If Estado <> tsWPF.Comun.EstadosAplicacion.Cancelado Then
|
|
EstableceDCSecundarios()
|
|
For Each gr In Me.Lineas
|
|
tsGridControl.EstableceFilterPopupModePredeterminados(gr)
|
|
Next
|
|
Me.ObjetosSeleccionables = (From os In ObjetosSeleccionables Order By os.TabIndex Select os).ToList
|
|
AddHandler Me.Loaded, AddressOf uc_Loaded
|
|
AddHandler Me.PreviewKeyDown, AddressOf uc_PreviewKeyDown
|
|
If DelegadoDiseño IsNot Nothing AndAlso Lineas.Count > 0 Then
|
|
Try
|
|
Dim b As Byte() = Nothing
|
|
DiseñoOriginal = _ContenedorAplicacion.ObtieneDiseñoActual
|
|
b = DelegadoDiseño.Invoke(Contexto, OperacionDiseñoEnum.ABRIR, Me.GetType.ToString, "", True, 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
|
|
For Each l In Lineas
|
|
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 DelegadoErrorNoControlado IsNot Nothing Then DelegadoErrorNoControlado.Invoke(Me, ex)
|
|
End Try
|
|
Next
|
|
End If
|
|
Catch ex As Exception
|
|
If DelegadoErrorNoControlado IsNot Nothing Then DelegadoErrorNoControlado.Invoke(Me, ex)
|
|
End Try
|
|
Else
|
|
Me.ContenedorAplicacion.MenuDiseño.IsVisible = False
|
|
End If
|
|
If Estado = tsWPF.Comun.EstadosAplicacion.AplicacionSinIndice Or Estado = tsWPF.Comun.EstadosAplicacion.SinDatos Then
|
|
Me.ContenedorAplicacion.btGuardar.IsVisible = False
|
|
Me.ContenedorAplicacion.btGuardarYBuscar.IsVisible = False
|
|
If GridSeleccion Is Nothing Then
|
|
_ContenedorAplicacion.btEliminar.IsVisible = False
|
|
End If
|
|
Me.HabilitarRefresco = False
|
|
Else
|
|
Me.HabilitarRefresco = True
|
|
End If
|
|
Cargado()
|
|
If GridSeleccion Is Nothing Then
|
|
ContenedorAplicacion.btSeleccionar.IsVisible = False
|
|
End If
|
|
If Tipo_ucControlBusqueda Is Nothing Or ModoVentana Then
|
|
ContenedorAplicacion.btGuardarYBuscar.IsVisible = False
|
|
ContenedorAplicacion.btBuscar.IsVisible = False
|
|
End If
|
|
If Not Me.PermisosConcedidos.Exportar Then Me.ContenedorAplicacion.btExportar.IsEnabled = False
|
|
If Me.PermisosConcedidos.Eliminar = False AndAlso Configuracion.OcultarBotonEliminarSinPermisos Then ContenedorAplicacion.btEliminar.IsVisible = False
|
|
End If
|
|
If DXSplashScreen.IsActive Then DXSplashScreen.Close()
|
|
|
|
Catch ex As Exception
|
|
If DXSplashScreen.IsActive Then DXSplashScreen.Close()
|
|
Throw New Exception(ex.Message, ex)
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
'Public Function AbreVentanaBusqueda(Optional Mayusculizar As Boolean = True, Optional FuncionAyuda As Ayuda = Nothing, Optional FuncionDiseño As Diseño = Nothing, Optional FuncionErrorNoControlado As ErrorNoControlado = Nothing, Optional OtrosParametros As String = "") As Boolean?
|
|
' ConfiguraAplicacion(Mayusculizar, FuncionAyuda, FuncionDiseño, FuncionErrorNoControlado, OtrosParametros)
|
|
' Me.ContenedorAplicacion.BarraPrincipal.Visible = False
|
|
' Dim w As New dxwVentanaBusqueda
|
|
' w.WindowState = WindowState.Normal
|
|
' w.contenido.Children.Add(Me._ContenedorAplicacion)
|
|
' w.WindowStartupLocation = WindowStartupLocation.CenterScreen
|
|
' w.Width = Me.Width
|
|
' w.Height = Me.Height + 40
|
|
' EstableceTitulo()
|
|
' For Each gr In Me.Lineas
|
|
' For Each c In gr.Columns.Where(Function(x) x.CellTemplate IsNot Nothing)
|
|
' c.CellTemplate = Nothing
|
|
' Next
|
|
' Next
|
|
' Return w.ShowDialog
|
|
'End Function
|
|
|
|
Public Function AbreVentanaGenerica(Optional FuncionAyuda As Ayuda = Nothing, Optional FuncionDiseño As Diseño = Nothing, Optional FuncionErrorNoControlado As ErrorNoControlado = Nothing, Optional OtrosParametros As String = "", Optional FuncionBloqueo As DelegadoBloqueo = Nothing) As dxwGenerica
|
|
ConfiguraAplicacion(FuncionAyuda, FuncionDiseño, FuncionErrorNoControlado, OtrosParametros, FuncionBloqueo, True)
|
|
Dim w As New dxwGenerica
|
|
w.WindowState = WindowState.Normal
|
|
w.Content = Me._ContenedorAplicacion
|
|
EstableceTitulo()
|
|
Dispatcher.BeginInvoke(New Action(Sub() ValidarControles = True), System.Windows.Threading.DispatcherPriority.Background)
|
|
Return w
|
|
End Function
|
|
|
|
Private Sub uc_Loaded(sender As Object, e As RoutedEventArgs)
|
|
EstableceFocoPrimerControl()
|
|
' ValidarControles = True
|
|
End Sub
|
|
Friend Sub EstableceFocoPrimerControl()
|
|
If ObjetosSeleccionables.Count > 0 Then
|
|
Dim sigo As Object = ObjetosSeleccionables(0).Objeto
|
|
If sigo.GetType Is GetType(tsGridControl) Then
|
|
Dim tv = TryCast(sigo.View, TableView)
|
|
If tv IsNot Nothing Then
|
|
If tv.SearchControl IsNot Nothing AndAlso tv.SearchControl.Visibility = Visibility.Visible Then
|
|
tv.SearchControl.Focus()
|
|
End If
|
|
End If
|
|
Else
|
|
sigo.focus
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
|
|
Private Sub ObtieneControlesTS(ByVal parent As DependencyObject, ListaControles As List(Of tsLayoutItem), ObjetosContenedores As List(Of Object), Lineas As List(Of tsGridControl), ByRef NumeroObjetos As Integer)
|
|
If Not (System.ComponentModel.DesignerProperties.GetIsInDesignMode(Me)) Then
|
|
Try
|
|
Dim count As Integer = VisualTreeHelper.GetChildrenCount(parent)
|
|
Dim te As TextEdit
|
|
Dim pbe As PasswordBoxEdit
|
|
Dim bte As ButtonEdit
|
|
Dim de As DateEdit
|
|
Dim le As DevExpress.Xpf.Grid.LookUp.LookUpEdit
|
|
Dim cbe As ComboBoxEdit
|
|
|
|
Dim ce As CheckEdit
|
|
Dim o As Object
|
|
' Dim bMayusculas As Boolean = Not (Me.OtrosParametros.ToUpper.Contains("NOMAYUSCULIZAR"))
|
|
If parent.GetType Is GetType(DXTabControl) Then
|
|
count = TryCast(parent, DXTabControl).Items.Count
|
|
ElseIf parent.GetType Is GetType(DevExpress.Xpf.Docking.LayoutGroup) Then
|
|
count = TryCast(parent, DevExpress.Xpf.Docking.LayoutGroup).Items.Count
|
|
End If
|
|
|
|
' If count > 0 Then
|
|
For n As Integer = 0 To Math.Max(0, count - 1)
|
|
If parent.GetType Is GetType(DXTabControl) Then
|
|
o = TryCast(parent, DXTabControl).Items(n)
|
|
ElseIf parent.GetType Is GetType(DevExpress.Xpf.Docking.LayoutGroup) Then
|
|
o = TryCast(parent, DevExpress.Xpf.Docking.LayoutGroup).Items(n)
|
|
Else
|
|
If count = 0 Then
|
|
o = parent
|
|
Else
|
|
o = VisualTreeHelper.GetChild(parent, n)
|
|
End If
|
|
End If
|
|
If o.GetType Is GetType(tsLayoutItem) Then
|
|
If Not o.content Is Nothing Then
|
|
ListaControles.Add(o)
|
|
Dim prts = DirectCast(o, tsLayoutItem)
|
|
If prts.PropiedadesTS.Obligatorio Then
|
|
Dim fw = o.content.FontWeight
|
|
prts.FontWeight = FontWeights.SemiBold
|
|
o.content.FontWeight = fw
|
|
End If
|
|
Select Case o.content.GetType
|
|
Case GetType(CheckEdit)
|
|
ce = o.content
|
|
If prts.PropiedadesTS.UsualCorreccion = False AndAlso TabStopEnCamposNoUsuales = False Then ce.IsTabStop = False
|
|
NumeroObjetos += 1
|
|
o.propiedadests.NumeroObjeto = NumeroObjetos
|
|
|
|
Dim os As New ObjetoSeleccionable(ce, ce.TabIndex, o.PropiedadesTS)
|
|
ObjetosSeleccionables.Add(os)
|
|
Dim be As BindingExpression = ce.GetBindingExpression(BaseEdit.EditValueProperty)
|
|
If Not be Is Nothing Then
|
|
o.propiedadests.NombreCampo = be.ParentBinding.Path.Path
|
|
End If
|
|
AddHandler ce.SourceUpdated, AddressOf _CampoActualizado
|
|
AddHandler ce.Validate, AddressOf _ValidarControl
|
|
AddHandler ce.GotFocus, AddressOf _ObtieneFoco
|
|
ce.InvalidValueBehavior = Configuracion.ComportamientoValidacion
|
|
Case GetType(ButtonEdit)
|
|
bte = o.content
|
|
If prts.PropiedadesTS.UsualCorreccion = False AndAlso TabStopEnCamposNoUsuales = False Then bte.IsTabStop = False
|
|
Try
|
|
bte.Style = DirectCast(Me.FindResource("tsStylebe"), Style)
|
|
Catch ex As Exception
|
|
End Try
|
|
bte.ValidateOnTextInput = False
|
|
NumeroObjetos += 1
|
|
o.propiedadests.NumeroObjeto = NumeroObjetos
|
|
Dim os As New ObjetoSeleccionable(bte, bte.TabIndex, o.PropiedadesTS)
|
|
ObjetosSeleccionables.Add(os)
|
|
|
|
Dim be As BindingExpression = bte.GetBindingExpression(BaseEdit.EditValueProperty)
|
|
If Not be Is Nothing And Contexto IsNot Nothing AndAlso Contexto.GetType.BaseType Is GetType(ObjectContext) Then
|
|
o.propiedadests.NombreCampo = be.ParentBinding.Path.Path
|
|
Dim Longitud As Integer
|
|
If bte.DataContext Is Nothing Then
|
|
Longitud = ApCabLin.GetMaxlenght(ContextoOc, NombreTablaBase, be.ParentBinding.Path.Path)
|
|
Else
|
|
Longitud = ApCabLin.GetMaxlenght(ContextoOc, bte.DataContext.ToString, be.ParentBinding.Path.Path)
|
|
End If
|
|
If Longitud > 0 Then bte.MaxLength = Longitud
|
|
End If
|
|
AddHandler bte.SourceUpdated, AddressOf _CampoActualizado
|
|
AddHandler bte.Validate, AddressOf _ValidarControl
|
|
AddHandler bte.GotFocus, AddressOf _ObtieneFoco
|
|
bte.InvalidValueBehavior = Configuracion.ComportamientoValidacion
|
|
Case GetType(PasswordBoxEdit)
|
|
pbe = o.content
|
|
If prts.PropiedadesTS.UsualCorreccion = False AndAlso TabStopEnCamposNoUsuales = False Then pbe.IsTabStop = False
|
|
Try
|
|
pbe.Style = DirectCast(Me.FindResource("tsStyle"), Style)
|
|
Catch ex As Exception
|
|
End Try
|
|
pbe.ValidateOnTextInput = False
|
|
NumeroObjetos += 1
|
|
o.propiedadests.NumeroObjeto = NumeroObjetos
|
|
Dim os As New ObjetoSeleccionable(pbe, pbe.TabIndex, o.PropiedadesTS)
|
|
ObjetosSeleccionables.Add(os)
|
|
|
|
Dim be As BindingExpression = pbe.GetBindingExpression(BaseEdit.EditValueProperty)
|
|
If Not be Is Nothing And Contexto IsNot Nothing AndAlso Contexto.GetType.BaseType Is GetType(ObjectContext) Then
|
|
Dim Longitud As Integer
|
|
o.propiedadests.NombreCampo = be.ParentBinding.Path.Path
|
|
If pbe.DataContext Is Nothing Then
|
|
Longitud = ApCabLin.GetMaxlenght(ContextoOc, NombreTablaBase, be.ParentBinding.Path.Path)
|
|
Else
|
|
Longitud = ApCabLin.GetMaxlenght(ContextoOc, pbe.DataContext.ToString, be.ParentBinding.Path.Path)
|
|
End If
|
|
If Longitud > 0 Then pbe.MaxLength = Longitud
|
|
End If
|
|
|
|
AddHandler pbe.SourceUpdated, AddressOf _CampoActualizado
|
|
AddHandler pbe.Validate, AddressOf _ValidarControl
|
|
AddHandler pbe.GotFocus, AddressOf _ObtieneFoco
|
|
pbe.InvalidValueBehavior = Configuracion.ComportamientoValidacion
|
|
Case GetType(TextEdit)
|
|
te = o.content
|
|
If prts.PropiedadesTS.UsualCorreccion = False AndAlso TabStopEnCamposNoUsuales = False Then te.IsTabStop = False
|
|
te.Style = DirectCast(Me.FindResource("tsStyle"), Style)
|
|
' te.BorderTemplate = DirectCast(Me.FindResource("tsBorde"), ControlTemplate)
|
|
|
|
te.ValidateOnTextInput = False
|
|
|
|
te.CharacterCasing = DirectCast(o, tsLayoutItem).PropiedadesTS.MayusculasMinusculas
|
|
|
|
NumeroObjetos += 1
|
|
o.propiedadests.NumeroObjeto = NumeroObjetos
|
|
Dim os As New ObjetoSeleccionable(te, te.TabIndex, o.PropiedadesTS)
|
|
ObjetosSeleccionables.Add(os)
|
|
|
|
Dim be As BindingExpression = te.GetBindingExpression(BaseEdit.EditValueProperty)
|
|
If Not be Is Nothing And Contexto IsNot Nothing AndAlso (Contexto.GetType.BaseType Is GetType(ObjectContext) Or Contexto.GetType.BaseType Is GetType(DbContext)) Then
|
|
Dim Longitud As Integer
|
|
o.propiedadests.NombreCampo = be.ParentBinding.Path.Path
|
|
If te.DataContext Is Nothing Then
|
|
Longitud = ApCabLin.GetMaxlenght(ContextoOc, NombreTablaBase, be.ParentBinding.Path.Path)
|
|
Else
|
|
Longitud = ApCabLin.GetMaxlenght(ContextoOc, te.DataContext.ToString, be.ParentBinding.Path.Path)
|
|
End If
|
|
If Longitud > 0 Then te.MaxLength = Longitud
|
|
End If
|
|
AddHandler te.SourceUpdated, AddressOf _CampoActualizado
|
|
AddHandler te.Validate, AddressOf _ValidarControl
|
|
AddHandler te.GotFocus, AddressOf _ObtieneFoco
|
|
te.InvalidValueBehavior = Configuracion.ComportamientoValidacion
|
|
Case GetType(DateEdit)
|
|
de = o.content
|
|
If prts.PropiedadesTS.UsualCorreccion = False AndAlso TabStopEnCamposNoUsuales = False Then de.IsTabStop = False
|
|
de.Style = DirectCast(Me.FindResource("tsStyle"), Style)
|
|
de.ValidateOnTextInput = False
|
|
NumeroObjetos += 1
|
|
o.propiedadests.NumeroObjeto = NumeroObjetos
|
|
Dim os As New ObjetoSeleccionable(de, de.TabIndex, o.PropiedadesTS)
|
|
ObjetosSeleccionables.Add(os)
|
|
Dim be As BindingExpression = de.GetBindingExpression(BaseEdit.EditValueProperty)
|
|
If Not be Is Nothing Then
|
|
o.propiedadests.NombreCampo = be.ParentBinding.Path.Path
|
|
End If
|
|
|
|
AddHandler de.SourceUpdated, AddressOf _CampoActualizado
|
|
AddHandler de.Validate, AddressOf _ValidarControl
|
|
AddHandler de.GotFocus, AddressOf _ObtieneFoco
|
|
de.InvalidValueBehavior = Configuracion.ComportamientoValidacion
|
|
Case GetType(ComboBoxEdit)
|
|
cbe = o.content
|
|
If prts.PropiedadesTS.UsualCorreccion = False AndAlso TabStopEnCamposNoUsuales = False Then cbe.IsTabStop = False
|
|
cbe.Style = DirectCast(Me.FindResource("tsStylecbe"), Style)
|
|
cbe.ValidateOnTextInput = False
|
|
NumeroObjetos += 1
|
|
o.propiedadests.NumeroObjeto = NumeroObjetos
|
|
Dim os As New ObjetoSeleccionable(cbe, cbe.TabIndex, o.PropiedadesTS)
|
|
ObjetosSeleccionables.Add(os)
|
|
Dim be As BindingExpression = cbe.GetBindingExpression(BaseEdit.EditValueProperty)
|
|
If Not be Is Nothing And Contexto IsNot Nothing AndAlso Contexto.GetType.BaseType Is GetType(ObjectContext) Then
|
|
o.propiedadests.NombreCampo = be.ParentBinding.Path.Path
|
|
Dim Longitud As Integer
|
|
If cbe.DataContext Is Nothing Then
|
|
Longitud = ApCabLin.GetMaxlenght(ContextoOc, NombreTablaBase, be.ParentBinding.Path.Path)
|
|
Else
|
|
Longitud = ApCabLin.GetMaxlenght(ContextoOc, cbe.DataContext.ToString, be.ParentBinding.Path.Path)
|
|
End If
|
|
If Longitud > 0 Then cbe.MaxLength = Longitud
|
|
If Not o.propiedadests.NombreCampo Is Nothing Then
|
|
AddHandler cbe.SourceUpdated, AddressOf _CampoActualizado
|
|
AddHandler cbe.Validate, AddressOf _ValidarControl
|
|
AddHandler cbe.GotFocus, AddressOf _ObtieneFoco
|
|
cbe.InvalidValueBehavior = Configuracion.ComportamientoValidacion
|
|
End If
|
|
End If
|
|
|
|
Case GetType(DevExpress.Xpf.Grid.LookUp.LookUpEdit)
|
|
le = o.content
|
|
If prts.PropiedadesTS.UsualCorreccion = False AndAlso TabStopEnCamposNoUsuales = False Then le.IsTabStop = False
|
|
le.ValidateOnTextInput = False
|
|
le.Style = DirectCast(Me.FindResource("tsStyle"), Style)
|
|
NumeroObjetos += 1
|
|
o.propiedadests.NumeroObjeto = NumeroObjetos
|
|
Dim os As New ObjetoSeleccionable(le, le.TabIndex, o.PropiedadesTS)
|
|
ObjetosSeleccionables.Add(os)
|
|
Dim be As BindingExpression = le.GetBindingExpression(BaseEdit.EditValueProperty)
|
|
If Not be Is Nothing AndAlso Contexto IsNot Nothing AndAlso Contexto.GetType.BaseType Is GetType(ObjectContext) Then
|
|
o.propiedadests.NombreCampo = be.ParentBinding.Path.Path
|
|
le.MaxLength = ApCabLin.GetMaxlenght(ContextoOc, NombreTablaBase, be.ParentBinding.Path.Path)
|
|
End If
|
|
AddHandler le.SourceUpdated, AddressOf _CampoActualizado
|
|
AddHandler le.Validate, AddressOf _ValidarControl
|
|
AddHandler le.GotFocus, AddressOf _ObtieneFoco
|
|
le.InvalidValueBehavior = Configuracion.ComportamientoValidacion
|
|
End Select
|
|
If DirectCast(o, tsLayoutItem).PropiedadesTS.NombreCampo = "" Then DirectCast(o, tsLayoutItem).PropiedadesTS.NombreCampo = o.Content.Name
|
|
End If
|
|
ElseIf o.GetType Is GetType(tsGridControl) Then
|
|
Dim tsgc As tsGridControl
|
|
tsgc = o
|
|
If tsgc.PropiedadesTS.UsualCorreccion = False AndAlso TabStopEnCamposNoUsuales = False Then tsgc.IsTabStop = False
|
|
ObtieneControlestsgc(tsgc, NumeroObjetos)
|
|
If tsgc.DetailDescriptor IsNot Nothing Then
|
|
For Each dcd In tsgc.DetailDescriptor.DataControlDetailDescriptors
|
|
Dim dcdd = TryCast(dcd.Content, DataControlDetailDescriptor)
|
|
If dcdd IsNot Nothing AndAlso dcdd.DataControl.GetType Is GetType(tsGridControl) Then
|
|
ObtieneControlestsgc(dcdd.DataControl, NumeroObjetos)
|
|
End If
|
|
Next
|
|
End If
|
|
|
|
ElseIf o.GetType Is GetType(DockLayoutManager) Then
|
|
Dim dl As DockLayoutManager = o
|
|
Dim lr = dl.LayoutRoot
|
|
ObtieneControlesTS(lr, ListaControles, ObjetosContenedores, Lineas, NumeroObjetos)
|
|
ElseIf o.GetType Is GetType(DevExpress.Xpf.Core.DXTabControl) Then
|
|
' Dim tc As DevExpress.Xpf.Core.DXTabControl = o
|
|
Me.ObjetosContenedores.Add(o)
|
|
ObtieneControlesTS(o, ListaControles, ObjetosContenedores, Lineas, NumeroObjetos)
|
|
ElseIf o.GetType Is GetType(DevExpress.Xpf.Core.DXTabItem) Then
|
|
'If Not o.isselected Then ObtieneControlesTS(o.content, ListaControles, ObjetosContenedores, Lineas, NumeroObjetos)
|
|
Dim ti As DXTabItem = o
|
|
If Not ti.Content Is Nothing AndAlso ti.Visibility = Visibility.Visible Then ObtieneControlesTS(o.content, ListaControles, ObjetosContenedores, Lineas, NumeroObjetos)
|
|
|
|
ElseIf o.GetType Is GetType(DevExpress.Xpf.Docking.LayoutPanel) Then
|
|
Dim lp As DevExpress.Xpf.Docking.LayoutPanel = o
|
|
If Not lp.Content Is Nothing AndAlso lp.Visibility = Visibility.Visible Then ObtieneControlesTS(o.content, ListaControles, ObjetosContenedores, Lineas, NumeroObjetos)
|
|
|
|
|
|
ElseIf o.GetType Is GetType(Button) Then
|
|
Dim bt As Button = o
|
|
If bt.IsDefault Then TieneBotonDefecto = True
|
|
Else
|
|
If o.GetType Is GetType(DevExpress.Xpf.LayoutControl.LayoutGroup) OrElse o.GetType Is GetType(DevExpress.Xpf.Docking.LayoutGroup) Then
|
|
Me.ObjetosContenedores.Add(o)
|
|
End If
|
|
If count > 0 Then ObtieneControlesTS(o, ListaControles, ObjetosContenedores, Lineas, NumeroObjetos)
|
|
End If
|
|
Next
|
|
' End If
|
|
Catch ex As Exception
|
|
If DXSplashScreen.IsActive Then DXSplashScreen.Close()
|
|
DXMessageBox.Show(ex.Message & " " & ex.StackTrace, " en obtienecontrolests")
|
|
End Try
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub ObtieneControlestsgc(tsgc As tsGridControl, ByRef NumeroObjetos As Integer)
|
|
tsgc.ComandoDelegado = New DelegateCommand(Of Object)(AddressOf Seleccionar)
|
|
tsgc.PropiedadesTSGC.PermisosDefecto = Me.PermisosConcedidos
|
|
Lineas.Add(tsgc)
|
|
NumeroObjetos += 1
|
|
tsgc.PropiedadesTS.NumeroObjeto = NumeroObjetos
|
|
' tsgc.PropiedadesTS.ApCablin = Me
|
|
Dim os As New ObjetoSeleccionable(tsgc, tsgc.TabIndex, tsgc.PropiedadesTS)
|
|
ObjetosSeleccionables.Add(os)
|
|
AddHandler tsgc.GotFocus, AddressOf _ObtieneFoco
|
|
AddHandler tsgc.PreviewKeyDown, AddressOf _tsgc_PreviewkeyDown
|
|
Dim tv As TableView = tsgc.View
|
|
AddHandler tv.ValidateRow, AddressOf _tv_ValidateRow
|
|
AddHandler tv.InvalidRowException, AddressOf _tv_InvvalidRowException
|
|
'AddHandler tsgc.PreviewKeyDown, AddressOf ObjetosSeleccionables_PreviewKeyDown
|
|
For Each c In tsgc.Columns
|
|
If c.EditSettings Is Nothing Then c.EditSettings = New DevExpress.Xpf.Editors.Settings.TextEditSettings
|
|
Select Case c.EditSettings.GetType
|
|
Case GetType(DevExpress.Xpf.Editors.Settings.TextEditSettings)
|
|
Dim tes As DevExpress.Xpf.Editors.Settings.TextEditSettings = c.EditSettings
|
|
If c.GetType Is GetType(tsGridColumn) Then
|
|
Dim tsgcol = DirectCast(c, tsGridColumn)
|
|
If tsgcol.MayusculasMinusculas Is Nothing Then
|
|
If tsgc.PropiedadesTS.MayusculasMinusculas = CharacterCasing.Upper Then tes.CharacterCasing = CharacterCasing.Upper
|
|
Else
|
|
tes.CharacterCasing = tsgcol.MayusculasMinusculas
|
|
End If
|
|
Else
|
|
If tsgc.PropiedadesTS.MayusculasMinusculas = CharacterCasing.Upper Then tes.CharacterCasing = CharacterCasing.Upper
|
|
End If
|
|
|
|
If tsgc.NombreTablaBase Is Nothing OrElse tsgc.NombreTablaBase.ToString = "" Then
|
|
tsgc.NombreTablaBase = NombreTablaBase
|
|
' If Me._DatosConexionBD.Tipo = Enumeraciones.TipoBD.ORACLE Then tsgc.NombreTablaBase = tsgc.NombreTablaBase.ToUpper
|
|
End If
|
|
If Contexto.GetType.BaseType Is GetType(ObjectContext) Or Contexto.GetType.BaseType Is GetType(DbContext) Then tes.MaxLength = ApCabLin.GetMaxlenght(Me.ContextoOc, tsgc.NombreTablaBase, c.FieldName)
|
|
AddHandler c.SourceUpdated, AddressOf _CampoActualizado
|
|
' AddHandler cm.ContextMenuOpening, AddressOf _AbriendoMenuContextual
|
|
End Select
|
|
Next
|
|
Dim cm As New ContextMenu
|
|
If tsgc.PropiedadesTSGC.PermitirEliminar Then
|
|
Dim mi As New MenuItem()
|
|
mi.Tag = "MI_ELIMINA"
|
|
mi.Header = "Elimina " & tsgc.PropiedadesTSGC.Descripcion
|
|
AddHandler mi.Click, AddressOf _EliminaLinea
|
|
cm.Items.Add(mi)
|
|
tsgc.ContextMenu = cm
|
|
AddHandler tsgc.ContextMenu.Opened, AddressOf _tsgc_Opened
|
|
End If
|
|
If PermisosConcedidos.Exportar Then
|
|
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)
|
|
tsgc.ContextMenu = cm
|
|
If tsgc.PropiedadesTSGC.PermitirEliminar = False Then
|
|
AddHandler tsgc.ContextMenu.Opened, AddressOf _tsgc_Opened
|
|
End If
|
|
End If
|
|
If tsgc.DetailDescriptor IsNot Nothing AndAlso tsgc.DetailDescriptor.DataControlDetailDescriptors.Count > 0 Then
|
|
For Each dcd In tsgc.DetailDescriptor.DataControlDetailDescriptors
|
|
Dim dcdd = TryCast(dcd.Content, DataControlDetailDescriptor)
|
|
If dcdd IsNot Nothing AndAlso dcdd.DataControl IsNot Nothing AndAlso dcdd.DataControl.GetType Is GetType(tsGridControl) Then
|
|
ObtieneControlestsgc(dcdd.DataControl, NumeroObjetos)
|
|
End If
|
|
Next
|
|
End If
|
|
End Sub
|
|
|
|
|
|
|
|
Private Sub _CampoActualizado(sender As Object, e As DataTransferEventArgs)
|
|
If Me.Estado = tsWPF.Comun.EstadosAplicacion.ModificandoRegistro Or Me.Estado = tsWPF.Comun.EstadosAplicacion.Nuevo Then
|
|
RaiseEvent CampoActualizado(sender, e)
|
|
End If
|
|
End Sub
|
|
|
|
Private FuerzaValidacion As Boolean = False
|
|
Public Sub FuerzaValidarControl(Sender As Object)
|
|
Try
|
|
FuerzaValidacion = True
|
|
Sender.DoValidate
|
|
Catch
|
|
Finally
|
|
FuerzaValidacion = False
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub _ValidarControl(sender As Object, e As ValidationEventArgs)
|
|
Try
|
|
If ValidarControles AndAlso (Me IsNot Nothing AndAlso (Not (System.ComponentModel.DesignerProperties.GetIsInDesignMode(Me)) And (e.UpdateSource = Validation.Native.UpdateEditorSource.DoValidate Or e.UpdateSource = Validation.Native.UpdateEditorSource.LostFocus Or e.UpdateSource = Validation.Native.UpdateEditorSource.ValueChanging))) Then
|
|
If FuerzaValidacion OrElse sender.GetType Is GetType(DateEdit) OrElse (sender.EditValue Is Nothing And e.Value IsNot Nothing) OrElse (sender.EditValue IsNot Nothing And e.Value Is Nothing) OrElse sender.GetType Is GetType(DevExpress.Xpf.Grid.LookUp.LookUpEdit) OrElse sender.EditValue <> e.Value Then
|
|
Dim ev As ErrorValidacion = Nothing
|
|
Dim ValorCambiado As Object = Nothing
|
|
|
|
RaiseEvent ValidarControl(sender, e, ev, ValorCambiado)
|
|
|
|
If ev Is Nothing Then
|
|
ErroresValidacion.EliminaError(DirectCast(sender.parent.propiedadests, PropiedadesTS).NumeroObjeto)
|
|
Else
|
|
If ev.id Is Nothing Then ev.id = DirectCast(sender.parent.propiedadests, PropiedadesTS).NumeroObjeto
|
|
ErroresValidacion.AgregaError(ev, e)
|
|
End If
|
|
|
|
If e.IsValid Then
|
|
Dim Valor As Object
|
|
If ValorCambiado Is Nothing Then
|
|
Valor = e.Value
|
|
If Valor Is Nothing Then Valor = ""
|
|
Else
|
|
Valor = ValorCambiado
|
|
End If
|
|
If CompruebaUnico(sender.parent, Valor) Then
|
|
If Not CompruebaObligatorio(sender.parent, Valor) Then
|
|
e.IsValid = True
|
|
End If
|
|
Else
|
|
e.IsValid = True
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
If DelegadoErrorNoControlado IsNot Nothing Then DelegadoErrorNoControlado.Invoke(Me, ex)
|
|
DXMessageBox.Show(ex.Message, "Error")
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub _ObtieneFoco(sender As Object, e As RoutedEventArgs)
|
|
ObjetoActual = sender
|
|
End Sub
|
|
|
|
'Private Sub _PreviewKeyDown(sender As Object, e As KeyEventArgs)
|
|
' If e.Key = Key.Delete Or e.Key = Key.Back Then
|
|
' e.Handled = True
|
|
' sender.editvalue = Nothing
|
|
' End If
|
|
|
|
'End Sub
|
|
|
|
Private Sub Seleccionar(Celda As EditGridCellData)
|
|
RaiseEvent Enlazar(Celda, False)
|
|
End Sub
|
|
|
|
Private Sub _tsgc_PreviewkeyDown(sender As Object, e As KeyEventArgs)
|
|
If e.Key = Key.Escape Then
|
|
Dim gc = DirectCast(sender, tsGridControl)
|
|
'If gc.View.IsFocusedRowModified AndAlso gc.View.FocusedRowHandle = GridControl.NewItemRowHandle Then
|
|
If gc.View.FocusedRowHandle = GridControl.NewItemRowHandle Then
|
|
Dim bdentidad = TryCast(Contexto, ObjectContext)
|
|
If gc.View.HasValidationError Then
|
|
' ErroresValidacion.EliminaError(gc.PropiedadesTS.NumeroObjeto)
|
|
ErroresValidacion.LimpiarErrores("TSGC-" & gc.PropiedadesTS.NumeroObjeto.ToString & ":" & gc.View.FocusedRowHandle.ToString & ":")
|
|
End If
|
|
If bdentidad IsNot Nothing Then
|
|
Try
|
|
bdentidad.DeleteObject(gc.CurrentItem)
|
|
Catch
|
|
Debug.WriteLine("aqui")
|
|
End Try
|
|
End If
|
|
gc.View.CancelRowEdit()
|
|
e.Handled = True
|
|
End If
|
|
If gc.View.IsFocusedRowModified = False Then e.Handled = True
|
|
End If
|
|
|
|
If e.Key = Key.Enter Then
|
|
Try
|
|
Dim tsgc As tsGridControl = DirectCast(sender, tsGridControl)
|
|
If tsgc.Columns.Any(Function(x) x.CellTemplate IsNot Nothing) And tsgc.View.AllowEditing = False Then
|
|
If tsgc.CurrentItem IsNot Nothing And tsgc.CurrentColumn.CellTemplate IsNot Nothing Then
|
|
RaiseEvent Enlazar(Nothing, True)
|
|
e.Handled = True
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
End Try
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub _tv_ValidateRow(sender As Object, e As GridRowValidationEventArgs)
|
|
Dim tv As TableView = sender
|
|
Dim tsgc As tsGridControl = tv.Grid
|
|
' Dim enti As EntityObject = Nothing
|
|
Dim enti As Object = Nothing
|
|
|
|
Try
|
|
enti = tsgc.GetRow(e.RowHandle)
|
|
If Not tsgc.PropiedadesTSGC.CamposObligatorios Is Nothing AndAlso tsgc.PropiedadesTSGC.CamposObligatorios.ToString <> "" Then
|
|
Dim sCamposObligatorios() As String = tsgc.PropiedadesTSGC.CamposObligatorios.Split(",")
|
|
Dim sCamposO As String = ""
|
|
For Each sCampo In sCamposObligatorios
|
|
Dim Valor As Object = Nothing
|
|
Try
|
|
Valor = enti.GetType.GetProperty(sCampo).GetValue(enti, Nothing)
|
|
Catch ex As NullReferenceException
|
|
Throw New Exception("El campo " & sCampo & " no existe y no puede ponerse como obligatorio.")
|
|
End Try
|
|
If Valor Is Nothing Then
|
|
If tsgc.Columns(sCampo).Header IsNot Nothing Then
|
|
sCamposO &= ", " & tsgc.Columns(sCampo).Header
|
|
Else
|
|
sCamposO &= ", " & sCampo
|
|
End If
|
|
Else
|
|
If Valor.GetType Is GetType(Integer) Or Valor.GetType Is GetType(Int32) Then
|
|
If DirectCast(Valor, Integer) = 0 Then
|
|
If tsgc.Columns(sCampo).Header IsNot Nothing Then
|
|
sCamposO &= ", " & tsgc.Columns(sCampo).Header
|
|
Else
|
|
sCamposO &= ", " & sCampo
|
|
End If
|
|
End If
|
|
ElseIf Valor.GetType Is GetType(Double) Then
|
|
If DirectCast(Valor, Double) = 0 Then
|
|
If tsgc.Columns(sCampo).Header IsNot Nothing Then
|
|
sCamposO &= ", " & tsgc.Columns(sCampo).Header
|
|
Else
|
|
sCamposO &= ", " & sCampo
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
Next
|
|
If sCamposO <> "" Then
|
|
Throw New Exception("Los Campos " & sCamposO.Substring(2) & " son obligatorios.")
|
|
End If
|
|
End If
|
|
If Not tsgc.PropiedadesTSGC.CamposUnicos Is Nothing AndAlso tsgc.PropiedadesTSGC.CamposUnicos.ToString <> "" Then
|
|
Dim sCamposUnicos() As String = tsgc.PropiedadesTSGC.CamposUnicos.Split(",")
|
|
If sCamposUnicos.Length > 0 Then
|
|
enti = tsgc.GetRow(e.RowHandle)
|
|
|
|
' Dim nf As Integer = tsgc.GetDataRowHandles.Count
|
|
If Not enti Is Nothing Then
|
|
For Each sCampo In sCamposUnicos
|
|
Dim i As Integer = 0
|
|
Dim Valor As Object = Nothing
|
|
If Not enti Is Nothing Then
|
|
Valor = enti.GetType.GetProperty(sCampo).GetValue(enti, Nothing)
|
|
Do
|
|
' For i = 0 To nf - 1 'tsgc.VisibleRowCount - 1 esto no vale
|
|
|
|
If tsgc.GetRowHandleByListIndex(i) <> e.RowHandle Then
|
|
enti = tsgc.GetRowByListIndex(i)
|
|
If Not enti Is Nothing Then
|
|
If Valor.GetType = GetType(String) Then Valor = Valor.ToString.Trim
|
|
If Valor = enti.GetType.GetProperty(sCampo).GetValue(enti, Nothing) Then
|
|
Throw New Exception("No se permite valores duplicados en la columna " & tsgc.Columns(sCampo).Header)
|
|
End If
|
|
Else
|
|
Exit Do
|
|
End If
|
|
End If
|
|
i += 1
|
|
Loop
|
|
End If
|
|
Next
|
|
|
|
End If
|
|
End If
|
|
End If
|
|
ErroresValidacion.EliminaError("TSGC-" & tsgc.PropiedadesTS.NumeroObjeto.ToString & ":" & e.RowHandle.ToString & ":VR")
|
|
If ErroresValidacion.Count > 0 Then ErroresValidacion.RellenaErrores()
|
|
Catch ex As Exception
|
|
e.IsValid = False
|
|
e.SetError(ex.Message, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical)
|
|
ErroresValidacion.AgregaError(New ErrorValidacion("TSGC-" & tsgc.PropiedadesTS.NumeroObjeto.ToString & ":" & e.RowHandle.ToString & ":VR", sender, ex.Message, Nothing, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical), Nothing)
|
|
e.Handled = True
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
Private Sub _tv_InvvalidRowException(sender As Object, e As InvalidRowExceptionEventArgs)
|
|
e.ExceptionMode = ExceptionMode.NoAction
|
|
End Sub
|
|
|
|
Private Sub _EliminaLinea(sender As Object, e As RoutedEventArgs)
|
|
'Try
|
|
' Dim mi As MenuItem = sender
|
|
' Dim cm As ContextMenu = mi.Parent
|
|
' Dim tsgc As tsGridControl = cm.PlacementTarget
|
|
' Dim vista As TableView = tsgc.View
|
|
|
|
' If Not tsgc.LanzaAntesEliminar(tsgc) Then
|
|
' ErroresValidacion.EliminaError(tsgc.PropiedadesTS.NumeroObjeto)
|
|
' vista.CancelRowEdit()
|
|
' If Contexto.GetType.BaseType Is GetType(ObjectContext) Then
|
|
' DirectCast(Contexto, ObjectContext).DeleteObject(tsgc.CurrentItem)
|
|
' Else
|
|
' EliminaLineaDbContext(tsgc)
|
|
' End If
|
|
' tsgc.RefreshData()
|
|
' tsgc.LanzaDespuesEliminar(tsgc)
|
|
' End If
|
|
'Catch ex As Exception
|
|
' Console.WriteLine(ex.Message)
|
|
'End Try
|
|
|
|
|
|
|
|
Dim mi As MenuItem = sender
|
|
Dim cm As ContextMenu = mi.Parent
|
|
Dim tsgc As tsGridControl = cm.PlacementTarget
|
|
Dim vista As TableView = tsgc.View
|
|
If Contexto.GetType.BaseType Is GetType(ObjectContext) Then
|
|
Dim bdentidad = DirectCast(Contexto, ObjectContext)
|
|
Try
|
|
If Not tsgc.LanzaAntesEliminar(tsgc) Then
|
|
|
|
If tsgc.SelectionMode = MultiSelectMode.MultipleRow Then
|
|
vista.CancelRowEdit()
|
|
tsgc.BeginDataUpdate()
|
|
Dim EliminaConErrores As Boolean = False
|
|
For i = tsgc.SelectedItems.Count - 1 To 0 Step -1
|
|
Try
|
|
bdentidad.DeleteObject(tsgc.SelectedItems(i))
|
|
Catch ex As Exception
|
|
EliminaConErrores = True
|
|
End Try
|
|
Next
|
|
If EliminaConErrores Then
|
|
For Each rw In tsgc.GetSelectedRowHandles
|
|
Try
|
|
vista.DeleteRow(rw)
|
|
Catch ex As Exception
|
|
End Try
|
|
Next
|
|
End If
|
|
tsgc.UnselectAll()
|
|
tsgc.EndDataUpdate()
|
|
Else
|
|
' Dim frh = vista.FocusedRowHandle
|
|
Try
|
|
ErroresValidacion.LimpiarErrores("TSGC-" & tsgc.PropiedadesTS.NumeroObjeto.ToString & ":" & vista.FocusedRowHandle.ToString & ":")
|
|
bdentidad.DeleteObject(tsgc.CurrentItem)
|
|
vista.CancelRowEdit()
|
|
Try
|
|
If tsgc.EjecutarDeleteRowAlEliminar AndAlso Not tsgc.ItemsSource.GetType.BaseType Is GetType(System.Data.Objects.DataClasses.RelatedEnd) Then vista.DeleteRow(vista.FocusedRowHandle)
|
|
Catch
|
|
End Try
|
|
Catch ex As Exception
|
|
vista.DeleteRow(vista.FocusedRowHandle)
|
|
End Try
|
|
If ErroresValidacion.Count > 0 Then ErroresValidacion.RellenaErrores()
|
|
End If
|
|
tsgc.RefreshData()
|
|
tsgc.LanzaDespuesEliminar(tsgc)
|
|
|
|
' End If
|
|
End If
|
|
Catch ex As Exception
|
|
Console.WriteLine(ex.Message)
|
|
End Try
|
|
Else
|
|
EliminaLineaDbContext(tsgc)
|
|
End If
|
|
End Sub
|
|
Private Sub EliminaLineaDbContext(tsgc As tsGridControl)
|
|
DirectCast(Contexto, DbContext).Set(tsgc.CurrentItem.GetType.BaseType).Remove(tsgc.CurrentItem)
|
|
End Sub
|
|
Sub Eliminar(sender As Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs)
|
|
Try
|
|
Dim Cancelar As Boolean
|
|
Dim MensajesError As Hashtable = Nothing
|
|
Dim EliminacionManual As Boolean = False
|
|
RaiseEvent AntesEliminar(sender, e, Cancelar, MensajesError, EliminacionManual)
|
|
If ErroresValidacion.Errores.Count > 0 Then
|
|
If (From ev In ErroresValidacion.Errores Where ev.Tipo = DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical And Not ev.id.ToLower.StartsWith("almacenar-")).Count > 0 Then
|
|
Cancelar = True
|
|
End If
|
|
End If
|
|
'If ErroresValidacion.Count > 0 Then
|
|
' If (From ev In ErroresValidacion.Errores Where ev.Tipo = DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical).Count > 0 Then
|
|
' Cancelar = True
|
|
' End If
|
|
'End If
|
|
If Not Cancelar And GridSeleccion IsNot Nothing Then
|
|
If GridSeleccion.ElementosSeleccionados IsNot Nothing AndAlso _ContenedorAplicacion.btSeleccionar.IsChecked AndAlso GridSeleccion.ElementosSeleccionados.Any Then
|
|
If EliminacionManual OrElse DXMessageBox.Show("¿Está seguro de querer eliminar los registros seleccionados?", "Atención", MessageBoxButton.YesNo) = MessageBoxResult.Yes Then
|
|
Try
|
|
ErroresValidacion.LimpiarErrores("Almacenar-")
|
|
If Not EliminacionManual Then
|
|
Dim oc = DirectCast(Contexto, ObjectContext)
|
|
For Each es In GridSeleccion.ElementosSeleccionados
|
|
DirectCast(Contexto, ObjectContext).DeleteObject(es)
|
|
Next
|
|
If oc.GetType.GetInterfaces.Contains(GetType(ItsObjectContext)) Then
|
|
DirectCast(oc, ItsObjectContext).GuardarCambios()
|
|
Else
|
|
oc.SaveChanges()
|
|
End If
|
|
End If
|
|
RefrescaUC()
|
|
Catch ex As Exception
|
|
If DelegadoErrorNoControlado IsNot Nothing Then DelegadoErrorNoControlado.Invoke(Me, ex)
|
|
End Try
|
|
End If
|
|
Else
|
|
DXMessageBox.Show("Primero seleccione los registros a eliminar", "Atención")
|
|
End If
|
|
Else
|
|
If Not Cancelar AndAlso Estado = tsWPF.Comun.EstadosAplicacion.ModificandoRegistro Then
|
|
If EliminacionManual OrElse DXMessageBox.Show("¿Está seguro de querer eliminar el registro?", "Atención", MessageBoxButton.YesNo) = MessageBoxResult.Yes Then
|
|
ErroresValidacion.LimpiarErrores("Almacenar-")
|
|
If Not EliminacionManual AndAlso Contexto.GetType.BaseType Is GetType(ObjectContext) Then
|
|
Dim oc = DirectCast(Contexto, ObjectContext)
|
|
oc.DeleteObject(Me.DataContext)
|
|
If oc.GetType.GetInterfaces.Contains(GetType(ItsObjectContext)) Then
|
|
DirectCast(oc, ItsObjectContext).GuardarCambios()
|
|
Else
|
|
oc.SaveChanges()
|
|
End If
|
|
End If
|
|
RaiseEvent DespuesEliminar(sender)
|
|
If Configuracion.ModoEventosContextoSavingChanges = ModoContextoSavingChangesEnum.SoloDespuesGuardar AndAlso Me.Contexto.GetType.BaseType Is GetType(ObjectContext) Then
|
|
If Me.GrupoDocumentos IsNot Nothing Then
|
|
Comun.RefrescaAplicaciones(Me.GrupoDocumentos.Parent, Nothing, Me.docpanel.Tag)
|
|
' BDContexto.Contexto_SavingChanges(Me, Me.GrupoDocumentos.Parent, Nothing, Me.docpanel.Tag)
|
|
End If
|
|
End If
|
|
Me.ValidarControles = False
|
|
If Me.PermisosConcedidos.Nuevos Then
|
|
Dim CampoIndice As String = ""
|
|
Try
|
|
If DataContext.entitykey IsNot Nothing Then CampoIndice = DataContext.entitykey.entitykeyvalues(0).key
|
|
Catch
|
|
End Try
|
|
If CampoIndice <> "" Then Me.Estado = tsWPF.Comun.EstadosAplicacion.Nuevo
|
|
Estado = EstableceDCPrincipal(, True)
|
|
EstableceTitulo()
|
|
EstableceFocoPrimerControl()
|
|
' Me.Dispatcher.BeginInvoke(New Action(Sub() Me.ValidarControles = True), Windows.Threading.DispatcherPriority.ContextIdle)
|
|
Else
|
|
If docpanel IsNot Nothing AndAlso Comun.dm IsNot Nothing Then Comun.dm.DockController.RemovePanel(docpanel)
|
|
End If
|
|
ValidarControles = True
|
|
End If
|
|
End If
|
|
End If
|
|
If Not MensajesError Is Nothing Then
|
|
For Each MensajeError In MensajesError
|
|
ErroresValidacion.AgregaError(New ErrorValidacion("Almacenar-" & MensajeError.Key, Me.ContenedorAplicacion, MensajeError.Value, Nothing, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical), Nothing)
|
|
Next
|
|
|
|
End If
|
|
Catch ex As Exception
|
|
If DelegadoErrorNoControlado IsNot Nothing Then DelegadoErrorNoControlado.Invoke(Me, ex)
|
|
DXMessageBox.Show(ex.Message & " " & ex.StackTrace, "Error")
|
|
End Try
|
|
|
|
End Sub
|
|
Private Sub _tsgc_Opened(sender As Object, e As RoutedEventArgs)
|
|
Try
|
|
Dim tsgc = DirectCast(DirectCast(sender, ContextMenu).PlacementTarget, tsGridControl)
|
|
Dim ci = tsgc.CurrentItem
|
|
If ci Is Nothing Then
|
|
Dim its = DirectCast(sender, ContextMenu).Items
|
|
For Each it In its
|
|
Select Case it.tag
|
|
Case "MI_ELIMINA"
|
|
it.isenabled = False
|
|
Case "MI_EXPORTAR_EXCEL", "MI_EXPORTAR"
|
|
If tsgc.PropiedadesTSGC.PermitirExportar.HasValue Then
|
|
it.isenabled = tsgc.PropiedadesTSGC.PermitirExportar.Value
|
|
Else
|
|
it.isenabled = tsgc.PropiedadesTSGC.PermisosDefecto.Exportar
|
|
End If
|
|
End Select
|
|
Next
|
|
Else
|
|
Dim its = DirectCast(sender, ContextMenu).Items
|
|
For Each it In its
|
|
Select Case it.tag
|
|
Case "MI_ELIMINA"
|
|
it.isEnabled = If(Me.Estado = EstadosAplicacion.AplicacionSinIndice, tsgc.PropiedadesTSGC.PermitirEliminar, True) And tsgc.PropiedadesTSGC.PermitirEliminar And ((tsgc.PropiedadesTS.Modificable = TiposModificacion.ModificableEnExistentes And Me.Estado = EstadosAplicacion.ModificandoRegistro) Or ((tsgc.PropiedadesTS.Modificable = TiposModificacion.ModificableEnNuevos And Me.Estado = EstadosAplicacion.Nuevo) Or tsgc.PropiedadesTS.Modificable = TiposModificacion.Modificable))
|
|
Case "MI_EXPORTAR_EXCEL", "MI_EXPORTAR"
|
|
If tsgc.PropiedadesTSGC.PermitirExportar.HasValue Then
|
|
it.isenabled = tsgc.PropiedadesTSGC.PermitirExportar.Value
|
|
Else
|
|
it.isenabled = tsgc.PropiedadesTSGC.PermisosDefecto.Exportar
|
|
End If
|
|
End Select
|
|
Next
|
|
End If
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub _ExportarExcel(sender As Object, e As RoutedEventArgs)
|
|
|
|
Try
|
|
Dim mi As MenuItem = sender
|
|
Dim cm As ContextMenu = mi.Parent
|
|
Dim tsgc As tsGridControl = cm.PlacementTarget
|
|
For Each c In tsgc.Columns
|
|
If c.GetType Is GetType(tsGridColumn) Then
|
|
If DirectCast(c, tsGridColumn).Imprimible = False Then c.AllowPrinting = True
|
|
End If
|
|
Next
|
|
Dim vista As TableView = tsgc.View
|
|
Dim ModoEnum As Boolean = False
|
|
If vista.ShowCheckBoxSelectorColumn AndAlso tsgc.ElementosSeleccionados.Count > 0 AndAlso DXMessageBox.Show("¿Desea exportar solo los elementos seleccionados?", "Atención", MessageBoxButton.YesNo) = MessageBoxResult.Yes Then ModoEnum = True
|
|
Dim sfd As New SaveFileDialog
|
|
sfd.FileName = IO.Path.GetDirectoryName("Exportacion") & (tsgc.NombreTablaBase.NothingAVacio & " Exportacion.xlsx").Trim
|
|
If ModoEnum Then
|
|
sfd.Filter = "Fichero Excel (*.xlsx)|*.xlsx"
|
|
Else
|
|
sfd.Filter = "Fichero Excel (*.xls, *.xlsx, *.csv)|*.xls;*.xlsx;*.csv"
|
|
End If
|
|
sfd.DefaultExt = ".xlsx"
|
|
If sfd.ShowDialog Then
|
|
If ModoEnum Then
|
|
tsWPF.Utilidades.Varias.IEnumerableAExcel(tsgc.ElementosSeleccionados.AsEnumerable, sfd.FileName)
|
|
Else
|
|
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
|
|
End If
|
|
Process.Start(sfd.FileName)
|
|
End If
|
|
Catch ex As Exception
|
|
If DelegadoErrorNoControlado IsNot Nothing Then DelegadoErrorNoControlado.Invoke(Me, ex)
|
|
DXMessageBox.Show(ex.Message, "Error")
|
|
End Try
|
|
'Try
|
|
' Dim mi As MenuItem = sender
|
|
' Dim cm As ContextMenu = mi.Parent
|
|
' Dim tsgc As tsGridControl = cm.PlacementTarget
|
|
' For Each c In tsgc.Columns
|
|
' If c.GetType Is GetType(tsGridColumn) Then
|
|
' If DirectCast(c, tsGridColumn).Imprimible = False Then c.AllowPrinting = True
|
|
' End If
|
|
' Next
|
|
' 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
|
|
'Catch ex As Exception
|
|
' If DelegadoErrorNoControlado IsNot Nothing Then DelegadoErrorNoControlado.Invoke(Me, ex)
|
|
' DXMessageBox.Show(ex.Message, "Error")
|
|
'End Try
|
|
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
|
|
For Each c In tsgc.Columns
|
|
If c.GetType Is GetType(tsGridColumn) Then
|
|
If DirectCast(c, tsGridColumn).Imprimible = False Then c.AllowPrinting = False
|
|
End If
|
|
Next
|
|
Dim Cancelar = tsgc.LanzaAntesExportar(tsgc)
|
|
If Not Cancelar Then
|
|
Dim vista As TableView = tsgc.View
|
|
'Dim tamvista As Single = 0
|
|
'For Each c In vista.VisibleColumns
|
|
' tamvista += c.ActualWidth
|
|
'Next
|
|
' Dim factor As Single = 566.92F / tamvista
|
|
Try
|
|
|
|
Dim link As New PrintableControlLink(vista)
|
|
link.PaperKind = System.Drawing.Printing.PaperKind.A4
|
|
link.Landscape = True
|
|
link.Margins.Left = 0.5
|
|
link.Margins.Right = 0.5
|
|
link.Margins.Bottom = 0.5
|
|
link.Margins.Top = 0.5
|
|
|
|
Dim vi As New tsWPF.ucVisualizadorInformes()
|
|
link.PageHeaderTemplate = DirectCast(vi.Resources("pageHeaderTemplate"), DataTemplate)
|
|
link.PageFooterTemplate = DirectCast(vi.Resources("pageFooterTemplate"), DataTemplate)
|
|
link.PageHeaderData = tsgc.PropiedadesTSGC
|
|
vista.PrintAutoWidth = False
|
|
link.CreateDocument()
|
|
|
|
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.GrupoDocumentos.Add(docpanel)
|
|
|
|
Comun.dm.DockController.Activate(docpanel)
|
|
|
|
|
|
|
|
Catch ex As Exception
|
|
Console.WriteLine(ex.Message)
|
|
End Try
|
|
End If
|
|
End Sub
|
|
|
|
Public Sub ValidaControlObjetoActual()
|
|
Dim oa = Me.ObjetoActual
|
|
Dim be As BaseEdit = Nothing
|
|
Try
|
|
be = LayoutHelper.FindParentObject(Of BaseEdit)(oa)
|
|
Catch ex As Exception
|
|
End Try
|
|
If Not be Is Nothing Then
|
|
Select Case be.GetType
|
|
Case GetType(TextEdit), GetType(PasswordBoxEdit), GetType(ButtonEdit), GetType(DateEdit), GetType(ComboBoxEdit), GetType(DevExpress.Xpf.Grid.LookUp.LookUpEdit)
|
|
Dim expression = be.GetBindingExpression(BaseEdit.EditValueProperty)
|
|
If Configuracion.ComportamientoValidacion = Validation.InvalidValueBehavior.AllowLeaveEditor Then
|
|
be.DoValidate()
|
|
If Not expression Is Nothing AndAlso expression.IsDirty Then expression.UpdateSource()
|
|
Else
|
|
If Not expression Is Nothing AndAlso expression.IsDirty Then expression.UpdateSource()
|
|
be.DoValidate()
|
|
End If
|
|
Case GetType(CheckEdit)
|
|
End Select
|
|
End If
|
|
End Sub
|
|
|
|
|
|
Public Function Guardar(sender As Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs, Optional OcultarStoryBoard As Boolean = False, Optional FuerzaCambioEstado As Boolean = True, Optional OpcionGuardado As Integer = 0) As Boolean
|
|
Dim Cancelar As Boolean
|
|
Try
|
|
ErroresValidacion.LimpiarErrores("Almacenar-")
|
|
ValidaControlObjetoActual()
|
|
|
|
'If ErroresValidacion.Errores.Count > 0 Then
|
|
' If (From ev In ErroresValidacion.Errores Where ev.Tipo = DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical And Not ev.id.ToLower.StartsWith("almacenar-")).Count > 0 Then
|
|
' Cancelar = True
|
|
' End If
|
|
'End If
|
|
If Not Cancelar Then
|
|
For Each linea In Lineas
|
|
linea.View.CommitEditing()
|
|
If linea.View.HasValidationError Then Cancelar = True
|
|
Next
|
|
If Not Cancelar AndAlso CompruebaObligatoriosOUnicos() Then
|
|
Dim MensajesError As Hashtable = Nothing
|
|
Dim MensajeError As DictionaryEntry
|
|
RaiseEvent AntesGuardar(sender, e, Cancelar, MensajesError, OpcionGuardado)
|
|
If ErroresValidacion.Count > 0 Then
|
|
If (From ev In ErroresValidacion.Errores Where ev.Tipo = DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical).Count > 0 Then
|
|
Cancelar = True
|
|
End If
|
|
End If
|
|
If Not Cancelar AndAlso BloqueoActivo IsNot Nothing Then
|
|
Dim VersionAct = BloqueoActivo.Version
|
|
Cancelar = _DelegadoBloqueo.Invoke(Me, tsBloqueo.AccionBloqueEnum.COMPRUEBABLOQUEO).Version > VersionAct
|
|
If Cancelar Then
|
|
If DXSplashScreen.IsActive Then DXSplashScreen.Close()
|
|
If BloqueoActivo.PermitirGuardarConCambios Then
|
|
Dim resp = DXMessageBox.Show("El registro ha sido cambiado en otra sesión. ¿Desea continuar?", "Atención", MessageBoxButton.YesNo)
|
|
If resp = MessageBoxResult.Yes Then
|
|
Cancelar = False
|
|
Else
|
|
MensajesError = New Hashtable
|
|
MensajesError.Add("Concurrencia", "Registro cambiado en otra sesión.")
|
|
End If
|
|
Else
|
|
MensajesError = New Hashtable
|
|
MensajesError.Add("Concurrencia", "Registro cambiado en otra sesión. Refresque y vuelva a realizar los cambios.")
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
If Not Cancelar Then
|
|
If Me.Estado = tsWPF.Comun.EstadosAplicacion.Nuevo Then
|
|
If Contexto.GetType.BaseType Is GetType(ObjectContext) Then
|
|
DirectCast(ContextoOc, ObjectContext).AddObject(NombreTablaBase, Me.DataContext)
|
|
Else
|
|
CambiaStatedbContext()
|
|
End If
|
|
End If
|
|
' Try
|
|
If Me.Contexto.GetType.BaseType Is GetType(ObjectContext) Then
|
|
' If TypeOf Me.Contexto Is ItsObjectContext Then
|
|
' DirectCast(Me.Contexto, ObjectContext).SaveChanges()
|
|
' Else
|
|
Dim oc = DirectCast(Me.Contexto, ObjectContext)
|
|
Try
|
|
If oc.GetType.GetInterfaces.Contains(GetType(ItsObjectContext)) Then
|
|
DirectCast(oc, ItsObjectContext).GuardarCambios()
|
|
Else
|
|
oc.SaveChanges()
|
|
End If
|
|
Catch ex As Exception
|
|
RaiseEvent ErrorGuardando(sender, ex, OpcionGuardado)
|
|
Throw New Exception(ex.Message, ex)
|
|
End Try
|
|
|
|
Else
|
|
GuardadbContext()
|
|
End If
|
|
|
|
RaiseEvent DespuesGuardar(sender, e, OpcionGuardado)
|
|
If FuerzaCambioEstado And OpcionGuardado <> 1 Then
|
|
If Not OcultarStoryBoard Then Me._ContenedorAplicacion.Dispatcher.BeginInvoke(New Action(Sub() Me._ContenedorAplicacion.IniciaAnimacion("Datos Guardados", Colors.Black)), System.Windows.Threading.DispatcherPriority.Normal)
|
|
If ModoSuperUsuario Then Me._ContenedorAplicacion.Dispatcher.BeginInvoke(New Action(Sub() Me.ContenedorAplicacion.IniciaAnimacionBlink("Modo Super Usuario", Colors.Red)), System.Windows.Threading.DispatcherPriority.Normal)
|
|
If Me.Estado = tsWPF.Comun.EstadosAplicacion.Nuevo Then
|
|
Me.Estado = tsWPF.Comun.EstadosAplicacion.ModificandoRegistro
|
|
If _DelegadoBloqueo IsNot Nothing Then BloqueoActivo = _DelegadoBloqueo.Invoke(Me, tsBloqueo.AccionBloqueEnum.BLOQUEAR)
|
|
Else
|
|
If CambiarEstado(Me.Estado, tsWPF.Comun.EstadosAplicacion.ModificandoRegistro, True) Then
|
|
RaiseEvent EstadoCambiado(Me.Estado, tsWPF.Comun.EstadosAplicacion.ModificandoRegistro)
|
|
CompruebaBloqueo()
|
|
End If
|
|
End If
|
|
End If
|
|
If Configuracion.ModoEventosContextoSavingChanges = ModoContextoSavingChangesEnum.SoloDespuesGuardar AndAlso Me.Contexto.GetType.BaseType Is GetType(ObjectContext) Then
|
|
If Me.GrupoDocumentos IsNot Nothing Then
|
|
Comun.RefrescaAplicaciones(Me.GrupoDocumentos.Parent, Nothing, Me.docpanel.Tag)
|
|
End If
|
|
End If
|
|
If _DelegadoBloqueo IsNot Nothing Then
|
|
BloqueoActivo = _DelegadoBloqueo.Invoke(Me, tsBloqueo.AccionBloqueEnum.ACTUALIZAVERSION)
|
|
End If
|
|
Else
|
|
If Not MensajesError Is Nothing Then
|
|
For Each MensajeError In MensajesError
|
|
ErroresValidacion.AgregaError(New ErrorValidacion("Almacenar-" & MensajeError.Key, Me._ContenedorAplicacion, MensajeError.Value, Nothing, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical), Nothing)
|
|
Next
|
|
End If
|
|
End If
|
|
Else
|
|
Cancelar = True
|
|
End If
|
|
End If
|
|
EstableceTitulo()
|
|
If docpanel IsNot Nothing Then docpanel.Tag = idRegistroAplicacionActual
|
|
Catch ex As Exception
|
|
If DelegadoErrorNoControlado IsNot Nothing Then DelegadoErrorNoControlado.Invoke(Me, ex)
|
|
Cancelar = True
|
|
Dim sMensaje As String = ex.Message
|
|
Dim inexc As Exception = ex.InnerException
|
|
Do Until inexc Is Nothing
|
|
sMensaje &= " -- " & inexc.Message
|
|
inexc = inexc.InnerException
|
|
Loop
|
|
ErroresValidacion.AgregaError(New ErrorValidacion("Almacenar-Excepcion", _ContenedorAplicacion, sMensaje, Nothing, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical), Nothing)
|
|
Finally
|
|
If Not Cancelar Then
|
|
Select Case Estado
|
|
Case tsWPF.Comun.EstadosAplicacion.ModificandoRegistro
|
|
_ContenedorAplicacion.btGuardar.IsEnabled = PermisosConcedidos.Modificar
|
|
_ContenedorAplicacion.btGuardarYBuscar.IsEnabled = PermisosConcedidos.Modificar
|
|
Case tsWPF.Comun.EstadosAplicacion.Nuevo
|
|
_ContenedorAplicacion.btGuardar.IsEnabled = PermisosConcedidos.Nuevos
|
|
_ContenedorAplicacion.btGuardarYBuscar.IsEnabled = PermisosConcedidos.Nuevos
|
|
End Select
|
|
Else
|
|
_ContenedorAplicacion.btGuardar.IsEnabled = True
|
|
_ContenedorAplicacion.btGuardarYBuscar.IsEnabled = True
|
|
RaiseEvent DespuesCancelarGuardar(sender, e, OpcionGuardado)
|
|
End If
|
|
End Try
|
|
If Cancelar And ErroresValidacion.Errores.Count > 0 And Not OcultarStoryBoard Then
|
|
Me._ContenedorAplicacion.Dispatcher.BeginInvoke(New Action(Sub() Me._ContenedorAplicacion.IniciaAnimacion("Datos no guardadados. Revise los mensajes.", Colors.Red)), System.Windows.Threading.DispatcherPriority.Normal)
|
|
If ModoSuperUsuario Then If ModoSuperUsuario Then Me._ContenedorAplicacion.Dispatcher.BeginInvoke(New Action(Sub() Me.ContenedorAplicacion.IniciaAnimacionBlink("Modo Super Usuario", Colors.Red)), System.Windows.Threading.DispatcherPriority.Normal)
|
|
End If
|
|
Return Cancelar
|
|
End Function
|
|
Private Sub CambiaStatedbContext()
|
|
DirectCast(Me.Contexto, DbContext).Entry(DataContext).State = EntityState.Added
|
|
End Sub
|
|
Private Sub GuardadbContext()
|
|
DirectCast(Me.Contexto, DbContext).SaveChanges()
|
|
End Sub
|
|
Private Function CompruebaObligatoriosOUnicos() As Boolean
|
|
Try
|
|
CompruebaObligatoriosOUnicos = True
|
|
For Each c In ControlesTS
|
|
CompruebaObligatoriosOUnicos = CompruebaObligatoriosOUnicos And CompruebaObligatorio(c)
|
|
CompruebaObligatoriosOUnicos = CompruebaObligatoriosOUnicos And CompruebaUnico(c)
|
|
Next
|
|
Catch ex As Exception
|
|
Throw New Exception(ex.Message, ex)
|
|
End Try
|
|
End Function
|
|
Private Function CompruebaObligatorio(c As tsLayoutItem, Optional valor As Object = Nothing) As Boolean
|
|
Try
|
|
CompruebaObligatorio = True
|
|
If c.PropiedadesTS.Obligatorio Then
|
|
Select Case c.Content.GetType
|
|
Case GetType(CheckEdit)
|
|
|
|
Case GetType(ButtonEdit)
|
|
Dim te As ButtonEdit = c.Content
|
|
If valor Is Nothing Then valor = te.EditValue
|
|
If valor Is Nothing OrElse valor.ToString = "" Then
|
|
CompruebaObligatorio = False
|
|
ErroresValidacion.AgregaError(New ErrorValidacion(c.PropiedadesTS.NumeroObjeto, te, "El campo " & c.Label.ToString & " es obligatorio.", Nothing, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical), Nothing)
|
|
End If
|
|
Case GetType(TextEdit)
|
|
Dim te As TextEdit = c.Content
|
|
If valor Is Nothing Then valor = te.EditValue
|
|
If valor Is Nothing OrElse valor.ToString = "" Then
|
|
CompruebaObligatorio = False
|
|
ErroresValidacion.AgregaError(New ErrorValidacion(c.PropiedadesTS.NumeroObjeto, te, "El campo " & c.Label.ToString & " es obligatorio.", Nothing, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical), Nothing)
|
|
End If
|
|
Case GetType(DateEdit)
|
|
Dim de As DateEdit = c.Content
|
|
If valor Is Nothing Then valor = de.EditValue
|
|
If valor Is Nothing Then
|
|
CompruebaObligatorio = False
|
|
ErroresValidacion.AgregaError(New ErrorValidacion(c.PropiedadesTS.NumeroObjeto, de, "El campo " & c.Label.ToString & " es obligatorio.", Nothing, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical), Nothing)
|
|
End If
|
|
Case GetType(ComboBoxEdit)
|
|
Dim cbe As ComboBoxEdit = c.Content
|
|
If valor Is Nothing Then valor = cbe.EditValue
|
|
If valor Is Nothing OrElse valor.ToString = "" Then
|
|
CompruebaObligatorio = False
|
|
ErroresValidacion.AgregaError(New ErrorValidacion(c.PropiedadesTS.NumeroObjeto, cbe, "El campo " & c.Label.ToString & " es obligatorio.", Nothing, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical), Nothing)
|
|
End If
|
|
|
|
Case GetType(DevExpress.Xpf.Grid.LookUp.LookUpEdit)
|
|
Dim le As DevExpress.Xpf.Grid.LookUp.LookUpEdit = c.Content
|
|
If valor Is Nothing Then valor = le.EditValue
|
|
If valor Is Nothing OrElse valor.ToString = "" Then
|
|
CompruebaObligatorio = False
|
|
ErroresValidacion.AgregaError(New ErrorValidacion(c.PropiedadesTS.NumeroObjeto, le, "El campo " & c.Label.ToString & " es obligatorio.", Nothing, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical), Nothing)
|
|
End If
|
|
End Select
|
|
End If
|
|
Catch EX As Exception
|
|
Throw New Exception(EX.Message, EX)
|
|
End Try
|
|
End Function
|
|
|
|
Function CompruebaUnico(c As tsLayoutItem, oc As ObjectContext, valor As Object) As Boolean
|
|
If Estado = tsWPF.Comun.EstadosAplicacion.Nuevo Then
|
|
Dim Parametros(0) As Object
|
|
Parametros(0) = valor
|
|
If oc.Connection.ConnectionString.Contains("provider=Oracle.ManagedDataAccess.Client") Then
|
|
Dim r = oc.ExecuteStoreQuery(Of Object)("select " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " from " & NombreTablaBase & " where " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " = :0", Parametros).Any
|
|
Return Not r
|
|
Else
|
|
Dim r = oc.ExecuteStoreQuery(Of Object)("select " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " from " & NombreTablaBase & " where " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " = {0}", Parametros).Any
|
|
Return Not r
|
|
End If
|
|
Else
|
|
If oc.Connection.ConnectionString.Contains("provider=Oracle.ManagedDataAccess.Client") Then
|
|
Dim Parametros(1) As Object
|
|
Parametros(0) = valor
|
|
Parametros(1) = DataContext.entitykey.entitykeyvalues(0).value
|
|
Dim CampoIndice As String = DataContext.entitykey.entitykeyvalues(0).key
|
|
Dim r = oc.ExecuteStoreQuery(Of Object)("select " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " from " & NombreTablaBase & " where " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " = :0 and " & NombreTablaBase & "." & CampoIndice & " <> :1", Parametros).Any
|
|
Return Not r
|
|
Else
|
|
Dim Parametros(1) As Object
|
|
Parametros(0) = valor
|
|
Parametros(1) = DataContext.entitykey.entitykeyvalues(0).value
|
|
Dim CampoIndice As String = DataContext.entitykey.entitykeyvalues(0).key
|
|
Dim r = oc.ExecuteStoreQuery(Of Object)("select " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " from " & NombreTablaBase & " where " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " = {0} and " & NombreTablaBase & "." & CampoIndice & " <> {1}", Parametros).Any
|
|
Return Not r
|
|
End If
|
|
End If
|
|
|
|
' Try
|
|
' Select Case bd.GetType
|
|
' Case GetType(EntityClient.EntityConnection)
|
|
|
|
' Dim cmd As New EntityClient.EntityCommand
|
|
' cmd = bd.CreateCommand
|
|
' If Estado = EstadosCablin.Nuevo Then
|
|
' cmd.CommandText = "select " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " from " & NombreTablaBase & " where " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " = @Campo"
|
|
' cmd.Parameters.AddWithValue("Campo", valor)
|
|
' Else
|
|
|
|
' cmd.CommandText = "select " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " from " & NombreTablaBase & " where " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " = @Campo and " & NombreTablaBase & "." & CampoIndice & " <> @Indice"
|
|
' cmd.Parameters.AddWithValue("Campo", valor)
|
|
|
|
' If Contexto.GetType.BaseType Is GetType(ObjectContext) Then
|
|
' cmd.Parameters.AddWithValue("Indice", DataContext.entitykey.entitykeyvalues(0).value)
|
|
' Else
|
|
' Dim oc = CType(Contexto, DbContext)
|
|
' Dim ek = oc.GetEntityKey(DataContext)
|
|
' cmd.Parameters.AddWithValue("Indice", ek.EntityKeyValues(0).Value)
|
|
' End If
|
|
' End If
|
|
' Dim dr = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
|
|
' CompruebaUnico = Not dr.HasRows
|
|
' Case GetType(MySql.Data.MySqlClient.MySqlConnection)
|
|
' Dim cmd As New MySql.Data.MySqlClient.MySqlCommand
|
|
' cmd = bd.CreateCommand
|
|
' If Estado = EstadosCablin.Nuevo Then
|
|
' cmd.CommandText = "select " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " from " & NombreTablaBase & " where " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " = @Campo"
|
|
' cmd.Parameters.AddWithValue("Campo", valor)
|
|
' Else
|
|
|
|
' cmd.CommandText = "select " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " from " & NombreTablaBase & " where " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " = @Campo and " & NombreTablaBase & "." & CampoIndice & " <> @Indice"
|
|
' cmd.Parameters.AddWithValue("Campo", valor)
|
|
|
|
' If Contexto.GetType.BaseType Is GetType(ObjectContext) Then
|
|
' cmd.Parameters.AddWithValue("Indice", DataContext.entitykey.entitykeyvalues(0).value)
|
|
' Else
|
|
' Dim oc = CType(Contexto, DbContext)
|
|
' Dim ek = oc.GetEntityKey(DataContext)
|
|
' cmd.Parameters.AddWithValue("Indice", ek.EntityKeyValues(0).Value)
|
|
' End If
|
|
' End If
|
|
' Dim dr As MySql.Data.MySqlClient.MySqlDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
|
|
' CompruebaUnico = Not dr.HasRows
|
|
' Case GetType(System.Data.SqlClient.SqlConnection)
|
|
' Dim cmd As New System.Data.SqlClient.SqlCommand
|
|
' cmd = bd.CreateCommand
|
|
' If Estado = EstadosCablin.Nuevo Then
|
|
' cmd.CommandText = "select " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " from " & NombreTablaBase & " where " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " = @Campo"
|
|
' cmd.Parameters.AddWithValue("Campo", valor)
|
|
' Else
|
|
|
|
' cmd.CommandText = "select " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " from " & NombreTablaBase & " where " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " = @Campo and " & NombreTablaBase & "." & CampoIndice & " <> @Indice"
|
|
' cmd.Parameters.AddWithValue("Campo", valor)
|
|
' cmd.Parameters.AddWithValue("Indice", DataContext.entitykey.entitykeyvalues(0).value)
|
|
' End If
|
|
' Dim dr As System.Data.SqlClient.SqlDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
|
|
' CompruebaUnico = Not dr.HasRows
|
|
|
|
' Case GetType(Oracle.ManagedDataAccess.Client.OracleConnection)
|
|
' Dim cmd As New Oracle.ManagedDataAccess.Client.OracleCommand
|
|
' cmd = bd.CreateCommand
|
|
' If Estado = EstadosCablin.Nuevo Then
|
|
' cmd.CommandText = "select " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " from " & NombreTablaBase & " where " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " = :Campo"
|
|
' cmd.Parameters.Add("Campo", valor)
|
|
' Else
|
|
|
|
' cmd.CommandText = "select " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " from " & NombreTablaBase & " where " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " = :Campo and " & NombreTablaBase & "." & CampoIndice & " <> :Indice"
|
|
' cmd.Parameters.Add("Campo", valor)
|
|
' cmd.Parameters.Add("Indice", DataContext.entitykey.entitykeyvalues(0).value)
|
|
' End If
|
|
' Dim dr As Oracle.ManagedDataAccess.Client.OracleDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
|
|
' CompruebaUnico = Not dr.HasRows
|
|
|
|
' Case Else
|
|
' Throw New Exception("Tipo de BD no soportado")
|
|
' End Select
|
|
' Catch ex As Exception
|
|
' Throw ex
|
|
' End Try
|
|
End Function
|
|
'Function CompruebaUnico(c As tsLayoutItem, Conexion As System.Data.Common.DbConnection, valor As Object) As Boolean
|
|
' Try
|
|
' Dim tipo = Conexion.GetType.FullName.ToLower
|
|
' Dim bd = Conexion
|
|
' If bd.GetType Is GetType(System.Data.EntityClient.EntityConnection) Then
|
|
' bd = DirectCast(Conexion, System.Data.EntityClient.EntityConnection).StoreConnection
|
|
' tipo = DirectCast(Conexion, System.Data.EntityClient.EntityConnection).StoreConnection.GetType.FullName.ToLower
|
|
' Dim kk = DirectCast(Conexion, System.Data.EntityClient.EntityConnection).CreateCommand
|
|
|
|
' Select Case tipo
|
|
' Case "mysql.data.mysqlclient.mysqlconnection"
|
|
' ' Dim cmd As New MySql.Data.MySqlClient.MySqlCommand
|
|
' Dim cmd = bd.CreateCommand
|
|
' If Estado = EstadosCablin.Nuevo Then
|
|
' cmd.CommandText = "select " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " from " & NombreTablaBase & " where " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " = @Campo"
|
|
' cmd.Parameters.AddWithValue("Campo", valor)
|
|
' Else
|
|
|
|
' cmd.CommandText = "select " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " from " & NombreTablaBase & " where " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " = @Campo and " & NombreTablaBase & "." & CampoIndice & " <> @Indice"
|
|
' cmd.Parameters.AddWithValue("Campo", valor)
|
|
|
|
' If Contexto.GetType.BaseType Is GetType(ObjectContext) Then
|
|
' cmd.Parameters.AddWithValue("Indice", DataContext.entitykey.entitykeyvalues(0).value)
|
|
' Else
|
|
' Dim oc = CType(Contexto, DbContext)
|
|
' Dim ek = oc.GetEntityKey(DataContext)
|
|
' cmd.Parameters.AddWithValue("Indice", ek.EntityKeyValues(0).Value)
|
|
' End If
|
|
' End If
|
|
' Dim dr As MySql.Data.MySqlClient.MySqlDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
|
|
' CompruebaUnico = Not dr.HasRows
|
|
' Case "system.data.sqlclient.sqlconnection"
|
|
' Dim cmd As New System.Data.SqlClient.SqlCommand
|
|
' cmd = bd.CreateCommand
|
|
' If Estado = EstadosCablin.Nuevo Then
|
|
' cmd.CommandText = "select " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " from " & NombreTablaBase & " where " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " = @Campo"
|
|
' cmd.Parameters.AddWithValue("Campo", valor)
|
|
' Else
|
|
|
|
' cmd.CommandText = "select " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " from " & NombreTablaBase & " where " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " = @Campo and " & NombreTablaBase & "." & CampoIndice & " <> @Indice"
|
|
' cmd.Parameters.AddWithValue("Campo", valor)
|
|
' cmd.Parameters.AddWithValue("Indice", DataContext.entitykey.entitykeyvalues(0).value)
|
|
' End If
|
|
' Dim dr As System.Data.SqlClient.SqlDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
|
|
' CompruebaUnico = Not dr.HasRows
|
|
|
|
' Case "oracle.manageddataaccess.client.oracleconnection"
|
|
' Dim cmd As New Oracle.ManagedDataAccess.Client.OracleCommand
|
|
' cmd = bd.CreateCommand
|
|
' If Estado = EstadosCablin.Nuevo Then
|
|
' cmd.CommandText = "select " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " from " & NombreTablaBase & " where " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " = :Campo"
|
|
' cmd.Parameters.Add("Campo", valor)
|
|
' Else
|
|
|
|
' cmd.CommandText = "select " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " from " & NombreTablaBase & " where " & NombreTablaBase & "." & c.PropiedadesTS.NombreCampo & " = :Campo and " & NombreTablaBase & "." & CampoIndice & " <> :Indice"
|
|
' cmd.Parameters.Add("Campo", valor)
|
|
' cmd.Parameters.Add("Indice", DataContext.entitykey.entitykeyvalues(0).value)
|
|
' End If
|
|
' Dim dr As Oracle.ManagedDataAccess.Client.OracleDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
|
|
' CompruebaUnico = Not dr.HasRows
|
|
' Case Else
|
|
' Throw New Exception("Tipo de BD no soportado")
|
|
' End Select
|
|
' Catch ex As Exception
|
|
' Throw ex
|
|
' End Try
|
|
'End Function
|
|
|
|
Private Function CompruebaUnico(c As tsLayoutItem, Optional valor As Object = Nothing) As Boolean
|
|
' Dim bd As System.Data.Common.DbConnection = Nothing
|
|
Dim oc As ObjectContext
|
|
Dim bCerrar As Boolean = False
|
|
Try
|
|
CompruebaUnico = True
|
|
If c.PropiedadesTS.Unico Then
|
|
|
|
' Dim cmd As System.Data.Common.DbCommand
|
|
Select Case Me.Contexto.GetType.BaseType
|
|
Case GetType(ObjectContext)
|
|
oc = DirectCast(Me.Contexto, ObjectContext)
|
|
Case Else
|
|
Throw New Exception("Tipo de contexto no soportado para campos únicos")
|
|
End Select
|
|
Select Case c.Content.GetType
|
|
Case GetType(CheckEdit)
|
|
Case GetType(ButtonEdit)
|
|
Dim te As ButtonEdit = c.Content
|
|
If valor Is Nothing Then valor = te.EditValue
|
|
If Not (valor Is Nothing OrElse valor.ToString = "") Then
|
|
CompruebaUnico = CompruebaUnico(c, oc, valor)
|
|
End If
|
|
If Not CompruebaUnico Then
|
|
ErroresValidacion.AgregaError(New ErrorValidacion(c.PropiedadesTS.NumeroObjeto, te, "Ya existe un registro con el valor " & valor, Nothing, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical), Nothing)
|
|
End If
|
|
|
|
Case GetType(TextEdit)
|
|
Dim te As TextEdit = c.Content
|
|
If valor Is Nothing Then valor = te.EditValue
|
|
If Not (valor Is Nothing OrElse valor.ToString = "") Then
|
|
CompruebaUnico = CompruebaUnico(c, oc, valor)
|
|
End If
|
|
If Not CompruebaUnico Then
|
|
ErroresValidacion.AgregaError(New ErrorValidacion(c.PropiedadesTS.NumeroObjeto, te, "Ya existe un registro con el valor " & valor, Nothing, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical), Nothing)
|
|
End If
|
|
Case GetType(DateEdit)
|
|
Dim de As DateEdit = c.Content
|
|
If valor Is Nothing Then valor = de.EditValue
|
|
If Not (valor Is Nothing OrElse valor.ToString = "") Then
|
|
CompruebaUnico = CompruebaUnico(c, oc, valor)
|
|
End If
|
|
If Not CompruebaUnico Then
|
|
ErroresValidacion.AgregaError(New ErrorValidacion(c.PropiedadesTS.NumeroObjeto, de, "Ya existe un registro con el valor " & DirectCast(valor, Date).ToShortDateString, Nothing, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical), Nothing)
|
|
End If
|
|
Case GetType(ComboBoxEdit)
|
|
Dim cbe As ComboBoxEdit = c.Content
|
|
If valor Is Nothing Then valor = cbe.EditValue
|
|
If Not (valor Is Nothing OrElse valor.ToString = "") Then
|
|
CompruebaUnico = CompruebaUnico(c, oc, valor)
|
|
End If
|
|
If Not CompruebaUnico Then
|
|
ErroresValidacion.AgregaError(New ErrorValidacion(c.PropiedadesTS.NumeroObjeto, cbe, "Ya existe un registro con el valor " & valor.ToString, Nothing, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical), Nothing)
|
|
End If
|
|
Case GetType(DevExpress.Xpf.Grid.LookUp.LookUpEdit)
|
|
Dim le As DevExpress.Xpf.Grid.LookUp.LookUpEdit = c.Content
|
|
If valor Is Nothing Then valor = le.EditValue
|
|
If Not (valor Is Nothing OrElse valor.ToString = "") Then
|
|
CompruebaUnico = CompruebaUnico(c, oc, valor)
|
|
End If
|
|
If Not CompruebaUnico Then
|
|
ErroresValidacion.AgregaError(New ErrorValidacion(c.PropiedadesTS.NumeroObjeto, le, "Ya existe un registro con el valor " & valor.ToString, Nothing, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical), Nothing)
|
|
End If
|
|
End Select
|
|
End If
|
|
Catch ex As Exception
|
|
Throw New Exception(ex.Message, ex)
|
|
'Finally
|
|
' Try
|
|
' If bd IsNot Nothing AndAlso bCerrar Then oc.Close()
|
|
' Catch ex2 As Exception
|
|
' End Try
|
|
End Try
|
|
End Function
|
|
|
|
'Private Function CompruebaUnico(c As tsLayoutItem, Optional valor As Object = Nothing) As Boolean
|
|
' Dim bd As System.Data.Common.DbConnection = Nothing
|
|
' Try
|
|
' CompruebaUnico = True
|
|
' If c.PropiedadesTS.Unico Then
|
|
|
|
' Dim cmd As System.Data.Common.DbCommand
|
|
' Select Case Me._DatosConexionBD.Tipo
|
|
' Case Enumeraciones.TipoBD.MYSQL
|
|
' Dim spassw = Me._DatosConexionBD.Password
|
|
' bd = New MySql.Data.MySqlClient.MySqlConnection(tsl5.bbdd.GeneraConnectionStringMySQL(Me._DatosConexionBD.Servidor, Me._DatosConexionBD.DataBase, Me._DatosConexionBD.Usuario, spassw, Me._DatosConexionBD.Puerto, Me._DatosConexionBD.SegundosTimeout, Me._DatosConexionBD.Pooling, Me._DatosConexionBD.SSL, Me._DatosConexionBD.FicheroCertificado, Me._DatosConexionBD.PasswordCertificado))
|
|
' Case Enumeraciones.TipoBD.LOCALDB
|
|
' bd = New System.Data.SqlClient.SqlConnection(tsl5.bbdd.GeneraConnectionStringLocalDB(Me._DatosConexionBD.Servidor, Me._DatosConexionBD.DataBase))
|
|
' Case Enumeraciones.TipoBD.SQLSERVER
|
|
' bd = New System.Data.SqlClient.SqlConnection(tsl5.bbdd.GeneraConnectionStringSQLServer(Me._DatosConexionBD.Servidor, Me._DatosConexionBD.DataBase, Me._DatosConexionBD.Usuario, Me._DatosConexionBD.Password, Me._DatosConexionBD.Puerto))
|
|
' Case Enumeraciones.TipoBD.ORACLE
|
|
' bd = New Oracle.ManagedDataAccess.Client.OracleConnection(tsl5.bbdd.GeneraConnectionStringOracle(Me._DatosConexionBD.Servidor, Me._DatosConexionBD.DataBase, Me._DatosConexionBD.Usuario, Me._DatosConexionBD.Password, Me._DatosConexionBD.Puerto, Me._DatosConexionBD.SegundosTimeout, Me._DatosConexionBD.Pooling, Me._DatosConexionBD.SSL, Me._DatosConexionBD.FicheroCertificado, Me._DatosConexionBD.PasswordCertificado))
|
|
' Case Else
|
|
' Throw New Exception("Tipo de BD aún no implementado")
|
|
' End Select
|
|
' bd.Open()
|
|
' cmd = bd.CreateCommand
|
|
' Select Case c.Content.GetType
|
|
' Case GetType(CheckEdit)
|
|
' Case GetType(ButtonEdit)
|
|
' Dim te As ButtonEdit = c.Content
|
|
' If valor Is Nothing Then valor = te.EditValue
|
|
' If Not (valor Is Nothing OrElse valor.ToString = "") Then
|
|
' CompruebaUnico = CompruebaUnico(c, bd, valor)
|
|
' End If
|
|
' If Not CompruebaUnico Then
|
|
' ErroresValidacion.AgregaError(New ErrorValidacion(c.PropiedadesTS.NumeroObjeto, te, "Ya existe un registro con el valor " & valor, Nothing, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical), Nothing)
|
|
' End If
|
|
|
|
' Case GetType(TextEdit)
|
|
' Dim te As TextEdit = c.Content
|
|
' If valor Is Nothing Then valor = te.EditValue
|
|
' If Not (valor Is Nothing OrElse valor.ToString = "") Then
|
|
' CompruebaUnico = CompruebaUnico(c, bd, valor)
|
|
' End If
|
|
' If Not CompruebaUnico Then
|
|
' ErroresValidacion.AgregaError(New ErrorValidacion(c.PropiedadesTS.NumeroObjeto, te, "Ya existe un registro con el valor " & valor, Nothing, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical), Nothing)
|
|
' End If
|
|
' Case GetType(DateEdit)
|
|
' Dim de As DateEdit = c.Content
|
|
' If valor Is Nothing Then valor = de.EditValue
|
|
' If Not (valor Is Nothing OrElse valor.ToString = "") Then
|
|
' CompruebaUnico = CompruebaUnico(c, bd, valor)
|
|
' End If
|
|
' If Not CompruebaUnico Then
|
|
' ErroresValidacion.AgregaError(New ErrorValidacion(c.PropiedadesTS.NumeroObjeto, de, "Ya existe un registro con el valor " & de.EditValue.ToString, Nothing, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical), Nothing)
|
|
' End If
|
|
' Case GetType(ComboBoxEdit)
|
|
' Dim cbe As ComboBoxEdit = c.Content
|
|
' If valor Is Nothing Then valor = cbe.EditValue
|
|
' If Not (valor Is Nothing OrElse valor.ToString = "") Then
|
|
' CompruebaUnico = CompruebaUnico(c, bd, valor)
|
|
' End If
|
|
' If Not CompruebaUnico Then
|
|
' ErroresValidacion.AgregaError(New ErrorValidacion(c.PropiedadesTS.NumeroObjeto, cbe, "Ya existe un registro con el valor " & cbe.EditValue.ToString, Nothing, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical), Nothing)
|
|
' End If
|
|
' Case GetType(DevExpress.Xpf.Grid.LookUp.LookUpEdit)
|
|
' Dim le As DevExpress.Xpf.Grid.LookUp.LookUpEdit = c.Content
|
|
' If valor Is Nothing Then valor = le.EditValue
|
|
' If Not (valor Is Nothing OrElse valor.ToString = "") Then
|
|
' CompruebaUnico = CompruebaUnico(c, bd, valor)
|
|
' End If
|
|
' If Not CompruebaUnico Then
|
|
' ErroresValidacion.AgregaError(New ErrorValidacion(c.PropiedadesTS.NumeroObjeto, le, "Ya existe un registro con el valor " & le.EditValue.ToString, Nothing, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical), Nothing)
|
|
' End If
|
|
' End Select
|
|
' End If
|
|
' Catch ex As Exception
|
|
' Throw New Exception(ex.Message, ex)
|
|
' Finally
|
|
' Try
|
|
' If bd IsNot Nothing Then bd.Close()
|
|
' Catch ex2 As Exception
|
|
' End Try
|
|
' End Try
|
|
'End Function
|
|
Public Shared Function Obtienebl(Of T)(Coleccion As ICollection(Of T)) As BindingList(Of T)
|
|
Dim bl = New BindingList(Of T)(Coleccion)
|
|
' AddHandler bl.ListChanged, AddressOf bl_ListChanged
|
|
Return bl
|
|
End Function
|
|
|
|
'Private Sub bl_ListChanged(sender As Object, e As ListChangedEventArgs)
|
|
|
|
' If e.ListChangedType = ListChangedType.ItemAdded Then
|
|
' 'Dim bl As BindingList(Of tipo) = sender
|
|
' Dim ra = Me.DataContext
|
|
' ' ra.direcciones.Add(DirectCast(sender.Item(e.NewIndex), direcciones))
|
|
' Dim dir = ra.GetType.GetProperty("direcciones")
|
|
' Dim pars(0) As Object
|
|
' pars(0) = sender.Item(e.NewIndex)
|
|
' ' TryCast(dir.GetType, ICollection).GetMethod("Add").Invoke(dir, pars)
|
|
' End If
|
|
'End Sub
|
|
|
|
|
|
Sub LanzaEjecutaAccion(sender As Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs, idAccion As Integer)
|
|
Try
|
|
Dim be As BaseEdit = Nothing
|
|
Try
|
|
be = LayoutHelper.FindParentObject(Of BaseEdit)(Keyboard.FocusedElement)
|
|
Catch ex As Exception
|
|
End Try
|
|
ErroresValidacion.LimpiarErrores()
|
|
If Not be Is Nothing Then
|
|
Select Case be.GetType
|
|
Case GetType(TextEdit), GetType(PasswordBoxEdit), GetType(ButtonEdit), GetType(DateEdit), GetType(ComboBoxEdit), GetType(DevExpress.Xpf.Grid.LookUp.LookUpEdit)
|
|
Dim expression = be.GetBindingExpression(BaseEdit.EditValueProperty)
|
|
If Configuracion.ComportamientoValidacion = Validation.InvalidValueBehavior.AllowLeaveEditor Then
|
|
be.DoValidate()
|
|
If Not expression Is Nothing AndAlso expression.IsDirty Then expression.UpdateSource()
|
|
Else
|
|
If Not expression Is Nothing AndAlso expression.IsDirty Then expression.UpdateSource()
|
|
be.DoValidate()
|
|
End If
|
|
Case GetType(CheckEdit)
|
|
End Select
|
|
End If
|
|
Dim Cancelar As Boolean = False
|
|
For Each linea In Lineas
|
|
linea.View.CommitEditing()
|
|
If linea.View.HasValidationError Then Cancelar = True
|
|
Next
|
|
If Not Cancelar Then RaiseEvent EjecutarAccion(sender, e, idAccion)
|
|
Catch ex As Exception
|
|
If DelegadoErrorNoControlado IsNot Nothing Then DelegadoErrorNoControlado.Invoke(Me, ex)
|
|
DXMessageBox.Show("Error en LanzaEjecutaAccion " & ex.Message, "Error")
|
|
End Try
|
|
End Sub
|
|
Sub LanzaImprimirPlantilla(sender As Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs, idPlantilla As Integer)
|
|
Try
|
|
Dim be As BaseEdit = Nothing
|
|
Try
|
|
be = LayoutHelper.FindParentObject(Of BaseEdit)(Keyboard.FocusedElement)
|
|
Catch ex As Exception
|
|
End Try
|
|
ErroresValidacion.LimpiarErrores()
|
|
If Not be Is Nothing Then
|
|
Select Case be.GetType
|
|
Case GetType(TextEdit), GetType(PasswordBoxEdit), GetType(ButtonEdit), GetType(DateEdit), GetType(ComboBoxEdit), GetType(DevExpress.Xpf.Grid.LookUp.LookUpEdit)
|
|
Dim expression = be.GetBindingExpression(BaseEdit.EditValueProperty)
|
|
If Configuracion.ComportamientoValidacion = Validation.InvalidValueBehavior.AllowLeaveEditor Then
|
|
be.DoValidate()
|
|
If Not expression Is Nothing AndAlso expression.IsDirty Then expression.UpdateSource()
|
|
Else
|
|
If Not expression Is Nothing AndAlso expression.IsDirty Then expression.UpdateSource()
|
|
be.DoValidate()
|
|
End If
|
|
Case GetType(CheckEdit)
|
|
End Select
|
|
End If
|
|
Dim Cancelar As Boolean = False
|
|
For Each linea In Lineas
|
|
linea.View.CommitEditing()
|
|
If linea.View.HasValidationError Then Cancelar = True
|
|
Next
|
|
If Not Cancelar Then RaiseEvent ImprimirPlantilla(sender, e, idPlantilla)
|
|
Catch ex As Exception
|
|
Debug.Write(ex.Message)
|
|
End Try
|
|
|
|
End Sub
|
|
Public Shared Function ComprimirCadena(Cadena As String, NombreFicheroInterno As String) As Byte()
|
|
Dim ms As New IO.MemoryStream
|
|
Dim archive As New ZipArchive(ms, ZipArchiveMode.Create, True)
|
|
Dim fc = archive.CreateEntry(NombreFicheroInterno)
|
|
Dim es = fc.Open()
|
|
Dim sw As New IO.BinaryWriter(es)
|
|
sw.Write(System.Text.Encoding.UTF8.GetBytes(Cadena))
|
|
sw.Close()
|
|
es.Close()
|
|
ms.Seek(0, SeekOrigin.Begin)
|
|
Return ms.ToArray
|
|
End Function
|
|
Public Sub EstableceSoloLectura(ListaControles As List(Of tsLayoutItem), Optional SoloLectura As Boolean = True)
|
|
Dim o As Object
|
|
|
|
For Each tsli As tsLayoutItem In ListaControles
|
|
o = tsli.Content
|
|
Try
|
|
EstableceSoloLectura(o, SoloLectura)
|
|
Catch ex As Exception
|
|
End Try
|
|
Next
|
|
End Sub
|
|
Public Shared Sub EstableceSoloLectura(Control As Object, SoloLectura As Boolean)
|
|
If Control.GetType IsNot GetType(Border) Then
|
|
If Control.GetType Is GetType(tsGridControl) Then
|
|
DirectCast(Control, tsGridControl).EstableceSoloLectura(SoloLectura)
|
|
Else
|
|
Control.isreadonly = SoloLectura
|
|
If Control.GetType Is GetType(ComboBoxEdit) Then
|
|
Dim cbe = DirectCast(Control, ComboBoxEdit)
|
|
For Each bt In cbe.Buttons
|
|
bt.IsEnabled = Not SoloLectura
|
|
Next
|
|
End If
|
|
If Control.GetType Is GetType(ButtonEdit) Then
|
|
Dim bte = DirectCast(Control, ButtonEdit)
|
|
For Each bt In bte.Buttons
|
|
bt.IsEnabled = Not SoloLectura
|
|
Next
|
|
End If
|
|
If Control.GetType Is GetType(DateEdit) Then
|
|
Dim de = DirectCast(Control, DateEdit)
|
|
de.AllowDefaultButton = Not SoloLectura
|
|
End If
|
|
End If
|
|
End If
|
|
End Sub
|
|
Public Sub EstableceSoloLectura(Optional PermitirGuardar As Boolean = False)
|
|
EstableceSoloLectura(Me.ControlesTS)
|
|
For Each l In Me.Lineas
|
|
'l.View.AllowEditing = False ' (l.PropiedadesTS.Modificable = TiposModificacion.Modificable Or l.PropiedadesTS.Modificable = TiposModificacion.ModificableEnNuevos)
|
|
l.EstableceSoloLectura()
|
|
|
|
'If Not l.ContextMenu Is Nothing AndAlso l.ContextMenu.HasItems Then
|
|
' Dim mi As MenuItem = l.ContextMenu.Items(0)
|
|
' mi.IsEnabled = False
|
|
'End If
|
|
Next
|
|
' Me.ContenedorAplicacion.btGuardar.IsVisible = False
|
|
If PermitirGuardar = False Then
|
|
Me.ContenedorAplicacion.btGuardar.IsEnabled = False
|
|
Me.ContenedorAplicacion.btGuardarYBuscar.IsEnabled = False
|
|
Me.ContenedorAplicacion.btEliminar.IsEnabled = False
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub tsUserControl_Unloaded(sender As Object, e As RoutedEventArgs) Handles Me.Unloaded
|
|
If BloqueoActivo IsNot Nothing Then _DelegadoBloqueo.Invoke(Me, tsBloqueo.AccionBloqueEnum.DESBLOQUEAR)
|
|
End Sub
|
|
End Class
|
|
'Public Interface IAplicacion
|
|
' Function EstableceDCPrincipal(Optional Background As Boolean = False, Optional FuerzaNuevo As Boolean = False) As tsWPF.Comun.EstadosAplicacion
|
|
' Sub EstableceDataContextSecundarios(Optional Background As Boolean = False)
|
|
' ' ReadOnly Property TituloPestaña As String
|
|
' ReadOnly Property CampoIndice As String
|
|
' ReadOnly Property idRegistroAplicacionActual As String
|
|
' Sub EstableceTitulo()
|
|
' ReadOnly Property DescripcionRegistro As String
|
|
|
|
' ' Sub Guardar()
|
|
' Sub Cargado()
|
|
' Function ObtieneBD() As Object
|
|
' Function ObtieneConexionBD() As tsl5.Datos.BBDD
|
|
' ' ReadOnly Property Titulo As String
|
|
' ReadOnly Property NombreTablaBase As String
|
|
|
|
' ' Sub EstableceAplicacion(ap As Aplicacion)
|
|
' Function ObtienePermisos() As Permisos
|
|
' ' Function Obtiene_ucControlBusqueda() As UserControl
|
|
|
|
'End Interface
|
|
|