- Se traslada versión a git desde tfs

This commit is contained in:
2025-05-30 12:06:37 +02:00
commit b93d857a6f
103 changed files with 86476 additions and 0 deletions

185
modExtensiones.vb Normal file
View File

@@ -0,0 +1,185 @@
Imports System.Data.Objects.DataClasses
Imports System.Data.Objects
Imports DevExpress.Xpf.Grid
Imports System.Data.Entity
Imports System.Data.Entity.Infrastructure
Imports System.Data
Imports System.IO
Imports System.Data.Entity.Core.Objects.DataClasses
Imports System.Data.Entity.Core.Objects
Imports System.Data.Entity.Core
Imports tsWPFCore.tsControles
Imports System.Data.Entity.Core.Common.Utils
Imports Microsoft.EntityFrameworkCore
Public Module modExtensiones
<System.Runtime.CompilerServices.Extension()>
Public Function ObtieneHijoDeTipo(Of T As DependencyObject)(depObj As DependencyObject) As T
If depObj Is Nothing Then
Return Nothing
End If
For i As Integer = 0 To VisualTreeHelper.GetChildrenCount(depObj) - 1
Dim child = VisualTreeHelper.GetChild(depObj, i)
Dim result = If(TryCast(child, T), ObtieneHijoDeTipo(Of T)(child))
If result IsNot Nothing Then
Return result
End If
Next
Return Nothing
End Function
<System.Runtime.CompilerServices.Extension()>
Public Sub ObtieneHijosDeTipo(Of T As DependencyObject)(depObj As DependencyObject, ByRef lista As List(Of T))
If depObj IsNot Nothing Then
If lista Is Nothing Then lista = New List(Of T)
For i As Integer = 0 To VisualTreeHelper.GetChildrenCount(depObj) - 1
Dim child = VisualTreeHelper.GetChild(depObj, i)
Dim hijo = TryCast(child, T)
If hijo IsNot Nothing Then
lista.Add(hijo)
Else
ObtieneHijosDeTipo(Of T)(child, lista)
End If
Next
End If
End Sub
<System.Runtime.CompilerServices.Extension()>
Public Function ObtienePadreDeTipo(Of T As DependencyObject)(depObj As DependencyObject) As T
If depObj Is Nothing Then
Return Nothing
End If
Dim parent As DependencyObject
Do
parent = VisualTreeHelper.GetParent(depObj)
If Not parent Is Nothing Then
Dim result = If(TryCast(parent, T), ObtienePadreDeTipo(Of T)(parent))
If result IsNot Nothing Then
Return result
End If
End If
Loop Until parent Is Nothing
Return Nothing
End Function
'<System.Runtime.CompilerServices.Extension()>
'Public Function ObtieneContexto(Entidad As IEntityWithRelationships) As ObjectContext
' If Entidad Is Nothing Then Throw New ArgumentNullException
' Dim relationshipmanager = Entidad.RelationshipManager
' Dim relatedend = relationshipmanager.GetAllRelatedEnds.FirstOrDefault
' If relatedend Is Nothing Then Throw New Exception("No relationships found")
' Dim query As ObjectQuery = relatedend.CreateSourceQuery
' If query Is Nothing Then Throw New Exception("The Entity is Detached")
' Return query.Context
'End Function
<System.Runtime.CompilerServices.Extension()>
Public Function GetDataRowHandles(grid As GridControl) As List(Of Integer)
Dim rowHandles As New List(Of Integer)()
For i As Integer = 0 To grid.VisibleRowCount - 1
Dim rowHandle As Integer = grid.GetRowHandleByVisibleIndex(i)
If grid.IsGroupRowHandle(rowHandle) Then
If Not grid.IsGroupRowExpanded(rowHandle) Then
rowHandles.AddRange(GetDataRowHandlesInGroup(grid, rowHandle))
End If
Else
rowHandles.Add(rowHandle)
End If
Next
Return rowHandles
End Function
Private Function GetDataRowHandlesInGroup(grid As GridControl, groupRowHandle As Integer) As List(Of Integer)
Dim rowHandles As New List(Of Integer)()
For i As Integer = 0 To grid.GetChildRowCount(groupRowHandle) - 1
Dim rowHandle As Integer = grid.GetChildRowHandle(groupRowHandle, i)
If grid.IsGroupRowHandle(rowHandle) Then
rowHandles.AddRange(GetDataRowHandlesInGroup(grid, rowHandle))
Else
rowHandles.Add(rowHandle)
End If
Next
Return rowHandles
End Function
Public Function ObtieneCampos(T As Type) As List(Of String)
Dim lp As New List(Of String)
Dim propiedades = T.GetProperties
For Each propiedad In propiedades.Where(Function(x) Not (x.PropertyType.Name.Contains("EntityReference") OrElse x.PropertyType.Name.Contains("EntityCollection") OrElse x.PropertyType.Name.Contains("EntityState") OrElse x.PropertyType.Name.Contains("EntityKey") OrElse (x.PropertyType.BaseType Is Nothing OrElse x.PropertyType.BaseType.Name = "EntityObject")))
lp.Add(propiedad.Name)
Next
Return lp
End Function
Public Sub AgregaTodosCampos(tsgrid As tsGridControl, T As Type, Visible As Boolean, Optional SoloLectura As Boolean = True)
Try
Dim lp = ObtieneCampos(T)
For Each p In lp
If Not tsgrid.Columns.Any(Function(x) x.FieldName = p) And p.ToLower <> "seleccionar" Then
Dim gc As New tsGridColumn
gc.FieldName = p
gc.IsSmart = True
gc.Visible = Visible
gc.ReadOnly = SoloLectura
tsgrid.Columns.Add(gc)
End If
Next
Catch ex As Exception
Throw New Exception(ex.Message, ex)
End Try
End Sub
<System.Runtime.CompilerServices.Extension()>
Public Function ObtieneImagen(ByVal source As UIElement, ByVal scale As Double, ByVal quality As Integer) As Byte()
Dim actualHeight As Double = source.RenderSize.Height
Dim actualWidth As Double = source.RenderSize.Width
Dim renderHeight As Double = actualHeight * scale
Dim renderWidth As Double = actualWidth * scale
Dim renderTarget As RenderTargetBitmap = New RenderTargetBitmap(CInt(renderWidth), CInt(renderHeight), 96, 96, PixelFormats.Pbgra32)
Dim sourceBrush As VisualBrush = New VisualBrush(source)
Dim drawingVisual As DrawingVisual = New DrawingVisual()
Dim drawingContext As DrawingContext = drawingVisual.RenderOpen()
Using drawingContext
drawingContext.PushTransform(New ScaleTransform(scale, scale))
drawingContext.DrawRectangle(Brushes.White, Nothing, New Rect(New Point(0, 0), New Point(actualWidth, actualHeight)))
drawingContext.DrawRectangle(sourceBrush, Nothing, New Rect(New Point(0, 0), New Point(actualWidth, actualHeight)))
End Using
renderTarget.Render(drawingVisual)
Dim jpgEncoder As JpegBitmapEncoder = New JpegBitmapEncoder()
jpgEncoder.QualityLevel = quality
jpgEncoder.Frames.Add(BitmapFrame.Create(renderTarget))
Dim _imageArray As Byte()
Using outputStream As MemoryStream = New MemoryStream()
jpgEncoder.Save(outputStream)
_imageArray = outputStream.ToArray()
End Using
Return _imageArray
End Function
'#Region "dbContext"
' <System.Runtime.CompilerServices.Extension()>
' Public Function GetEntityKey(Of T As Class)(ByVal context As DbContext, ByVal entity As T) As EntityKey
' Dim oc = (CType(context, IObjectContextAdapter)).ObjectContext
' Dim ose As ObjectStateEntry = Nothing
' If entity IsNot Nothing AndAlso oc.ObjectStateManager.TryGetObjectStateEntry(entity, ose) Then
' Return ose.EntityKey
' End If
' Return Nothing
' End Function
' <System.Runtime.CompilerServices.Extension()>
' Public Function GetEntityKey(Of T As Class)(ByVal context As DbContext, ByVal dbEntityEntry As DbEntityEntry(Of T)) As EntityKey
' If dbEntityEntry IsNot Nothing Then
' Return GetEntityKey(context, dbEntityEntry.Entity)
' End If
' Return Nothing
' End Function
'#End Region
End Module