FoxPro/Visual FoxPro - Problema con thisform.release

   
Vista:

Problema con thisform.release

Publicado por DanielVFP (12 intervenciones) el 26/11/2010 23:19:27
Hola a todos.
El caso es que tengo 3 form que se desencadena de la siguiente manera.-
Principal -> buscar -> encontrados
Si el producto encontrado es solo 1 esta todo bien porque no necesito
mostrar el form "encontrados", pero cuando la búsqueda da como resultado mas
de 1 artículo tengo que mostrar el form con el grid("encontrados") y al cerrar
este me encuentro nuevamente con el form "buscar" y lo correcto seria que al cerrar
"encontrados" me aparezca directamente el form "principal".-

¿Me podrían dar una mano con esto?

Saludos.
Daniel
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

RE:Problema con thisform.release

Publicado por xx (378 intervenciones) el 27/11/2010 02:25:17
*Para leer, seleccionar todo y pegar en la ventana del FOXPRO que se abre al ejecutar modi comm xx.txt
*desde la ventana de comandos

*Bueno te comento como yo lo hago no se si es la mejor forma pero bueno es la que se:

DO FORM FPRINCIPAL.SCX
...
*obs: se supone se inicia en formulario FPRINCIPAL y los demas quedan deshabilitados y ocultos

*FPRINCIPAL.INIT()
*creamos una referencia a un formulario alojado en una biblioteca VCX
SET CLASSLIB TO [BIBLIOTECA.VCX]
THISFORM._XFIND=CREATEOBJECT( [FBUSCAR],THISFORM ) &&creamos el objeto y pasamos una referencia del form principal
THISFORM._XSCAN=CREATEOBJECT( [FENCONT],THISFORM ) &&creamos el objeto y pasamos una referencia del form principal
*....
*ENDPROC

*en el evento init de la clase FBUSCAR
*FBUSCAR.INIT()
LPARAMETER _fsource
THISFORM._Fsource=_FSOURCE
*...
*RETURN
*ENDPROC

*en el evento init de la clase FENCONT
*FBUSCAR.INIT()
LPARAMETER _fsource
THISFORM._Fsource=_FSOURCE
*...
*RETURN
*ENDPROC

con esto ya tienes referencias de todos los formularios y puedes hacer lo que te plazca
pero te recomiendo que trabajes con uno a la vez, es decir llamas a uno y deshabilitas
las otras dos ej: llamar a formulario FBUSCAR desde el FPRINCIPAL haciendo click en un boton
*FPRINCIPAL.COMMAND1.CLICK()
WITH THISFORM._Fbuscar
.ENABLED=.T.
.VISIBLE=.T.
.SHOW()
ENDWITH
THISFORM.ENABLED=.F.
RETURN
* con esto llamas al formulario FBUSCAR y deshabilitas el principal, ten cuidado de dejar siempre
* habilitado uno de ellos de lo contrario tu programa se colgara, una vez encontrado el producto
* y por ejemplo dando un click en algun boton de captura de producto deberias volver por ejemplo
* FPRINCIPAL para mostrar la lista de seleccionados lo programas asi:
*FBUSCAR.COMMAND1.CLICK() &&evento click del boton capturar producto
WITH THISFORM &&deshabilitamos formulario de busqueda
.ENABLED=.F.
.VISIBLE=.F.
.HIDE()
ENDWITH
RETURN
*FBUSCAR.DEACTIVATE() &&evento desactivar formulario
WITH THISFORM._FSOURCE &&lo que hace es habilitar el formulario principal
.ENABLED=.T. &&antes de que el formulario FBUSCAR pierda el foco
.VISIBLE=.T.
.SHOW()
ENDWITH
RETURN
*Espero haberme explicado bien, sino lo posteas y vemos que hacer
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

RE:Problema con thisform.release

Publicado por DanielVFP (37 intervenciones) el 27/11/2010 17:46:14
Hola
Estoy desconcertado,anonadado,desubicado, puse el mismo tema en otro post y me dijeron que ponga los form en "modal" y funciona perfectamente.-
Solo que me digas si hacerlo de la manera que tu propones conlleva alguna ventaja o ¿estábamos hablando de cosas diferentes?.-

amigo, espero que esto no quede colgado espero tu respuesta, me interesa tu respuesta.-

Saludos.
Daniel
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

RE:Problema con thisform.release

Publicado por xx (378 intervenciones) el 27/11/2010 23:16:40
Bueno esa es una recomendación si te funciona y no quieres trabajar mucho sobre el tema pues dejalo en modal.

Ponerlo en modal lo que hace es que mientras trabajes con un formulario modal y no lo cierres u ocultes no puedas regresar a los demas.

Como te dije anteriormente es la forma en que lo hago yo, y me da un control total sobre varios formulario que haciendo de otro deberia utlizar conjunto de formularios que tiene una sobre carga adicional en tiempo de ejecución del programa e impide la reutilizacion del software.

Las ventaja que tendrias es mas a largo plazo por ejemplo la como ya te mencione la reutilización del software, te amplio mas yo tengo un sistema de punto de venta, con multicentro, asiento automatizado y otras cosas mas que no vienen al caso y lo que hice fue utilizando esa tecnica cree un formulario alojado en una biblioteca comun a varios formularios por decirte como ejemplo: busqueda de un producto, este formulario se utiliza en los formularios de ventas, compras, fichas de movimiento de productos, visualizacion de stock y otros por el estilo, entonces dicho formulario (el de busqueda de productos) es un objeto que de hace algunas cosas en comun y otras dependiendo del formulario en el que esta alojado esto es reutilizacion del software combinado con funciones virtuales (funcion virtual ejecuta una u otra accion dependiendo del contexto en el que se encuentra el objeto)

Otra ventaja como ya te mencione es el control total sobre los objetos, por decirte en el formulario de busqueda de productos puedes habilitar/deshabilitar objetos asignar valores a estos, ocultarlos, mostralos y algo fundamental si tu pasas una referencia del formulario principal al de busqueda puedes ejecutar un metodo alojado en el formulario principal desde el formulario de busqueda algo que la mayoria no le da importancia. Imaginate esto cuando selecciono un producto desde el formulario de busqueda de productos este pasa los datos del producto a un metodo alojado en el formulario principal este lo valida, registra y devuelve un valor que es recojido por el formulario de busqueda que si es valido concluye su mision y se desactiva, si no es valido pide de nuevo al usuario que busque otro producto.

Es un ejemplo, tengo formularios de por ejemplo busqueda de clientes, que es exactamente el mismo que el de busqueda de proveedor (solo que abre tablas diferentes), tengo el de busqueda de cuenta contable y otros similares.

Espero haber disipado tu duda, se que se entenderia mejor con ejemplos pero es algo complicado de realizar, tu decides!!

Saludos
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

RE:Problema con thisform.release

