Me vi en la necesidad de saber si un form esta abierto, asi que cree esta funcion para ello.
Funcion
'Devuelve un valor booleano que indica si el form esta abierto
Public Function EstaAbierto(ByVal Myform As Form)
Dim objForm As Form
Dim blnAbierto As Boolean = False
blnAbierto = False
For Each objForm In My.Application.OpenForms
If (Trim(objForm.Name) = Trim(Myform.Name)) Then
blnAbierto = True
End If
Next
Return blnAbierto
End Function
Implementacion
'frmNuevaGuiaAerea es el nombre del form
If EstaAbierto(frmNuevaGuiaAerea) Then
txtGuiaAerea.Enabled = False
Else
txtGuiaAerea.Enabled = True
End If
En la condicion hago uso de la funcion que EstaAbierto, si duevuelve un valor true entonces se deshabilitara el control txtGuiaAerea, sino se activara.
Este codigo es equivalente al anterior:
txtGuiaAerea.Enabled =Not EstaAbierto(frmNuevaGuiaAerea)
E e e eso es todo amigos.
Saludos!!
Funcion
'Devuelve un valor booleano que indica si el form esta abierto
Public Function EstaAbierto(ByVal Myform As Form)
Dim objForm As Form
Dim blnAbierto As Boolean = False
blnAbierto = False
For Each objForm In My.Application.OpenForms
If (Trim(objForm.Name) = Trim(Myform.Name)) Then
blnAbierto = True
End If
Next
Return blnAbierto
End Function
Implementacion
'frmNuevaGuiaAerea es el nombre del form
If EstaAbierto(frmNuevaGuiaAerea) Then
txtGuiaAerea.Enabled = False
Else
txtGuiaAerea.Enabled = True
End If
En la condicion hago uso de la funcion que EstaAbierto, si duevuelve un valor true entonces se deshabilitara el control txtGuiaAerea, sino se activara.
Este codigo es equivalente al anterior:
txtGuiaAerea.Enabled =Not EstaAbierto(frmNuevaGuiaAerea)
E e e eso es todo amigos.
Saludos!!
Muchas Gracias
ResponderEliminarMuy buen código me sirvió gracias por compartirlo.
ResponderEliminarPor nada, que bueno que les sirvió :D.
ResponderEliminarBUENAS MUY INTERESANTE PERO ME PODRIAS AYUDAR MIRA TE EXPLICO TENGO UNA APLIACAION QUE LO VAN ABRIR VARIAS PERSONAS A LA VEZ Y QUIERO SABER SI UN FORMULARIO DETERMINADO ESTA ABIERTO PARA NO PERMITIRLO ABRIR MAS DE UNA VEZ PERO SOLAMENTE A ALGUNOS FORMULARIOS .POR EJEMPLO SI DOS PERSONAS ABREN EL MISMO FORMULARIO CANCELACION DE FACTURAS Y LOS DOS COMIENZAN A CANCELAR SUS FACTURAS Y POR MALA SUERTE COMIENZAN A CANCELAR AL MISMO CLIENTE LOS SALDO VAN A VARIAR POR FAVOR AYUDAME GRACIAS
ResponderEliminarVeras, para controlar eso, puedes hacerlo, por medio de la base de datos, generalmente para estos casos puedes usar una columna que te controle el número de actualizaciones que haces a cada registro, cuando abras la factura a modificar tomas el numero verificador, y guardas el numero verificador, si el numero verificador es distinto al numero verificador cuando abriste la factura, entonces no permite guardar.
ResponderEliminarGracias esta si me funco le puse para que me lo enfoque...
ResponderEliminarMuchas gracias por compartir tu conocimiento
ResponderEliminarme sirvió a la perfección
Una duda....tengo un form que es un teclado y lo mando llamar desde un principal,pero al realizar la llamada al teclado necesito saber si ya estaba abierto, la llamada a tu funcion la uso en el form principal, pero cuando pongo el nombre del form que es teclado por ejemplo:
ResponderEliminarIf EstaAbierto(teclado) Then.... me marca error que teclado no ha sido declarado, gracias por tu ayuda
De nuevo Gracias ya esta resuelto....
Eliminarexcelente, lo necesitaba
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarMuchas Gracias...
ResponderEliminarExcelente aporte, Muchas gracias!!
ResponderEliminarMuy buen post, solo una cosita, cuando declaras una variable iniciada, no es necesario volver a darle valor, puede que no afecte en mucho pero ensucia el código y lo hace mas largo innecesariamente.
ResponderEliminar