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 30-12-2008
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
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!!
Responder Con Cita
  #2  
Antiguo 30-12-2008
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.293
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
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í:
Código Delphi [-]
  Application.CreateForm(TForm1, Form1);

bastará con crear uno nuevo:
Código Delphi [-]
  Form1 := TForm1.Create(Application);

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:
Código Delphi [-]
  Action := caFree;

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.
Responder Con Cita
  #3  
Antiguo 30-12-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Código Delphi [-]
Form1 := TForm1.Create(Application);
Copia := TForm1.Create(Application);
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.
Responder Con Cita
  #4  
Antiguo 30-12-2008
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.293
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
Cita:
Empezado por Lepe Ver Mensaje
Creo que así se ve más claro el ejemplo de Neftali
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.
Responder Con Cita
  #5  
Antiguo 30-12-2008
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
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.
Responder Con Cita
  #6  
Antiguo 30-12-2008
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.293
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
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.
Responder Con Cita
  #7  
Antiguo 31-12-2008
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
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??
Responder Con Cita
  #8  
Antiguo 31-12-2008
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.293
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
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.
Responder Con Cita
  #9  
Antiguo 31-12-2008
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
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!!
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

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


La franja horaria es GMT +2. Ahora son las 19:25:15.


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