Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-07-2013
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 08-07-2013
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.457
Poder: 20
newtron Va camino a la fama
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.
Responder Con Cita
  #3  
Antiguo 08-07-2013
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
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!
Responder Con Cita
  #4  
Antiguo 08-07-2013
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
É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.
Responder Con Cita
  #5  
Antiguo 08-07-2013
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.408
Poder: 22
fjcg02 Va camino a la fama
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 -
Responder Con Cita
  #6  
Antiguo 09-07-2013
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
@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.
Responder Con Cita
  #7  
Antiguo 09-07-2013
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 21
gatosoft Va camino a la fama
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
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 13:31:02.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi