In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Ventana de Consola

Foro público de Xailer en español
Responder
Andres Hocevar
Mensajes: 141
Registrado: Mar Sep 18, 2007 3:30 pm

Ventana de Consola

Mensaje por Andres Hocevar »

Hola a todos
Estuve viendo el ejemplo de consola en xailer de la pagina de Objetos
persistentes
http://objetopersistente.blogspot.com/2 ... odo-hibrid o-de-xailer.html
en la cual se demuestra como arrancar una aplicacion en modo consola y
ejecutar codigo clipper tipo texto y desde el mismo llamar las
facilidades xailer en modo gui como los TReport etc.
y me pregunto si es posible desde xailer en modo GUI abrir una ventana
en modo consola y ejecutar un codigo clipper tradicional puro y duro?
Gracias
Rene Flores
Mensajes: 620
Registrado: Jue Mar 23, 2006 2:39 am

Ventana de Consola

Mensaje por Rene Flores »

Andres:
> y me pregunto si es posible desde xailer en modo GUI abrir una ventana
> en modo consola y ejecutar un codigo clipper tradicional puro y duro?
Si deseas que el programa Gráfico en Xailer controle el despliegue de
datos de una ventana de terminal, y que la ventana de terminal sea una
MDICHILD o un formulario "hermano" del programa Xailer, hasta donde he
probado no es posible y creo que el tema viene por el lado de como el
sistema operativo maneja las aplicaciones.
La unica forma de ejecutar otro programa MS-DOS desde Xailer serí­a
haciendo un WinExec() desde el programa Xailer a un EXE externo
Cuando trabajas con el modo hí­brido el programa que se crea
originalmente es un programa en (x)Harbour para modo texto, porque estás
cargando la LIB GTGUI.LIB (o GTWIN, tengo un lí­o con eso....) de
(x)Harbour, de hecho, si por error cargas esta lib en un programa Xailer
para Windows, veras como aparece una ventana Ms-DOS negra e
inmediatamente después se ejecuta el programa Windows.
El programa creado de esta manera, es decir primeramente para modo
Texto, puede usar componentes de Xailer porque lleva incluí­da la
XAILER.LIB, pero no es porque el programa pueda correr en 2 plataformas
distintas.
La ventana de texto es una aplicacion que va despachando su propio juego
de mensajes al nucleo de Windows, cuando lanzas un componente visual,
llamese formulario, Msg....() o "algo" de Xailer/Windows, estos corren
en su propia ventana y despachan sus propios mensajes,
independientemente de la ventana de consola, de hecho la ventana de
consola recibe los mensajes, porque es la ventana que ha lanzado la
ventana gráfica, pero los ignora porque no los puede procesar y estos
pasan al núcleo de Windows.
Los mensajes generados por los formularios o componentes visuales son
distintos a los que despacha la ventana de modo texto, por eso hay que
hacer ShowModal() al momento de mostrar un componente gráfico, esto
detiene momentaneamente la ejecución de la ventana de terminal y deja
que la ventana Windows trabaje a sus anchas, sin embargo, mientras la
ventana de Windows está corriendo, NO HAY COMUNICACION CON LA VENTANA
MS_DOS.
Se usa el evento ONINITIALIZE del formulario para configurarlo y obtener
valores del programa MS-DOS, posterioremente se despliega en pantalla el
formulario y en ese momento deja de haber comunicacion entre las 2
terminales, la windows y la consola, por ello es importante el ShowModal()
Si no haces un showmodal() entonces tienes 2 aplicaciones corriendo,
porque inmediatamente despues de desplegar el formulario, el flujo del
programa regresa a la ventana de MS-DOS y la ventana grafica sigue su
ejecución, pero no hay comunicación entre ambas porque el programa en
modo consola no puede controlar entornos MDI como lo hace un programa
Windows.
Por el contrario cuando la ventana grafica con SHOWMODAL() ha dejado de
funcionar, entonces el programa MS-DOS si puede "recoger" los datos
procesados por ella, porque Xailer maneja "objetos presistentes" es
decir que lo objetos siguen existiendo, junto con sus datas aunque
visiblemnte no se vean.
Hacer lo contrario es muy complicado, porque para empezar, la ventana de
terminal no es un objeto, por lo tanto no es manipulable desde un
programa Xailer.
Saludos
Rene Flores
http://www.ciber-tec.com
Andres Hocevar
Mensajes: 141
Registrado: Mar Sep 18, 2007 3:30 pm

