FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
|||
|
|||
clonar forms
Hola, mi problema es que tengo un form principal, y otro preparado que es el que clono.
Desde el principal llamo a esta funcion: procedure FormClone(form : TForm) ; var ms : TMemoryStream; clone : TForm; begin ms := TMemoryStream.Create; try ms.WriteComponent(form) ; ms.Position := 0; clone := TFormClass(form.ClassType).CreateNew(Application) ; ms.ReadComponent(clone) ; clone.caption:=Datos.TablaListado.Fields.FieldByName('Nombre').AsString; clone.Left := form.Left; clone.Top := form.Top; clone.Visible:=false; Form3.Edit1.Text:=IntToStr(indice+1);//esto es una variable que luego uso clone.Show; finally ms.Free; end; end; Asta aqui todo bien, me clona la ventana, unas veces 3, otras 4 veces... lo que necesite el programa, y la ventana clonada comienza a trabajar. Como puede verse en la funcion, la ventana está oculta. El problema es que hay algunas ocasiones en el que tengo que introducir algun dato de forma manual, y detecto cuando es, pero no consigo poner la ventana visible. Es decir tengo 4 ventanas generadas a partir de esa funcion trabajando y quiero en un momento dado, que la ventana 2 (por ejemplo) se ponga visible, no se como puedo referirme a esa ventana en concreto para ponerla visible, he probado a poner form3.visible:=true; (form3 es la ventana que clono) y lo que hace es abrirme una nueva... Alguna idea? gracias. |
#2
|
|||
|
|||
Asi como esta el codigo creas formularios a lo alli se va, y dejas que anden volando por alli, ya que creas una variable tipo TForm en un sub procedimiento, al crearlo y terminar, esa variable se queda en el limbo esperando a que terminen con su vida, cuando mandas a llamar otra funcion lo que pasa es que como el espacio asignado a la variable anterior clone, ya esta ocupado, delphi asigna otro nuevo espacio, y se puede crear otro formulario:
Cita:
|
#3
|
||||
|
||||
Cita:
Por ejemplo con un TStringList (nombre + referencia) o con un TList.
__________________
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. |
#4
|
|||
|
|||
duranguenze: y ¿como se hace un arreglo de referencias a objetos del tipo "TObject"?
Neftali: ¿me podrias poner un pequeño ejemplo? |
#5
|
||||
|
||||
La idea es convertir ese procedimiento y devolver el formulario creado.
Luego por otro lado creas una Lista de Objetos (TStringList) y vas añadiendo los formularios creados y el nombre. Ahí te envío un ejemplo de cómo añadirlo a la lista y luego accederlos:
__________________
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. |
#6
|
|||
|
|||
me he descargado el ejemplo y le e estado mirando, aun no le he llevado a mi aplicacion pero creo que me va a ser de gran ayuda, muchas gracias.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Clonar Form (fsMDIChild) | ManuelPerez | Varios | 8 | 20-09-2007 10:29:57 |
Clonar TADOQuery | david.rguez | Conexión con bases de datos | 2 | 19-09-2007 16:26:44 |
Clonar Objeto | senda | OOP | 1 | 13-08-2007 18:24:35 |
Duplicar / Clonar tabla con ADO | Marcb3 | Conexión con bases de datos | 2 | 30-01-2007 13:15:37 |
Como Clonar un ibDataset???? | AGAG4 | Firebird e Interbase | 4 | 28-10-2004 17:21:36 |
|