Programación General > Visual Basic 6.0 e inferiores
Trabajando Con Formularios
(1/1)
patitofeo:
:hola:
Le he dado la vuelta al MSDN y no consigo resolver un par de problemillas:
-En primer lugar no se como puedo conseguir que un formulario mantenga el Foco hasta que no se produzca un evento como por ejemplo pulsar un boton.
Es un formulario que debe recoger una serie de valores de configuracion y me gustaria que no se pasara el foco a otros formularios hasta que no pulse el boton de aceptar o cierre el formulario (cancele)
-Por otro lado también he estado intentando conocer los formularios hijos que tengo cargados en un formulario MDIForm.
Es decir, la aplicacion carga el formulario MDI padre, y dependiendo de los botones que pulse en una barra de herramientas ira cargando (load) otros formularios que tienen activa la propiedad MDIChild. Estos formularios podran ir cerrandose (unload) o recargandose de nuevo todas las veces que se quiera.
Me gustaria poder saber desde otro, si un formulario esta cargado (load) o descargado (unload) en un momento dado.
Espero haberme explicado con claridad y que podais ayudarme .
Un saludo y muchisimas gracias por vuestra ayuda e interes
DrakerDG:
:comp: No muy te entendí pero revisa los ejemplos que adjunto a este post (MDIForm.exe) descomprimelo. Son dos ejemplos de proyectos con MDI Forms. En el proyecto Texted utiliza el comanto Forms.Count para saber cuantos formularios están aviertos. :suerte:
jodijo5:
por lo que fui investigando, eso tiene algunas limitaciones, solo puedes detectar que se ah perdido el foco pero con respecto a los formularios de tu aplicacionm para que nunca pierdas el foco de tu aplicacion tienes que ejecutar el formulario llamandolo desde otro asi:
--- Código: Text ---nuncamepierdas.Show vbModal, Me o te doy otra solucion:
usando el api "findwindow" y "setfocus"
--- Citar ---Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function SetFocus Lib "user32" (ByVal hwnd As Long) As Long
--- Fin de la cita ---
; construyes una aplicacion aparte o si quieres ahi mismo que cada intervalo de tiempo determinado le ponga el foco a tu aplicacion:
en el codigo del formulario
--- Código: Text --- public sub timer1_timer()dim x as longx=findwindow(vbnullstring,"el titulo del formulario de mi aplicacion")setfocus xend sub en un modulo
--- Código: Text --- Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPublic Declare Function SetFocus Lib "user32" (ByVal hwnd As Long) As Long
no lo eh probado aun espero que funcione, si tu formulario es formulario hijo necesitas el nombre de la clase tambien se busca por medio de apis pero eso nose.
patitofeo:
Gracias a los dos.
La Coleccion Forms la encontre casi nada mas colocar este Post y me sirve perfectamente para conocer los formularios que estan cargados en un momento determinado. Gracias DrakerDG
En cuanto al parametro opcional [Modal] del Metodo Show es perfecto.
No lo conocia y es exactamente lo que andaba buscando. No me di cuenta cuando estube dandome de cabezazos con la ayuda. No he probado las funciones de la API ya que mostrando un formulario como modal todo funciona tal y como queria. Muchas gracias Jodijo5.
:gracias:
Navegación
Ir a la versión completa