sábado, 8 de noviembre de 2014

Control de Evento de un DataGridView en VB

Si te ha pasado que quieres controlar los evento de un Tipo de Columna del DataGridView tales como un Button, CheckBox, ComboBox, etc. aqui tienes una ayuda.
Es una aplicacion que controla eventos personalizados lo unico que se necesita es usarlos aqui les dejo el Codigo de la aplicacion que utiliza estos eventos que menciono para que sepan como usarlos.


este es el Diseño y aqui el Codigo Documentado 

lunes, 27 de octubre de 2014

Evaluando Expresiones Matematicas con Jep.NET en VB

 
Hola a menuda pasa que queremos evaluar expresiones matemáticas si bien es cierto .NET ya contiene funciones integradas que nos permiten realizar cálculos Matemáticos. Pero les pongo un escenario que me paso y bueno mi solución fue utilizar JEP:

Escenario:

Se necesita evaluar una fórmula que está dentro de una cadena ejemplo “2X+8+log(123)” donde x es una variable que obtendrá un valor dinámicamente. Al ser muchas fórmulas se necesita que estas fórmulas se almacenen en una BD SQL por lo que tendré n Formulas.  Este escenario se aplica para un Laboratorio XXX dedicado a analizar muestras.

Con .NET seria complejo intentar analizar una cadena y evaluarla como una formula,  con Jep esto es posible.

Me resulto útil a mí y creo que compartiré un poco de lo aprendido.Antes que nada descarguen la DLL desde la página oficial http://www.singularsys.com/jep.net/
Después de eso crearemos una App Windows y Diseñaremos el Siguiente Formulario

 

Y Como ya tenemos la Dll la agregamos a nuestro proyecto como referencia
Click Derecho en Nuestro Proyecto>>>Agregar Referencia

 
 
Jep.NET es Sensible a las Mayusculas y Minusculas asi que hay que tener cuidado al agregar variable ya que para Jep.net una X en mayuscula es diferente de una x en minuscula, quiza para nosotros sea lo mismo pero cuidado con esto lo recomendable seria mandar toda la expresion convertida en minuscula.
 
Importamos el NameSpace
Imports SingularSys.Jep
Imports SingularSys.Jep.Types
1.- Operaciones Simples
Aqui realizaremos operaciones simples tales como (Sumar, restar, etc)
ya que nosotros evaluaremos una cedena el usuario sera quien ingrese la expresion a evaluar, claro que por supuesto validando los caracteres permitidos. Para realizar todo esto solo hara falta un TextBox y su Evento KeyPress y cuando presione ENTER ejecutaremos la expresion ingresada.
 






 
2.- Formulas Matematicas
Aqui aplicaremos formulas cada variable debe tener un valor de lo contrario nos podria botar error. Jep detecta las variables en su metodo Parse pero somos nostros quien le debemos asignar un valor a esa variable en este caso nosotros ya definimos por anticipado las variables y le damos un valor.

3.- Funciones. aplicaremos el uso de funciones Jep a modo de ejemplo solo eh listado algunas de las muchas funciones de Jep, estas funciones las eh listado en un ListBox y al momento de Hacer Click En agregar se Mustra en el TextBox las funciones en su mayoria son en minuscula si desean obtener mas informacion acerca de las funciones disponibles pueden consultar Funciones Jep.NET
 
 
 
Proyecto Desarrollado en VB 2010 Si desean el Codigo Fuente lo pueden descargar de Aqui.
 
 
 
 
 

viernes, 24 de octubre de 2014

CheckBox, ComboBox, Button dentro de un DatagridView en VB


Hola, a todos a menudo me ha pasado que quiero manejar eventos de un DataGridView y/o personalizarlos como el ComboBoxSelectedIndex, CheckedChanged y ButtonClick dentro de un DatagridView asi que hice una librería (DLL) para manejar esos tres eventos.

Basándome en un ejemplo
 







Como ven en esta Grilla utilizo Diferentes Tipo de Columnas y para cada una manejo un evento diferente para realizar un proceso distinto
·         El Boton solo me abre un Cuadro de Dialogo para seleccionar un archivo dependiendo de la extensión

·         El ComboBox lista todos los formatos permitidos EJEMPLO(.TXT, .XLSX, ETC)

·         El CheckBox indica si se debe visualizar la ruta o no.
Hasta ai tenemos el Diseño, como ya tenemos la DLL en este Post les Explicare a cómo utilizarlo Primero deben descargar la DLL que estará adjunto a este Post después la agregan como referencia a su proyecto espero no tener que explicar cómo agregar una referencia.
Descargar DLL
Una vez hecho esto


Ahora como utlizamos los eventos?, primero debemos definir el metodo que se ejecutara al dispararse Cierto Evento.

Por ejemplo yo quiero que el siguiente metodo se ejecute al Darle un Check a mi CheckBOX
Sub VisualizarRuta(ByVal celda As DataGridViewCheckBoxCell, ByVal column As DataGridViewCheckBoxColumn)

If celda.Value = True Then
 If String.IsNullOrEmpty(Ruta) Then

MsgBox("No Se ah Seleccionado el Archivo", MsgBoxStyle.Information, "Ruta...")

Exit Sub
 End If

dgvFiles.Rows(celda.RowIndex).Cells(0).Value = RutaElseIf celda.Value = False Then

dgvFiles.Rows(celda.RowIndex).Cells(0).Value = "*************************"
 End If

End Sub

Como se habran dado cuenta mi metodo recibe 2 parametros de entrada para poder ejecutarse estos parametros son necesarios espacificarlos independiente de si se hace uso de ellos o no. Quizas se pregunten para que???

esos parametros son necesarios para el evento que queremos si te fijas bien el evento que deseamos ejecutar tiene esos mismo parametros es por eso.

Una vez ya definidos nuestro metodo lo enlazamos al evento que necesitamos.




Pero antes de eso una de las Cosas más Importantes está en el Constructor se debe crear una instancia en el Constructor después de que se llame al método del diseñador de lo contrario nos botara error ya que nuestra grilla aun no existiría, se puede crear una instancia después de la llamada al Diseñador pero antes no, es recomendable que sea en el constructor.
Primero definimos nuestras Variables Globales


 
Dim dt As New DataTable
Dim obj As DatagridView_Events.DatagridView_Events
Dim myExtension As String = String.Empty
Dim DescExtenxion As String = String.Empty
Dim Ruta As String = String.Empty

Declaramos un Constructor y crea la instancia pasando como parametro nuestro datagridview

Sub New()
' Llamada necesaria para el diseñador.
InitializeComponent()
'CREAMOS UNA INSTANCIA PASANDO COMO PARAMETRO EL DATAGRIDVIEW
obj = New DatagridView_Events.DatagridView_Events(Me.dgvFiles)
' Agregue cualquier inicialización después de la llamada a InitializeComponent().
Aqui Enlazamos los eventos que necesitamos en nuestro caso seria el evento CheckBox_CheckedChanged_Datagridview que nos provee la DLL este evento tiene 2 parametros que mencionamos anteriormente.
Como nuestro metodo ya tiene esos 2 parametros podemos enlazarlo de la siguiente forma:

AddHandler <EVENTO>, AddressOf <METODO>
AddHandler obj.CheckBox_CheckedChanged_Datagridview, AddressOf VisualizarRuta


Enlazamos los Eventos que utilizaremos Que nos provee la DLL Cada Vez que se Dispare el Evento el metodo se ejecutara    Sintaxis para enlazar Eventos:
 AddHandler <EVENTO>, AddressOf <METODO>     
NOTA: Estos eventos son del DatagridView que se paso como Parametro   Si se tiene mas de 1 Datagridview Crear otro objeto o  Puede Utilizar el Metodo <Inicialisar_Events> para eliminarr la instancia anterior  y agregar una nueva con el DataGridView que se pase como Parametro
       
         
En el Codigo Anterior se define los metodos que se ejecutaran en cada evento, Es importante crear una nuava instacia de la siguiente forma
obj =

New DatagridView_Events.DatagridView_Events(Me.dgvFiles)

Esta linea se debe poner Antes de enlazar los eventos.
 
'Remueve lso Eventos que se esten utilizando por el Objeto
 'Los eventos del Checked, ComboBox, Button del DatagridView no estaran disponibles
 'para volver a usarlos tendra que utilizar el metodo <Inicialisar_Events(<DATAGRIDVIEW>)


obj.Finalizar_Events() 
'para volver a usarlos tendra que utilizar el metodo <Inicialisar_Events(<DATAGRIDVIEW>)
obj.Inicialisar_Events(Me.dgvFiles)


Este Proyecto FUE DESARROLLADO UTILLIZANDO VB 2010
Descargar Proyect