Solo una observación.
Cita:
Empezado por D&W
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;
|
Con esta rutina propuesta, ninguna asignación ocurre sobre la variable de formulario que se pasa como parámetro.
Si se hacen dos llamadas consecutivas, por ejemplo:
Código Delphi
[-]
var
Form1: TForm1;
begin
MainForm.CreateOrRestoreForm(Form1, TForm1);
MainForm.CreateOrRestoreForm(Form1, TForm1);
end;
Se tendrá dos instancias de TForm1.
Hasta luego.
Sugerencia: Si querés crear una rutina que asigne el valor de esa variable, date una vuelta por el código fuente del método CreateForm de la clase TApplication.