Publicado por DanielVFP (37 intervenciones) el 28/11/2010 23:11:20
Hola
"*creamos una referencia a un formulario alojado en una biblioteca VCX"
El primer error:
File C:\...\agministrador\biblioteca..set classlib to [biblioteca.vcx' does not exist.

En primer lugar no es el directorio de trabajo de mi proyecto, luego no creo haber creado dicha biblioteca.-

Tu me dirás.
Daniel
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

RE:Problema con thisform.release

Publicado por victor perez (278 intervenciones) el 28/11/2010 00:36:47
Hola,

El asunto tambien puedes resolverlo usando contenedores en lugar de forms.

Abres el principal, en algun lado le debes decir que abra el contenedor MSKBUSCAR...Introduces la info (creo que asi es tu logica)...si encuentra mas de uno entonces abre el contenedor "MSKENCONTRADO" que muestra el GRID y automaticamente cierra el contenedor "MSKBUSCAR". Cuando termines de usar el contenedor "MSKENCONTRADO" haces un click en CERRAR y listo...vuelves a la pantalla principal.

El modo modal se utiliza para hacer esta misma tarea pero usando forms...Tedioso tener que construir un form para cada cosa...usa los Contenedores...eso es lo mejor que a mi me ha resultado.

Los contenedores pertenecen al FORM de origen por lo tanto no tienes el trabajo de hacer publicas las variables que necesitas.

Victor - Panama -
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

RE:Problema con thisform.release

Publicado por DanielVFP (12 intervenciones) el 28/11/2010 04:06:31
Doc. Victor.

Que interesante, no lo había pensado.-
Una consulta, si tengo un form completo de botones,textbox,etc.etc.¿ como trabajo con el contenedor en tiempo de diseño, donde lo pones?.-

Espero haber disipado tu duda, se que se entenderia mejor con ejemplos pero es algo complicado de realizar, tu decides!!
Amigo, como desearía disponer de tú ej. pero si dices que es tedioso hacerlo no te voy a molestar, voy a profundizar con tu ej. y las consultas serán mas simples, me interesa aprender de tu manera de hacerlo.-

Saludos.
Daniel
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

RE:Problema con thisform.release

Publicado por victor perez (278 intervenciones) el 28/11/2010 23:57:57
Hola,

Pones el contenedor en el lugar que quieras de tu form...pero le pones en propiedad "visible=.F." para que no se vea a menos que sea necesario.

Es lo que uso cuando anulo documentos...el contenedor mskanulado siempre esta en el form pero esta invisible.

Cuando el documento ha sido anulado, entonces el aparece...para ello en mi tabla tengo un campo "sit" que lleva un asterisco si el doc fue anulado...

Anulo pero no borro...eso es bueno para un mejor control.

Si al halar la informacion de un registro, el campo sit no esta vacio, entonces significa que fue anulado el documento y al verlo en el form aparece el contenedor mskanulado como visible...

Casi todos mis forms, que llaman a otras pantallitas usan contenedor.

Por ejemplo, factura, si al imprimir quiero cambiar el nombre del Cliente, abro un contenedor que contiene el nombre actual que ira en el documento, si decido cambiarlo, pues lo cambio e imprimo...

La factura se guarda con el codigo del cliente y el nombre real, pero la factura se imprime de acuerdo a lo que quiera el paciente.

Lo unico que los contenedores deben estar en FRONT del form y nunca BACK para que se hagan visibles cuando los quieres ver...

Al terminar de usar el contenedor, entonces lo hacer "Visible=.F." y un "return" te regresa al formulario original desde donde estas trabjaando...

Interesante? Verdad ?

Pruebalo con algun ejemplo y veras los increible.

Referente a donde ponerlo, insisto, donde quieras porque el se vera por encima de tu form cuando lo hagas visible...lo unico es que si ocupa todo tu form, entonces al trabjar el contenedor estaria estorbandote al trabajar con los campos de tu form base. Lo que yo hago es que lo pruebo y luego al tener que trabajar con el form envio el contenedor "BACK" y trabajo con el form en modo de edicion...y cuando termino vuelvo a poner el contenedor FRONT, por lo que te explique arriba.

Saludos y espero esto resuelva tu problema.

Victor, ---
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

RE:Problema con thisform.release

Publicado por DanielVFP (12 intervenciones) el 29/11/2010 00:53:30
Hola Victor.-
Una cosa mas, ¿a los contenedores lograste darle un aspecto parecido a un form o lo dejas normal?.
En cuanto a lo otro lo tengo todo clarisimo, solo me refería que si tenes muchos contenedores parecería un poco molesto para diseñar, pero ahora que estoy practicando no lo parece tanto.-

Saludos.
Daniel
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

RE:Problema con thisform.release

Publicado por victor perez (278 intervenciones) el 30/11/2010 01:27:30
Hola,

Con los contenedores que he usado, y hasta donde los he usado, se pueden configurar igual que el form...misma apariencia.

Victor,
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

RE:Problema con thisform.release

Publicado por DanielVFP (12 intervenciones) el 30/11/2010 02:33:02
Hola Victor
Bárbaro, igual voy a buscar información sobre como hacer los form a partir de una clase,
tengo que hacer un programa de gestión comercial y x ej. el form principal no lo puedo hacer con contenedores, me pico lo de xx.-

Saludos.
Daniel
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

RE:Problema con thisform.release

Publicado por xx (378 intervenciones) el 30/11/2010 19:05:50
Bueno la curiosidad mato al gato dicen por ahi, pero por suerte nosotros no somos gatos jejeje.

Me indujeron a colgar un ejemplo de lo que hablo, espero saquen partido y les sirva en sus proyectos, es un ejemplo simple pero en fin, es a fin de conceptualizar las explicaciones emitidas.

El ejemplo es un simple buscador de cuentas de un plan de cuenta contable pero les puede servir para entender y realizar potentes buscadores de productos, clientes y proveedores que es la base de cualquier sistema de gestion, lo que hace es encontrar una cuenta y muestra el mayor de una cuenta contable, extrayendo de los libros diarios los asientos relacionados con la cuenta seleccionada.

Busquen la cuenta 101010101001 en el periodo 01-11-2010 al 30-11-2010 y les mostrara dos registros.

http://www.filefactory.com/file/b47hf0b/n/xx.rar

Ojala les sirva, a mi me ayudo un monto pero me tomo varios meses hecharlo a andar!!

Saludos
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

RE:Problema con thisform.release

Publicado por xx (378 intervenciones) el 29/11/2010 12:58:07
Uppppsss, parece que complique mas el tema de lo que debia!!, pido mis disculpas al caso. Simplemente keep on simple (mantenganse en lo simple)

Saludos
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