Imports DevExpress.Xpf.Editors.Helpers Imports DevExpress.Xpf.Editors.Validation Imports DevExpress.Xpf.Core Imports DevExpress.Xpf.Docking Public Class ErrorValidacion Public id As String Public Objeto As Object Public ErrorContent As Object Public Excepcion As Exception Public Tipo As DevExpress.XtraEditors.DXErrorProvider.ErrorType Public Sub New(id As String, Objeto As Object, ErrorContent As Object, excepcion As Exception, tipo As DevExpress.XtraEditors.DXErrorProvider.ErrorType) Me.id = id Me.Objeto = Objeto Me.ErrorContent = ErrorContent Me.Excepcion = excepcion Me.Tipo = tipo End Sub 'Public Sub New(Objeto As Object, ErrorContent As Object, excepcion As Exception, tipo As DevExpress.XtraEditors.DXErrorProvider.ErrorType) ' Me.id = Objeto.name ' Me.Objeto = Objeto ' Me.ErrorContent = ErrorContent ' Me.Excepcion = excepcion ' Me.Tipo = tipo 'End Sub End Class Public Class ErroresValidacion Public Errores As New List(Of ErrorValidacion) ' Private ApCabLin As ApCabLin Private PanelErrores As LayoutPanel Public ReadOnly Property Count As Integer Get Return Errores.Count End Get End Property 'Public Sub New(apcablin As ApCabLin) ' Me.ApCabLin = apcablin 'End Sub Public Sub New(PanelErrores As LayoutPanel) Me.PanelErrores = PanelErrores End Sub Public Sub AgregaError(ErrorValidacion As ErrorValidacion, e As DevExpress.Xpf.Editors.ValidationEventArgs) Try Dim ev = (From er In Errores Select er Where er.id = ErrorValidacion.id) If ev.Count = 0 Then Errores.Add(ErrorValidacion) Else ev.First.Objeto = ErrorValidacion.Objeto ev.First.ErrorContent = ErrorValidacion.ErrorContent ev.First.Excepcion = ErrorValidacion.Excepcion ev.First.Tipo = ErrorValidacion.Tipo End If MuestraErrores() If (e Is Nothing OrElse e.IsValid) Then If ErrorValidacion.Objeto IsNot Nothing Then BaseEditHelper.SetValidationError(ErrorValidacion.Objeto, New BaseValidationError(ErrorValidacion.ErrorContent, ErrorValidacion.Excepcion, ErrorValidacion.Tipo)) Else If Not e.IsValid Then e.SetError(ErrorValidacion.ErrorContent, ErrorValidacion.Tipo) End If End If Catch ex As Exception DXMessageBox.Show(ex.Message, "Error") End Try End Sub Public Sub EliminaError(id As String) Try Dim ev = (From er In Errores Select er Where er.id = id) If ev.Count > 0 Then BaseEditHelper.SetValidationError(ev.First.Objeto, Nothing) Errores.Remove(ev.First) If Errores.Count = 0 AndAlso PanelErrores.Visibility <> Visibility.Hidden Then PanelErrores.GetDockLayoutManager.DockController.Hide(PanelErrores) PanelErrores.Visibility = Visibility.Hidden Else RellenaErrores() End If End If Catch ex As Exception DXMessageBox.Show(ex.Message, "Error") End Try End Sub Public Sub LimpiarErrores(Patron As String) Try Dim i As Integer Dim ev As ErrorValidacion For i = Errores.Count - 1 To 0 Step -1 ev = Errores(i) If Errores(i).id.ToLower.StartsWith(Patron.ToLower) Then If Not ev.Objeto Is Nothing Then BaseEditHelper.SetValidationError(ev.Objeto, Nothing) End If Errores.Remove(ev) End If Next If Errores.Count = 0 AndAlso PanelErrores.Visibility <> Visibility.Hidden Then PanelErrores.GetDockLayoutManager.DockController.Hide(PanelErrores) PanelErrores.Visibility = Visibility.Hidden End If Catch ex As Exception DXMessageBox.Show(ex.Message, "Error") End Try End Sub Friend Sub LimpiarErrores(Optional SoloCritical As Boolean = True) Try Dim i As Integer Dim ev As ErrorValidacion For i = Errores.Count - 1 To 0 Step -1 If Not SoloCritical OrElse Errores(i).Tipo = DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical Then ev = Errores(i) If Not ev.Objeto Is Nothing Then BaseEditHelper.SetValidationError(ev.Objeto, Nothing) End If Errores.Remove(ev) End If Next If PanelErrores.Visibility <> Visibility.Hidden Then PanelErrores.GetDockLayoutManager.DockController.Hide(PanelErrores) PanelErrores.Visibility = Visibility.Hidden End If Catch ex As Exception DXMessageBox.Show(ex.Message, "Error") End Try End Sub Sub MuestraErrores() Try RellenaErrores() Dim dm = PanelErrores.GetDockLayoutManager dm.DockController.Dock(PanelErrores) PanelErrores.Visibility = Visibility.Visible Catch ex As Exception DXMessageBox.Show(ex.Message, "Error") End Try End Sub Sub RellenaErrores() Dim ecvs As New CollectionViewSource Dim le = (From er In Errores Select er.ErrorContent).ToList PanelErrores.DataContext = le End Sub End Class