Ventana de Consola

Mensaje por Andres Hocevar »

Gracias Rene muy completa tu exposicion, por lo que veo hay que pensar
en otra via mmmm....
Rene Flores escribió:
> Andres:
>
>> y me pregunto si es posible desde xailer en modo GUI abrir una ventana
>> en modo consola y ejecutar un codigo clipper tradicional puro y duro?
>
> Si deseas que el programa Gráfico en Xailer controle el despliegue de
> datos de una ventana de terminal, y que la ventana de terminal sea una
> MDICHILD o un formulario "hermano" del programa Xailer, hasta donde he
> probado no es posible y creo que el tema viene por el lado de como el
> sistema operativo maneja las aplicaciones.
>
> La unica forma de ejecutar otro programa MS-DOS desde Xailer serí­a
> haciendo un WinExec() desde el programa Xailer a un EXE externo
>
> Cuando trabajas con el modo hí­brido el programa que se crea
> originalmente es un programa en (x)Harbour para modo texto, porque estás
> cargando la LIB GTGUI.LIB (o GTWIN, tengo un lí­o con eso....) de
> (x)Harbour, de hecho, si por error cargas esta lib en un programa Xailer
> para Windows, veras como aparece una ventana Ms-DOS negra e
> inmediatamente después se ejecuta el programa Windows.
>
> El programa creado de esta manera, es decir primeramente para modo
> Texto, puede usar componentes de Xailer porque lleva incluí­da la
> XAILER.LIB, pero no es porque el programa pueda correr en 2 plataformas
> distintas.
>
> La ventana de texto es una aplicacion que va despachando su propio juego
> de mensajes al nucleo de Windows, cuando lanzas un componente visual,
> llamese formulario, Msg....() o "algo" de Xailer/Windows, estos corren
> en su propia ventana y despachan sus propios mensajes,
> independientemente de la ventana de consola, de hecho la ventana de
> consola recibe los mensajes, porque es la ventana que ha lanzado la
> ventana gráfica, pero los ignora porque no los puede procesar y estos
> pasan al núcleo de Windows.
>
> Los mensajes generados por los formularios o componentes visuales son
> distintos a los que despacha la ventana de modo texto, por eso hay que
> hacer ShowModal() al momento de mostrar un componente gráfico, esto
> detiene momentaneamente la ejecución de la ventana de terminal y deja
> que la ventana Windows trabaje a sus anchas, sin embargo, mientras la
> ventana de Windows está corriendo, NO HAY COMUNICACION CON LA VENTANA
> MS_DOS.
>
> Se usa el evento ONINITIALIZE del formulario para configurarlo y obtener
> valores del programa MS-DOS, posterioremente se despliega en pantalla el
> formulario y en ese momento deja de haber comunicacion entre las 2
> terminales, la windows y la consola, por ello es importante el ShowModal()
>
> Si no haces un showmodal() entonces tienes 2 aplicaciones corriendo,
> porque inmediatamente despues de desplegar el formulario, el flujo del
> programa regresa a la ventana de MS-DOS y la ventana grafica sigue su
> ejecución, pero no hay comunicación entre ambas porque el programa en
> modo consola no puede controlar entornos MDI como lo hace un programa
> Windows.
>
> Por el contrario cuando la ventana grafica con SHOWMODAL() ha dejado de
> funcionar, entonces el programa MS-DOS si puede "recoger" los datos
> procesados por ella, porque Xailer maneja "objetos presistentes" es
> decir que lo objetos siguen existiendo, junto con sus datas aunque
> visiblemnte no se vean.
>
> Hacer lo contrario es muy complicado, porque para empezar, la ventana de
> terminal no es un objeto, por lo tanto no es manipulable desde un
> programa Xailer.
>
> Saludos
>
> Rene Flores
> http://www.ciber-tec.com
Responder