Página 1 de 1

Enlazar Varios prg con xaweb en una sola aplicacion

Publicado: Lun May 12, 2025 1:05 am
por michaelp
Buenas Tardes
He estado probando los ejemplos que venían en Beta en modo individual perfecto.
Incluso los he ido adaptando a mi necesidades sin ningún problema.
Yo necesito hacer una aplicación de consulta con 5 formularios.


En PHP Utilizo 5 paginas mas el index y la configuracion de acceso a la base de datos.

En Xaweb
Todo Vienen con esta definicion de clase
CLASS WDocMain FROM WDoc
METHOD CreateDoc()
END CLASS

Yo los llamo asi : y tengo dentro de mi aplicacion wlistado.prg

METHOD Stub_103() CLASS WDocMain
App:cTitle := "Wlistado"
WRouter():New( App ):Start( "Wlistado" )
App:Run()
RETURN nil

o Asi :
METHOD Stub_127() CLASS WDocMain
WRouter():New(App):Start("Wlistado")
RETURN nil

Pero ninguna con el encabezado CLASS WDocMain FROM WDoc

Ahora bien yo Quise utilizar esto :

CLASS Wlistado FROM WDoc
END CLASS
y Llamarlos desde mi WDocMain

Compilando wlistado.prg...
Enlazando index.cgi...
D:/nuevosmysql/proyecto2025/xaweb/asistenciaweb/Obj/wempresa.o:(.data+0x58): undefined reference to `HB_FUN_XACLASS'
1 Files, 1 Errors
Tiempo de compilación: 0.21s Tiempo de enlazado: 0.12s Tiempo total: 0.33s
Alguna forma de enlazar varios formularios de forma que se asemeje a una plicacion de escritorio ?

Alguna Sugerencia al respecto ?
Agradecería su apoyo.

Re: Enlazar Varios prg con xaweb en una sola aplicacion

Publicado: Mar May 13, 2025 4:23 pm
por ignacio
Buenas tardes,

Da la sensación de que tiene algún INCLUDE "xailer.ch" por algún sitio.

Por otra parte, le indico que la versión DEMO de xaWeb sólo admite una instancia de WDOC.

Saludos

Re: Enlazar Varios prg con xaweb en una sola aplicacion

Publicado: Mié May 14, 2025 6:19 pm
por michaelp
Buenos Días Estuve probando con la Versión Beta , esta también tiene la misma Limitación? Y ya con la otra dentro del mismos cgi puedo tener varios formularios?

Re: Enlazar Varios prg con xaweb en una sola aplicacion

Publicado: Mié May 14, 2025 6:58 pm
por ignacio
michaelp escribió: Mié May 14, 2025 6:19 pm Buenos Días Estuve probando con la Versión Beta , esta también tiene la misma Limitación? Y ya con la otra dentro del mismos cgi puedo tener varios formularios?
Tiene la misma limitación: sólo un WDOC en modo DEMO. No obstante en un WDOC puede tener múltiples formularios, no hay limitación (si en la DEMO). Cada uno de ellos se lanzaría a través de un método de la clase WDOC. Por parámetro GET usted indica exactamente el formulario que desea visualizar. Incluso cuando controle un poco más xaWeb puede hacer que se DESPLIEGUEN todos los formularios que usted desee, pero no se muestren. Y luego que se muestren a su antojo sin tener que recargar el CGI (ver ejemplo 14).

De la documentación:

LA CLASE DOC Y DOCSECTION
Como ya se ha comentado en un apartado anterior, la clase WDoc es la responsable de hacer el despliegue del contenido HTML. Una aplicación xaWeb puede tener múltiples objetos WDoc, pero sólo uno de ellos puede ejecutarse cada vez que se ejecuta el CGI. A través del paso de parámetros podemos especificar exactamente el objeto WDoc que deseamos instanciar y, por tanto, éste será el responsable de desplegar el contenido HTML. Una vez que un objeto WDoc ha sido instanciado, éste es accesible a través de la variable pública ‘Document’.

El objeto WDoc puede ser el responsable del despliegue de todo el contenido HTML, pero lo conveniente es utilizar para separar cada parte del contenido. Por ejemplo: la cabecera podría ser una sección, el pie de página otro y el cuerpo, otro más. Las secciones en xaWeb se crean con el método Document:AddSection( <cName> ) y retornan un objeto del tipo WDocSection. Incluso cuando no haya creado ninguna sección, xaWeb crea de forma automática una sección inicial por defecto con el nombre “default”.

Un objeto WDoc puede tener múltiples secciones u objetos WDocSection. Incluso dos WDoc distintos pueden compartir varias secciones, como sería el caso de compartir un pie de página. El hecho de crear una sección no significa que tenga que desplegarse forzosamente. El objeto WDocSection tiene una propiedad de nombre lDeploy que cuando está a verdadero indica que la sección debe ser desplegada.

Todas las secciones son desplegadas en HTML dentro de un contenedor HTML del tipo <x-doc-section></x-doc-section>. El nombre indicado en el parámetro de AddSection() se utiliza como ID en dicho elemento HTML. Otra de las propiedades importantes del objeto WDocSection es lHide. Esta propiedad permite ocultar la sección, pero desplegándola igualmente: simplemente pone el estilo ‘display:none’ al elemento HTML. La utilidad de esta propiedad es la de poder crear secciones ocultas que por código JavaScript podemos hacer visibles a nuestro antojo, como por ejemplo un formulario.

El orden de creación de las secciones, marca en principio el orden de despliegue de estas en el HTML. No obstante, se puede cambiar utilizando la propiedad lFooter que obliga a que la sección vaya después del cuerpo (body) principal HTML.

Cuando se ejecuta el CGI sin ningún parámetro, sólo se instancia el objeto WDoc por defecto y se realiza una llamada a su método CreateDoc. Después de la llamada a CreateDoc, el documento se despliega y se sale de la aplicación. No obstante, a través de parámetros GET, podemos indicarle un documento distinto o un método en concreto a ejecutar. Por ejemplo:
http://localhost/test.cgi?action=mydoc-mymethod

Esta URL solicita la carga del documento ‘mydoc’ y la ejecución de su método ‘mymethod’ después de que éste haya sido instanciado y se haya ejecutado su método CreateDoc.

Cuando necesitamos que una o más secciones sean instanciadas después de la llamada a ‘mymethod’ y no antes, podemos utilizar el método RegisterSection( <cName> ) de la clase WDoc (lDeploy a de estar a falso), que recibe como único parámetro el nombre otorgado a la sección. La ventaja de utilizar este método es que las secciones registradas son instanciadas después del método elegido en ‘action’ y por lo tanto pueden acceder a datos ya actualizados.