FoxPro/Visual FoxPro - Saber si una ventana está minimizada y restaurarla

   
Vista:

Saber si una ventana está minimizada y restaurarla

Publicado por Juan (71 intervenciones) el 11/12/2013 17:51:59
Buenas tardes, tengo una ventana que muestra las facturas de los clientes y en otra ventana muestro los pedidos de esos clientes, mi consulta es que yo desde una ventana puedo ir desde un pedido a esa factura y me abre la ventana bien y me posiciono correctamente, y desde esta ventana puedo ir otra vez a la del pedido, pero lo que hace es cada vez que quiero ir me abre una ventana nueva con el pedido o la factura.

Lo que quiero es que si yo digo de ir a ver una factura y la ventana de facturas ya está abierta que no me aba otra si no que me restaure la que tengo abierta ya y me posicione en ese documento.

No se si me explico, lo que no quiero es tener multitud de ventanas abiertas en mi barra de tareas.

Un saludo.
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

Saber si una ventana está minimizada y restaurarla

Publicado por Saul (676 intervenciones) el 11/12/2013 22:58:06
Pon tu codigo..

y vemos que estas haciendo y asi puedo ver que haces y poder determinar eso que tu quieres.

Saludos

sha
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Saber si una ventana está minimizada y restaurarla

Publicado por Juan (71 intervenciones) el 12/12/2013 08:57:56
simplemente hago:

do form docu with 'factura'

o

do form docu with 'ticket'

Cada vez que hago esto me abre una nueva ventana de tickets o facturas.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Saber si una ventana está minimizada y restaurarla

Publicado por Fidel José (558 intervenciones) el 12/12/2013 12:40:23
Lo que puedes hacer es utilizar la cláusula NAME del comando, junto con LINKED.

Release odocu
public odocu
do form docu with "Factura" NAME odocu LINKED

Luego, dependerá de cómo trabaja el formulario "Docu" para que consigas lo que buscas, por ejemplo
a) Creaste un método en el formulario que permite mostrar lo que quieres, o bien ese método reside en otra parte
if vartype(odocu)="O"
odocu.show() && activa el formulario "Docu" que se instancia como odocu
&& acá tal vez tengas que ejecutar un método del form docu que permite mostrar lo que quieres
odocu.MiMetodo() && si el método reside en otra parte, cambiar la referencia.
else
* El form no estaba instanciado.
release odocu
public odocu
do form docu with "Factura" LINKED
endif

b) El formulario Docu se implementa a través del Init del form
Release odocu && al eliminarse la variable del form, este se elimina por la clausula LINKED
public odocu && crea nuevamenta la variable (tiene que ser pública)
do form docu with "Factura" NAME odocu LINKED

Al final del proceso debes liberar la variable pública. Si cierras el form Docu con QueryUnLoad o Release, la variable odocu subsiste, aunque toma un valor null.
RELEASE ODOCU

Nota:
De un formulario puedes tener distintas instancias que se ejecutan al mismo tiempo. Por ejemplo, un form que hace de browser para tablas de clientes, proveedores, productos, empleados, etc.
Para que funcione correctamente, en el código del formulario no debe haber variables públicas, ni utilizarse propiedades de Screen como si fueran variables. Todo debe construise en base a Thisform (o This) según la posición del código. Las variables de paso que puedas utilizar deben declararse como LOCAL. Esto evita cualquier confusión (o sea, encapsula correctamente el código).

Suponte que tenemos en un formulario 3 botones (commandbutton) con el código que detallo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
*Boton1.Click
RELEASE GAFORM
PUBLIC ARRAY gaform(3)
* Creará tres instancias del formulario FMaestro (browser de tablas) mostrando en cada instancia la tabla indicada en el parámetro.
DO FORM ..\forms\fmaestro WITH "CLIENTES" NAME GAFORM[1] linked
DO FORM ..\forms\fmaestro WITH "PROVEDOR" NAME gaform[2] linked
DO FORM ..\forms\fmaestro WITH "PERSONAL" NAME GAFORM[3] linked
 
* Por ejemplo, si quieres ocultar las tres instancias
For i=1 to Alen(gaform)
      gaform[i].Hide()
endfor
 
* Si quieres seriar el top de cada instancia
nTop=10
For i=1 to alen(gaform)
       gaForm[i].top=nTop
       nTop=nTop+24
ENDFOR
 
 
*Boton2 Click
* Decido mostrar el formulario que tiene la tabla "PROVEDOR", instanciado como gaform[2]
IF VARTYPE(GAFORM[2])="O"
	GAFORM[2].SHOW()
ELSE
	MESSAGEBOX("No objeto")
ENDIF
 
*Boton3 click
* De un solo golpe cierro las tres instancias del mismo formulario
release gaform
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar