Manuel,
Perdonad todos que me intrometa, pero quiz谩s mi experiencia sirva de algo.
No creo que deban ir por ah铆 los "tiros". El METHOD cGenPrg() tal como est谩 no creo que nos sirva, es m谩s no creo que se llegue a usar dado que requerimos de otros pasos previos a la obtenci贸n del c贸digo (como es la propia creaci贸n de la ventana/di谩logo/control) que nos permiten susbsituirlo completamente; me explico.
Yo empezar铆a desde el principio y seguir铆a estos pasos:
A) Tengo una pared blanca.
B) Creo una ventana en ella
C) Creo 'n' controles en la ventana
D) Obtengo el c贸digo, que usar茅 en el PRG de la compilaci贸n de mi aplicaci贸n de "gesti贸n de almacenes" (por decir algo).
Hasta ah铆 es muy posible que estemos de acuerdo, otra cosa ser谩 c贸mo hacerlo.
C贸mo lo har铆a yo?
Yo, en el punto B) usar铆a un interfaz para indicar como debe ser esta ventana: su tama帽o, su t铆tulo, si es ventana o di谩logo, su color, etc. y que d谩ndole al 'Aceptar' del interfaz se dibuje en la pared blanca; si no ya me direis como le digo el t铆tulo de la ventana.
Una vez dibujada se puede habilitar que con doble clic sobre la ventana dibujada se vuelva a llanmar al interfaz para escribir el t铆tulo si lo queremos cambiar, o escoger un nuevo color, o lo que sea, o incluso escribir el c贸digo de su cl谩usula ON INIT.
Lo mismo har铆a o muy parecido en el punto C) para el caso de los controles, y naturalmente contemplar铆a el uso de rat贸n para dimensionar, posicionar, alinear, duplicar, escoger tipos de letra, BMP, colores, etc.
Y aqu铆 voy:
entonces, si he llamado a un interfaz para escribir contenido de lo que sea, 茅ste mismo interfaz en su bot贸n 'Aceptar' tambi茅n podr铆a guardar ese contenido en HASES, ARRAY, variables p煤blicas, o donde sea.
Si he guardado la informaci贸n, en este momento soy el due帽o de lo que estoy haciendo; estoy desvinculado del comportamiento de Fivewin, y Fivewin est谩 desvinculado del comportamiento del editor de ventanas; no puedo permitir que algun d铆a uno pueda penalizar el desarrollo/evoluci贸n del otro.
Sigo:
posteriormente en el punto D) examinar铆a esos HASES, ARRAY, variables p煤blicas, o lo que sea, y en base a sus valores (y otros como el orden de creaci贸n) crear铆a c贸digo Fivewin.
Adem谩s en este punto D) puedo decirle que guarde las definiciones de las variables locales en un fichero.... digamos .LCL, as铆 como la definici贸n completa de la ventana y sus controles en otro fichero... digamos SCR.
Porque? Para que? Sencillo, en el PRG mi aplicaci贸n de "gesti贸n de almacenes" tendr茅 "#include" como el de este ejemplo:
Ejemplo:
*-------------------------------
FUNCTION uAltacliente()
include ventanaaltacliente.lcl
../.. c贸digo Fivewin de lo que sea, o inicializando variables, etc.
include ventanaaltacliente.scr
ACTIVATE DIALOG oVentanitaCliente CENTER
../.. c贸digo Fivewin de lo que sea, o enviando avisos al operador, etc.
Return Nil
*-------------------------------
Por tanto estar铆a prescindiendo del METHOD cGenPRG(), y sin necesidad de alterar las clases propias de Fivewin.
A partir de aqu铆 la imaginaci贸n, la informaci贸n la genero y la manipulo yo, por ejemplo el nombre de las variables lo decido yo. Si tengo que examinar c贸digo, un array no me dir谩 tanta informaci贸n como el nombre propio de la variable ( 'aControles[25] vs cnombreCliente' por ejemplo ).
Otro asunto ser铆a como:
- releer c贸digo PRG y crear una ventana y sus controles.
- usar controles de terceros no est谩ndar de Fivewin.
- personalizar controles para que se creen directamente con una valores por defecto.
- tener un editor de PRG que al hacer doble clic sobre "#include ventanaaltacliente.scr" abra directamente el dise帽o de la ventana.
- establecer el orden de creaci贸n de los controles para que en ejecuci贸n el orden del foco sea el deseado.
- provocar que los controles de un GROUP (por ejemplo) se "vean" cuando hemos modificado el GROUP (que no queden 'debajo' del GROUP).
En fin, que no veo claro que cGenPRG() sea el camino.
Y te he soltado este rollo, porque ya has demostrado de lo que eres capaz y tu puedes crear una herramienta que haga todo eso y m谩s.
Si consigo contenerme ya no dar茅 m谩s la lata.
Gracias.