FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Guardar codigo fuente de formulario ejecutandose
Hola chicos cuanto tiempo,
pues ahora ya necesito ayuda de vuestra sabiduría ya que mi cabecita no da más de sí. Veréis me han enfrascado en un proyecto un tanto extraño para la empresa y se trata de lo siguiente. - Una aplicación delphi que genere formulario (delphis) para realizar mantenimientos básicos sobre tablas planas. Es decir: - La aplicación tendrá un asistente donde configurar como se desea que sea el formulario (los formularios son todos iguales, tengo incluido en el proyecto una plantilla del formulario base) - Una vez escogidas las características: base de datos y tabla, escoger el nombre de los ficheros, las opciones que tendrá: insertar, modificar y borrar, etc, y los filtros (que campos deseamos que pertenezcan al filtro), cuales queremos que aparezcan en un grid, etc - Pues la aplicación cogerá la "plantilla" modificará sus propiedades según lo escogido y cogerá el .pas y .dfm y los guardará con el nombre escogido. Luego pues ya se mete en el proyecto Delphi que corresponda y con las modificaciones que necesite de su proyecto lo modificará según le convenga. - A la vez también generará el PL/sql necesario con las funciones de básicas del mantenimiento. Más o menos lo tengo todo controlado, excepto lo de guardar el formulario. Mi primera opción fue crear el formulario a mano, voy añadiendo los objetos a un listbox con el mismo formato del pas y el dfm y luego los guardo, pero es un trabajo de chinos y andaré parche sobre parche continuamente y no me convenció la idea. Así que me dije porque no coger un formulario básico, metido dentro del proyecto, puedo acceder a los objetos y propiedades, las modifico y cojo ése código y lo guardo en los ficheros pas y dfm. Y ese es mi problema, ¿cómo acceder al código fuente de un formulario que tengo abierto (al pas y al dfm) y de ésta manera meterlo en un richedit y guardarlo como fichero de texto? Es que me suena haberlo visto alguna vez, pero llevo toda la mañana buscando por el foro y no doy con ello. Perdón por el tocho y gracias por adelantado pd: por si puede servir de ayuda, uso Delphi XE Última edición por Bicho fecha: 08-07-2013 a las 17:41:37. |
#2
|
||||
|
||||
Hola.
Por si te sirve de algo yo tengo hecho algo parecido pero orientado de otra manera. La idea es que tienes un formulario genérico y vacío con las opciones del mantenimiento de ficheros, nuevo, modificar, siguiente, anterior, etc. y lo que hacemos es por un lado insertar componentes en tiempo de diseño y por otro lado tenemos la posibilidad de crear objetos en tiempo de ejecución, estos objetos y sus propiedades se guardan en un fichero .txt que cada vez que se carga el formulario se encarga de leerlo y crear o modificar en tiempo de ejecución los objetos que se encuentre en él. No sé si te servirá la idea pero bueno, a grandes rasgos es como nosotros lo hacemos. Saludos
__________________
Be water my friend. |
#3
|
||||
|
||||
Hola newtron,
muchas gracias por la respuesta. Buscando he visto varios hilos donde comentas ese proyecto del que hablas, pero no me queda muy claro como lo hacéis. Tenéis el formulario vacío y en ejecución el usuario elige los objetos y propiedades y luego ¿como lo guardáis?, se mantiene el formulario original "vacío" y los objetos nuevos se guardan (supongo que mediante RTTI o algo semejante) en un txt. ¿Y luego como se cargan en el formulario nuevo? Lo mío a grosso modo vendría a ser lo mismo, mi formulario "padre" tiene unos objetos mínimos: para el filtro, el mantenimiento y el listado, además de todos los eventos básicos ya programados y que tendrían que ser modificado en tiempo de ejecución. De una manera o de otra, y incluso teniendo que crear el formulario a mano con sus uses, objetos a mano, eventos etc (y lo mismo para el dfm, ya lo tengo de forma básica, pero es un coñazo y son muchísima horas de las que no dispongo), acabaré haciendo lo mismo y es teniendo escrito todo el código a generar y añadir los objetos. Cuando mi intención es mucho más sencilla pero por lo visto complicada o no se puede hacer: - Tener el formulario creado, en ejecución abrirlo, accedo a sus propiedades, las modifico, creo nuevos objetos, etc y luego vendría el "obtener" el fuente .pas y .dfm de éste formulario que estoy editando en memoria y guardarlo mediante un memo o algo. Cada minuto que pasa lo veo más jodio... Gracias! |
#4
|
||||
|
||||
Échales un vistazo a los métodos ComponentToStringProc y StringToComponentProc que hay en esta entrada, a ver si eso te da alguna idea de cómo almacenar el formulario.
Podrías crear lo que necesites (según las opciones) en runtime y una vez completado el asistente, guardar el form.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#5
|
||||
|
||||
Hola,
no sé si has buscado por Creatablas, que es una utilidad que José Luis creó en su día para generar formularios de mantenimientos. El código y el manual están en el ftp del club. Por otro lado, no sé si has pensado en guardar en la misma bbdd la configuración de las pantallas. Otra opción es guardarlas en un fichero de texto o en un fichero xml y "montarlas al vuelo" tal como te han adelantado otros compañeros. Para hacer esto ( en cualquiera de las versiones ) tendrás que hacer una ventana de configuración, en la que pidas la tabla. puedas seleccionar los campos y en cada campo puedas definir la forma en la que se editará ( etiqueta, máscara, en fechas que te abra un calendario, si quieres que el campo aparezca en el filtro, si quieres que el campo aparezca en el grid, ...) y que al terminar se guarde toda la información para poder recrearla cuando el usuario abra el formulario o modificarla posteriormente. Yo también añadiría en los campos en los que se quiera seleccionar de una lista de valores, la propia lista de valores para que el usuario no "meta la gamba". Yo te sugeriría también que por cada tipo de campo, prepares un frame y que al crear el formulario te cree y configure los frames. Todo esto te facilita bastante el código posteriormente. Si estás interesado, te puedo pasar algún ejemplo que he realizado a modo de prueba de concepto. Para hacer el desarrollo completo siempre me ha frenado el que no he sido capaz de configurar los eventos de después de modificar un campo y que sean también configurables. Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#6
|
||||
|
||||
@fjcg02 gracias, pero no encuentro los fuentes, he visto el manual y los 3 o 4 descargas adicionales que hay en el ftp pero en todos sólo hay el ejecutable (que además me da error y no inicia la aplicación). De todos modos lo poco que he leído sobre ese proyecto era de generar la paquetería (PL): tabla, insert/update/delete, y la ventana creo que lo guarda en un .ini y supongo que será como los demás casos, varios objetos con sus propiedades.
@Neftalí, gracias Germán pero ¿no sería mucho trabajo?, tendría que cambiar las clases de un formulario normal (TForm) y cada componente que use (TPanel, TSpeedButton, TDBGrid, etc.), y al final sólo guardaría dichas clases con sus propiedades. ¿y mis procedures y functions que yo cree? ¿y los eventos? Quizá pueda servirme, pero estoy un poco pez con ese tema y no lo veo claro. Última edición por Bicho fecha: 09-07-2013 a las 18:20:56. |
#7
|
||||
|
||||
Ademas de las opciones que te dan, yo te aconsejo que revises los componentes Cindy, son free y aunque los demos no son muy elegantes y en lugar de vender espantan, creo que tiene componentes interesantes:
http://tcycomponents.sourceforge.net/ para tu caso recomiendo TcyResizer, con el cual puedes crear, mover y redimencionar componentes de la VCL en tiempo de ejecución. De ésta manera permites que tu usuario diseñe la pantalla. bueno, se que no aporta a tu problema actual, pero ahí te dejo ese dato... revísate los demos para que veas de que estoy hablando |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Codigo fuente | carloseh | La Taberna | 5 | 29-05-2013 19:18:17 |
guardar código fuente en acces | jfrancho | Conexión con bases de datos | 2 | 06-12-2010 20:15:10 |
Código fuente | chinchan | C++ Builder | 3 | 01-08-2006 05:59:25 |
TPV.- Codigo Fuente | Rabata | Varios | 4 | 15-10-2005 14:48:51 |
Guardar codigo fuente HTML desde delphi | dmassive | Internet | 7 | 07-03-2004 23:32:05 |
|