Imports System.Data.Entity Imports DevExpress.Xpf.Core.ServerMode 'Imports bdGestionFidas Imports DevExpress.Mvvm Imports DevExpress.Xpf.Grid Imports tsWPFCore Imports tsUtilidades.Extensiones Imports DevExpress.Xpf.Core Imports DevExpress.XtraReports.UI Imports System.IO Imports DevExpress.Xpf.Printing Imports Microsoft.Win32 Imports System.Data.Objects Imports System.Data.Objects.DataClasses Imports DevExpress.Data Public Class dxwDiseñoColumnas ' Private bd As bdGestionFidas.cacoaentities Private _Codigo As String Private _Abrir As String Public _Descripcion As String Public _TodosLosUsuarios As String Public _IdDiseño As Integer? Dim _ld As List(Of DiseñoGuardado) Public Delegate Sub EliminarDiseño(idDiseño As Integer) Private _DelegadoEliminarDiseño As EliminarDiseño Private Sub dxwAgregar_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded Try 'bd = bdGestionFidas.FIDASEntities.NuevoContexto 'Dim lc = (From fc In bd.ficherosconfiguracion Where fc.Descripcion IsNot Nothing AndAlso fc.Descripcion <> "" And fc.Codigo = _Codigo And (fc.idUsuario.HasValue = False OrElse fc.idUsuario = bdGestionFidas.Utilidades.dsc.idUsuario) Select New DiseñoGuardado With {.Descripcion = fc.Descripcion, .TodosLosUsuarios = (fc.idUsuario.HasValue = False)}).ToList 'Me.gc.ItemsSource = lc Me.teDescripcion.EditValue = _Descripcion Me.cbTodosUsuarios.IsChecked = _TodosLosUsuarios Me.gc.ItemsSource = _ld If _Descripcion <> "" AndAlso _ld.Any(Function(x) x.Descripcion = _Descripcion And x.TodosLosUsuarios = _TodosLosUsuarios) Then Me.gc.CurrentItem = _ld.First(Function(x) x.Descripcion = _Descripcion And x.TodosLosUsuarios = _TodosLosUsuarios) End If Catch ex As Exception DXMessageBox.Show(ex.Message, "Error") Finally Try DXSplashScreen.Close() Catch End Try End Try End Sub 'Private Sub Aceptar_Click(sender As Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs) Public Sub New(Codigo As String, Descripcion As String, TodosUsuarios As Boolean, Abrir As Boolean, ld As List(Of DiseñoGuardado), FuncionEliminarDiseño As EliminarDiseño) ' Llamada necesaria para el diseñador. InitializeComponent() If Abrir Then Me.lgOpcionesGuardado.Visibility = System.Windows.Visibility.Hidden Me.btAceptar.Content = "Abrir Diseño" End If _Abrir = Abrir _Codigo = Codigo _Descripcion = Descripcion _TodosLosUsuarios = TodosUsuarios _ld = ld _DelegadoEliminarDiseño = FuncionEliminarDiseño Dim cm As New ContextMenu Dim mi As New MenuItem() mi.Tag = "MI_ELIMINAR_DISEÑO" mi.Header = "Eliminar Diseño" AddHandler mi.Click, AddressOf _EliminarDiseño cm.Items.Add(mi) Me.gc.ContextMenu = cm ' Agregue cualquier inicialización después de la llamada a InitializeComponent(). End Sub Private Sub btAceptar_Click(sender As Object, e As RoutedEventArgs) Try Dim bcancelar As Boolean If _Abrir Then Dim dg = DirectCast(Me.gc.CurrentItem, DiseñoGuardado) _Descripcion = dg.Descripcion _TodosLosUsuarios = dg.TodosLosUsuarios _IdDiseño = dg.idDiseño Else _Descripcion = teDescripcion.EditValue If _Descripcion = "" Then Throw New Exception("La descripción es obligatoria") Dim ld = DirectCast(Me.gc.ItemsSource, List(Of DiseñoGuardado)) If ld.Any(Function(x) x.Descripcion = _Descripcion And x.TodosLosUsuarios = cbTodosUsuarios.IsChecked.Value) Then bcancelar = (DXMessageBox.Show("¿Desea sobreescribir el diseño de " & _Descripcion & "?", "Atención", MessageBoxButton.YesNo) = MessageBoxResult.No) If Not bcancelar Then _IdDiseño = ld.First(Function(x) x.Descripcion = _Descripcion And x.TodosLosUsuarios = cbTodosUsuarios.IsChecked.Value).idDiseño Else If cbTodosUsuarios.IsChecked.Value Then If ld.Any(Function(x) x.Descripcion = _Descripcion) Then bcancelar = (DXMessageBox.Show("¿Desea sobreescribir el diseño de " & _Descripcion & " y establecerlo como público para todos los usuarios?", "Atención", MessageBoxButton.YesNo) = MessageBoxResult.No) If Not bcancelar Then _IdDiseño = ld.First(Function(x) x.Descripcion = _Descripcion).idDiseño End If Else If ld.Any(Function(x) x.Descripcion = _Descripcion) Then bcancelar = (DXMessageBox.Show("¿Desea sobreescribir el diseño de " & _Descripcion & " y establecerlo como privado para este usuario?", "Atención", MessageBoxButton.YesNo) = MessageBoxResult.No) If Not bcancelar Then _IdDiseño = ld.First(Function(x) x.Descripcion = _Descripcion).idDiseño End If End If End If _TodosLosUsuarios = cbTodosUsuarios.IsChecked End If If Not bcancelar Then Me.DialogResult = True Me.Close() End If Catch ex As Exception DXMessageBox.Show(ex.Message, "Atención") End Try End Sub Private Sub btCancelar_Click(sender As Object, e As RoutedEventArgs) Me.DialogResult = False Me.Close() End Sub 'Private Sub dxwDiseñoColumnas_Unloaded(sender As Object, e As RoutedEventArgs) Handles Me.Unloaded ' bd.Connection.Close() 'End Sub Private Sub gc_CurrentItemChanged(sender As Object, e As CurrentItemChangedEventArgs) Handles gc.CurrentItemChanged Dim dg = DirectCast(Me.gc.CurrentItem, DiseñoGuardado) If dg IsNot Nothing Then Me.teDescripcion.EditValue = dg.Descripcion Me.cbTodosUsuarios.IsChecked = dg.TodosLosUsuarios End If End Sub Private Sub _EliminarDiseño(sender As Object, e As RoutedEventArgs) Dim dg = DirectCast(Me.gc.CurrentItem, DiseñoGuardado) _DelegadoEliminarDiseño.Invoke(dg.idDiseño) tv.DeleteRow(Me.tv.FocusedRowHandle) End Sub End Class Public Class DiseñoGuardado Public Property idDiseño As Integer? Property Descripcion As String Property TodosLosUsuarios As Boolean End Class