Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-05-2004
wendigo wendigo is offline
Registrado
 
Registrado: may 2004
Posts: 4
Poder: 0
wendigo Va por buen camino
Lightbulb Modificar un dfm desde fuera del entorno

Hola, estoy trabajando en un programilla para reducir el tiempo de desarrollo de un tipo concreto de aplicacion a traves de automatizar tanto el diseño de los formularios como los controles de obligatoriedad de ciertos campos a rellenar por el usuario, para ello Estoy creando un programilla que a partir de un fichero de texto (o de xml) crea (en realidad modifica) un dfm añadiendo controles al formulario contenido en el fichero, basicamente funciona, pero cuando abro el dfm desde el entorno de delphi (en este caso vers 6) pese a respetar los controles nuevos que he introducido les cambia algunas de las propiedades como el tamaño de la fuente y la anchura!!!. alguien puede indicarme por que ocurre esto (y como evitarlo),

Gracias a todos de antemano

Alex
Responder Con Cita
  #2  
Antiguo 05-05-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Puedes ponernos un ejemplo, digamos un trozo del código del DFM como para verlo.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 05-05-2004
wendigo wendigo is offline
Registrado
 
Registrado: may 2004
Posts: 4
Poder: 0
wendigo Va por buen camino
Ejemplo Codigo

aqui va el ejemplo

Cuando yo ejecuto mi aplicacion lo que hace es crear un fichero .dfm con la descripcion de un formulario, en este (el que yo creo) un de los objetos es este

----------------------------------------------------------------
object P2: TRadioGroup
Left = 11
Top = 95
Width = 750
Height = 501
Font.Charset = ANSI_CHARSET
Font.Color = clNavy
Font.Height = -17
Font.Name = 'Arial'
Font.Style = [fsBold]
Items.Strings = (
'Opcion 1'
'Opcion 2'
'Opcion 3'
'Opcion 4'
'Opcion 5'
'Opcion 6')
ParentFont = False
TabOrder = 0
end
-------------------------------------------------------------

hasta aqui todo Ok, yo cojo el fichero que me ha creado la aplicacion y lo copio en un directorio en el que tengo el proyecto de delphi en el que tiene que estar ese dfm, sustituyo al dfm que ya hay en el proyecto con el mio, despues desde delphi abro el proyecto y todo correcto excepto que al fijarme en el objeto concreto que he metido en el codigo del formulario veo que esta de otro tamaño, pongo el formulario en modo texto y veo que:

------------------------------------------------------------
object P2: TRadioGroup
Left = 14
Top = 117
Width = 923
Height = 617
Font.Charset = ANSI_CHARSET
Font.Color = clNavy
Font.Height = -20
Font.Name = 'Arial'
Font.Style = [fsBold]
Items.Strings = (
'Opcion 1'
'Opcion 2'
'Opcion 3'
'Opcion 4'
'Opcion 5'
'Opcion 6')
ParentFont = False
TabOrder = 0
end
-------------------------------------------------------------
Las propiedades han sido cambiadas sin que yo hiciese absolutamente nada mas que abrir el proyecto!!
Si ahora las corrijo (en modo texto) no hay problema ninguno, pero la idea es tener el .dfm creado perfectamente sin tener que retocar las propiedades para simplemente compilar el proyecto y terminar.

A ver si veis o sabeis algo que a mi se me este escapando, porque no veo cual es la razon de que Delphi modifique esos valores la verdad

Muchas gracias a todos una vez mas

Última edición por wendigo fecha: 05-05-2004 a las 16:16:25.
Responder Con Cita
  #4  
Antiguo 05-05-2004
wendigo wendigo is offline
Registrado
 
Registrado: may 2004
Posts: 4
Poder: 0
wendigo Va por buen camino
Wink Plantillas

Ya, si plantillas ya uso, todo lo que siempre es comun, que en este caso es practicamente toda la aplicacion esta en una plantilla, la idea es que si se pudiese modificar el diseño de los formularios automaticamente dependiendo justamente de esa parte de la aplicacion que es variable, el tiempo de desarrollo seria practicamente nulo. Es decir si desde la informacion de un pequeño fichero de texto o xml yo pudiese modificar y dar forma al dfm de la plantilla, solo tendria que hacer el ficherito (tarea para la que ya tengo otra aplicacion diseñada que hace que puedas tenerlo hecho en menos de 5 min), procesar ese fichero con mi aplicacion de modo que se le añadiesen al dfm todos los objetos que necesite y despues llamar al compilador de linea de comandos o bien abrir el proyecto y compilar desde Delphi. Tendria una aplicacion funcional a partir de la plantilla sin haber escrito una sola linea de codigo. (la aplicacion tambien añade lineas con procedimientos,variables y eventos al .pas dependiendo de las opciones rellenadas en el ficherito xml)

En cualquier caso muchas gracias por la idea

Alex

Última edición por wendigo fecha: 06-05-2004 a las 15:38:20.
Responder Con Cita
  #5  
Antiguo 07-05-2004
wendigo wendigo is offline
Registrado
 
Registrado: may 2004
Posts: 4
Poder: 0
wendigo Va por buen camino
Red face Propiedad ParentFont

Por si os interesa:
Por ahi me han indicado que el problema podia tener que ver con la propiedad ParentFont de los controles que añado, de tal modo que si la propiedad estuviese a true los controles asumirian la fuente de su Control Padre, de todas formas me asegure de que en los controles insertados ponia explicitamente esa propiedad a false, aun asi las propiedades de los controles se cambian al reabrir el formulario.

Teoria: me da la impresion de que si los controles tienen unos valores que no encajan con los de los controles creados de manera estandar por el entorno los cambia al valor estandar mas cercano.

en cualquier caso muchas gracias a todos por la ayuda

Alex
Responder Con Cita
  #6  
Antiguo 07-05-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues no es gran ayuda lo que te puedo dar pero sí te comento que hace unos días cuando pusiste tu mensaje, simplemente copié el objeto del dfm que pusiste y lo pegué tal cual en un dfm cualquiera y funcionó perfectamente.

¿Has probado "poco a poco"? Es decir, hacer pruebas con un formulario más sencillo al que le pegues sólo un objeto dfm.

Por cierto, yo lo probé con Delphi7 pero no debería haber gran diferencia con Delphi6.

// Saludos
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 11:14:53.


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