![]() |
Obtener el nombre del Form que llamó a otro Form.
Buenas tardes,
Hay alguna forma de saber el nombre del Formulario que realizó la llamada a otro (obviamente a partir de un click de algún botón)?. Es decir , yo tengo una aplicación con un botón que hace la llamada a otro Form, el Form origen no queda atras, todavía no fue cerrado ya que es MDI. Al hacer click en el botón , me aparece el otro Form, pero yo quiero desde este poder saber desde que Form fue llamado. Hay alguna posibilidad, sin usar una función que yo le pase por ejemplo, el nombre del formulario a la otra pantalla?:) |
Cita:
Y desde la FormaX la asignas y lanzas la forma2.
Salud OS |
Hola cybergerman, puedes utilizar el Owner(propietario) del formulario, para ello cuando crees el segundo formulario debes decirle que su propietario sera el formulario actual.
Saluditos |
Cita:
Salud ITOS |
Cita:
Saluditos |
Sólo aportar un detalle que me parece importante:
1 - Si cierras el Form1, se cierra automáticamente el Form2. 2 - Si Form2 ya estaba creado previamente, estás teniendo fugas de memoria, (lo que llamamos memory leak) ya que estás creando un TForm2 nuevo, pero asignándolo a la variable global "Form2" Al ser ventanas MDICHILD se complica aún más porque, como dices, puede crearse la ventana Form2 desde varios sitios. Hay soluciones elegantes y otras no tanto, no sé cual quieres utilizar: - la "elegante": usar herencia visual creando una ventana base y métodos genéricos que pueden llamarse desde cualquier ventana del mismo tipo. - La simple: comprobar que "Form2 = nil" antes de crear la ventana y al tiempo de cerrarla, poner esa variable a nil (en el Form2.Close). Saludos |
Muchas Gracias
Les agradezco,
solución ganadora, la propuesta por Caro. Yo realizaba la llamada a mi otro form de esta forma: procedure TForm1.Button1Click(Sender:TObject); begin if not Assigned (Form2) then Application.CreateForm (TForm2,Form2) else Form2.Show; end; la form2 es una unit que yo ya la había agregado a la unit form1. Pero en el form2 no tenía forma de saber que form lo había llamado a no ser que definiera una variable global en el form2. Así que reemplazé el código por la de Caro y ya funciona. Gracias |
Yo lo que haria es crear el formulario, mostrarlo y a la hora de cerrarlo liberarlo (Action = Cafreee en caso de MDI), si quiero cargar el formulario nuevamente pues lo creo de nuevo. Aunque no lo creas, de esta manera optimizaras el uso de la memoria y ademas, evitaras estar pensando si tu variable Form2 esta instanciada o no.
|
Hola, bueno soy nuevo en delphi y me ha gustado esta web, tenia una duda aver si me ayudan que no he entendido muy bien:
Código:
unit Unit1; |
sólo te falta un begin... end porque dicho if tiene más de una instrucción dentro:
COmo hago para llamar un segundo formulario desde el formulario principal?[/quote] |
La franja horaria es GMT +2. Ahora son las 15:12:33. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi