Cita:
Empezado por Lepe
... Perdona D&W, pero no se ha dicho si quiere una instancia o varias del mismo Form, hecho que nos haría modificar bastante nuestro código.
Tampoco se dice si se quiere tener una referencia a la ventana creada, o no le importa.
|
Disculpa Lepe, pero de que haya una o varias instancias del mismo form, eso depende de la variable que se le pase como paramentro a la función que postie. (Si siempre le paso Form1, sólo habrá una instancia de tipo TForm1 y será siempre Form1.
Cita:
Empezado por Lepe
Código adecuado no creo que exista, lo tendrá que adaptar a sus necesidades y a su gusto. Al menos yo pretendía dar ideas, después él tendrá que adaptarlo.
|
En el club, cuando posteamos un código, se da por sobre entendido que es un molde y en muchos casos una sugencia. Cuando dije "Poco adecuado" en ningún momento pretendí decir que era un mal código, al contrario.
Cita:
Empezado por Lepe
En cuanto a tu código, no entiendo muy bien como harías una llamada a esa rutina, porque el parámetro es de tipo TForm y después haces un moldeo de tipos a TFormClass en la línea 2. Que conste que no es una crítica, es más bien una duda.
|
Si yo pido como parámetro una variable tipo TFormClass entonces me tendrían que pasar por ejemplo TForm1 en vez de Form1 (según entiendo Hasta donde llega mi limitada comprensión del lenguaje). De todos modos, luego que postie el código me dí cuenta que produciía el Acccess Violation que me mencionó
nelostanley , fue entonces que ví que había que pedir dos parámentros en vez de sólo uno -el nombre de la varíable y el tipo de variable o form- no puede postear los cambios porque no me dio tiempo de hacerlo.
Cita:
Empezado por Lepe
Otros comentarios:
- La línea 3 puede quitarse, como son mdichild, al crear la ventana se muestra por defecto.
|
Gracias por la aclaración, ya lo sabía. También sé que no está de más la linea y que de esa forma la función también puede servir para todo tipo de formularios, ya sean mdiChild o mdiNormal.
aquí va la modificación, espero sirva.
Código Delphi
[-]
Procedure TMainForm.CreateOrRestoreForm(aForm : TForm, aFormClass : TFormClass);
if not Assigned(aForm) Then begin
aForm := aFormClass.Create(Application);
aForm.Show;
end
else begin
if aForm.WindowState = wsMinimized then
aForm.WindowState := wsNormal;
aForm.BringToFront;
end;
end;
Para llamar a la función lo haces así:
Código Delphi
[-]
CreateOrRestoreForm(frmC1,TfrmC1);