Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Modificar un dfm desde fuera del entorno (https://www.clubdelphi.com/foros/showthread.php?t=9906)

wendigo 05-05-2004 15:22:08

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

delphi.com.ar 05-05-2004 15:29:12

Puedes ponernos un ejemplo, digamos un trozo del código del DFM como para verlo.

Saludos!

wendigo 05-05-2004 16:13:50

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

wendigo 05-05-2004 18:12:18

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

wendigo 07-05-2004 11:59:56

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

roman 07-05-2004 16:55:32

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


La franja horaria es GMT +2. Ahora son las 00:13:08.

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