![]() |
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. |
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:
|
Cita:
Por ejemplo con un TStringList (nombre + referencia) o con un TList. |
duranguenze: y ¿como se hace un arreglo de referencias a objetos del tipo "TObject"?
Neftali: ¿me podrias poner un pequeño ejemplo? |
1 Archivos Adjunto(s)
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: ![]() |
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.
|
| La franja horaria es GMT +2. Ahora son las 23:11:11. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi