FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Crear o duplicar form en tiempo de ejecucion
Un saludo a todo el foro.
Les deseo un prospero año nuevo y que esten felices disfrutando sus dias festivos. Tengo una aplicación que realiza ordenes de compra, esto es que agrega los articulos segun el proveedor al que este añadido, donde calculo la cantidad de articulos por su costo, descuentos, etc... Cuando yo creo una orden de compra nueva cierro ciertos campos por seguridad y asi evitar duplicidades de numeros de ID o consecutivos, me han pedido que el comportamiento del form sea parecido a lo que hace excel con sus libros, explicando mejor, me piden que se cree una nueva ventana secundaria de la orden de compra exactamente igual para agregar una orden de compra nueva sin perder la anterior, y es aqui donde tengo el problema, ¿Como puedo crear o duplicar ese formulario en tiempo de ejecucion, asi como lo hace excel con sus libros? Gracias!! |
#2
|
||||
|
||||
De lo que explicas, lo que no me queda claro es qué hacer con los datos que no se pueden duplicar, justo esos que "cierras" para que no se dupliquen.
De todas formas, digamos que para duplicar tu formulario (que está conectado a unos datos) necesitas "duplicar" esas dos cosas; El formulario(1) y los datos(2) y cuando los crees tendrás un duplicado del original. Para duplicar el formulario, basa con que crees uno nuevo de la misma clase(1). Si en tu Aaplicación se crea así:
bastará con crear uno nuevo:
Si creas varios debes tener en cuenta a la hora de destruirlos que no pierdas memoria, así que creo que lo más correcto es que en el OnClose utilices:
Con esto tendrás un segundo formulario de la misma clase que el primero, ¿Pero y los datos que muestra? Pues lo lógico es que crees un nuevo registro en tu tabla de ordenes de compra(2) con los mismos datos del primero (menos los que no puedes duplicar) y hagas que el nuevo formulario apunte a ese nuevo registro; Con eso habrás conseguido dos formulario iguales apuntando a dos registros diferentes (duplicados) con los mismos datos. No se si me he explicado bien y si es eso lo que quieres exactamente. Un saludo.
__________________
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. |
#3
|
||||
|
||||
Creo que así se ve más claro el ejemplo de Neftali Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#4
|
||||
|
||||
Efectívamente se ve más claro así.
Gracias Lepe. Aunque si desde fuera no se necesita acceder al formulario, puede ir utilizando la misma variable siempre, teniendo en cuenta que esta apuntará al último formulario creado.
__________________
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
|
|||
|
|||
Gracias por responder tan rapido.
Solo una duda, al crear un nuevo formulario tambien se crean los objetos tal y como se creal el primero, solo que si yo hago una nueva orden los campos que tenia anteriormente en mi otra orden tambien se modifican, ¿Como puedo hacer que sean independientes del primero? Saludos!!! Última edición por odrack fecha: 30-12-2008 a las 19:44:16. |
#6
|
||||
|
||||
Eso es porque estás usando en ambos la misma fuente de datos. ¿Es una tabla? ¿Está la tabla en un datamodule?
En ese caso lo que debes hacer es colocar la fuente de datos en el formulario. El TTable, por ejemplo. Al crear los dos formularios se crearán dos TTable distintos (aunque apunten a la misma tabla, ya no apuntarán al mismo datos), de esa forma serán independientes.
__________________
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. |
#7
|
|||
|
|||
Saludos
Utilizo Tquery, un adoquery, Datasourse, el detalle que tengo es que utilzo dos form mas, uno para seleccionar el proveedor y otro para hacer modificaciones por medio del adoquery. tendria que crear o duplicar los form a los que llama la forma principal?? |
#8
|
||||
|
||||
Simplemente el TQuery que utilizas en el formulario, en lugar de tenerlo en el DataModule lo colocas dentro del formulario, de esa forma al crear el nuevo formulario también se creará un nuevo query.
No se si me explico.
__________________
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. |
#9
|
|||
|
|||
Saludos.
Una disculpa, el que no se explico fui yo, y creo entender cual es mi problema, cuando creo la copia del form se crea nuevamente todo, solo que yo tengo un error, cuando creo la forma esta esta direccionada a un form (Ej. Tform22(proveedor)), el cual obtengo la clave y la uno a un dbtext, cuando creo la nueva forma cambian los datos por que estoy haciendo una busqueda al mismo form (proveedor), ahi es donde tengo mi problema y tendre que modificarlo para al insertar mis datos no cambie el proveedor. Gracias por toda su ayuda, ahora depende de mi responder lo que falta, jeje. Saludos nuevamente compañeros del foro!! |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Cambiar el Caption de un Form en tiempo de ejecucion | kikodelphi | OOP | 5 | 14-01-2012 22:54:22 |
Cambiar Icono de un Form en tiempo de ejecución | gluglu | Gráficos | 2 | 09-02-2007 01:03:27 |
Crear Form en tiempo de Ejecución | harvicoco | Varios | 3 | 28-06-2006 14:55:05 |
Obtener Componentes de un form en tiempo de ejecucion | el-Cubil.com.ar | Varios | 2 | 21-10-2005 18:22:11 |
Crear un DSN en tiempo de ejecucion | neyvan | Conexión con bases de datos | 7 | 21-05-2004 17:41:45 |
|