FoxPro/Visual FoxPro - Localizar un form y ponerlo en primer plano

 
Vista:
sin imagen de perfil

Localizar un form y ponerlo en primer plano

Publicado por Ernesto Hernandez (4623 intervenciones) el 19/06/2007 22:58:19
VFP tiene en el objeto '_Screen' una matriz que hace referencia a cada uno de los forms abiertos, te tal forma que se puede acceder a dicha matriz. Basándome en esto escribí el siguiente código:

LOCAL lix,lcObjeto,lcTextp
lix = 0
lcObjeto = "Objeto"
DO WHILE !EMPTY(lcObjeto)
lix = lix +1
lcObjeto = "_screen.forms(" + ALLTRIM(STR(lix)) + ")"
IF TYPE(lcObjeto) = "O"
lcTextp = &lcObjeto..CAPTION
IF lcTextp = "Archivo de facturas de compras"
&lcObjeto..ALWAYSONTOP = .T.
&lcObjeto..ALWAYSONTOP = .F.
&lcObjeto..ACTIVATE
&lcObjeto..pagfrm1.page1.SETFOCUS
ENDIF
ELSE
lcObjeto = ""
ENDIF
ENDDO

La variable lcObjeto es la que nos va dar acceso al formulario, inicialmente le pongo cualquier valor para que se ejecute el 'DO WHILE ...'. Con cada pasada el 'DO WHILE ...', le incremento la variable 'lix' que es la que nos sirve para indicar cual es el formulario deseado. Pasamos a la variable 'lcTextp' el Caption de cada Form de la matriz y cuando localizamos el que queremos, directamente le cambiamos la propiedad AlwaysOnTop = .T., de esta forma pasa a primer plano, y luego lo ponemos a su valor verdadero. De todas formas por si acaso en el evento 'Activate' del Form tambien tengo puesto el AlwaysOnTop = .F. por si acaso.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder