PDA

Ver la Versión Completa : guardar form completo se podra?


anubis
19-05-2007, 06:57:13
Una preguntita.
Si tengo un form en diseño, y lo visualizo como texto, me salen todas las propiedades del form en formato texto.
Se podria agarrar todo ese texto, que ya es un dfm, guardarlo a aparte, modificar el form y guardarlo aparte con otro nombre.
Ahora la pregunta, si tengo dos dfm del mismo form, podria en tiempo de ejecucion cambiar de uno a otro cuando lo creas en tiempo de ejecucion?

form1:=tform1.create(self)
form1.showmodal;
form1.destroy;


o todo eso ya viene precargado en el ejecutable.

no se si me explique bien.

Delphius
19-05-2007, 07:28:08
Sinceramente no entiendo lo que dices...
Estoy muy perdido:confused:

Saludos,

anubis
19-05-2007, 07:44:57
Si, gracias.
Todos los datos de los componentes de un form estan guardados y los puedes ver con view as text, me refiero a si tienes dos forms pero cada uno con los componentes colocados de diferente manera, si se podria en tiempo de ejecucion, cargar uno un otro form segun como te interese que esten colocados los componentes.
Teniendo dos archivos dfm poder llamar a uno o a otro.

reevil
19-05-2007, 08:00:45
por medio de archivos dfm no lo creo posible
pero podrias hacer una dll o hasta un archivo txt con los valores que necesites para la reubicacion de los componentes de tu form

Delphius
19-05-2007, 08:04:09
A ver... tienes dos formularios, que en definitiva son lo mismo, unicamente que cada uno posee los controles en una disposición distinta respecto al otro.
Lo que deseas, es mostrar dicho formulario dependiendo del "gusto" del usuario...

Me parece ineficiente tener dos forms que realicen lo mismo...

Yo lo veo así:
Manejar un archivo ini que registre la posición de los controles. De modo que al momento de crear el formulario, se lea dicho archivo y se ubiquen los componentes según los valores leídos. La manera sencilla es mantenerlos en diseño en alguna posición estándar pero con la propiedad visible en false. De modo que una vez estén reubicados, activas visible en true.
Esto te servirá si el "movimiento" de los controles no varía mucho y si hay pocos formularios y controles con dicho comportamiento.

Si el usuario tiene la libertad de moverlos por donde quiera, deberás permitir manejar "Drag and Drop". Para esto será mejor que leas la ayuda de delphi y/o que busques en los foros, mucho de esta técnica no se. En lo personal no me gusta darle estas opciones al usuario, a menos que el desee. Deberás manejar los eventos onDragDrop y onDragOver para cada control (o tipo de control) y determinar que componentes podrán ser movidos y "aceptados" por otros.

Espero serte de utilidad
Saludos,

anubis
19-05-2007, 08:05:58
si, la verdad es que lo habia pensado con los archivos ini, pero son un monton de opciones.
Me hacia falta cuando se llama al programa por primera vez sale un form y de ahi sale otro form de claves, cuando se vuelve a llamar al form de claves queria que saliera de otra forma, pero bueno ya investigare a ver como se puede hacer.

Delphius
19-05-2007, 08:18:56
cuando se vuelve a llamar al form de claves queria que saliera de otra forma

Ten en cuenta que al usuario no le gusta mucho que hayan estos tipos de "inconsistencia" entre un formulario y otro. Se espera que las ventanas sigan un patrón y no que cambien arbitrariamente... es un efecto muy molesto. Y hace más difícil que el usuario se acostumbre.

Si realmente debes aplicar este efecto, tal vez podrías ingeniartelas.
Se me ocurre que tal vez puedas hacer una especie de "función matemática" que te posicione un control o grupo de controles según un valor que se suministre de modo que ya no sería necesario guardar la posición sino este valor representativo.

Por ponerte un ejemplo simple: (muy tonto... por cierto.. sino haz la prueba)
PosX := (Ubicacion + 100)
PosY := (Ubicacion + 100) / PosX

Donde ubicación pueda tomar valores simples... Algo así me imagino:
1 -> Se ubican a la izquierda
2 -> Se ubican a la derecha
3 -> Se ubican arriba

Lo complicado de esta manera es encontrarle la "formula"

Saludos,

anubis
19-05-2007, 09:12:05
Gracias por la sugerencia. Mas o menos lo tengo resuelto con ficheros ini, los componentes los voy a meter en paneles asi me es mas facil porque no tengo que mover los componentes sino los paneles.

gracias de nuevo por las ayudas. Como se nota que los gurus ayudais a los muy novatos.;)