Lenguaje de programación Borland Delphi
La función que a continuación os mostramos abre un formulario no modal en un entorno MDI (interfaz de múltiples documentos). Si ya está creado lo muestra con "Show", en caso contrario lo crea y lo muestra:
//abrir una ventana MDI
procedure afi (nombreVentana : tform; tnombreVentana : TComponentClass;
snombreventana : String);
var
f : tform;
begin
screen.cursor := crhourglass;
lockwindowupdate(application.mainform.handle); //quitar efecto maximizado
try
F := application.findcomponent(snombreventana) as tform;
if Assigned(F) then
begin
if f.WindowState = wsminimized then
if vtestadocarga = 1 then
f.windowstate := wsmaximized
else
f.windowstate := wsnormal;
f.bringtofront;
screen.cursor := crdefault;
end
else
begin
application.createform (tnombreventana, nombreventana);
if vtestadocarga = 1 then
nombreventana.WindowState := wsmaximized;
end;
finally
screen.Cursor := crDefault;
lockwindowupdate(0);
end;
end;
Un ejemplo de utilización:
procedure TFormMenuPrincipal.Variedades1Click(Sender: TObject);
begin
afi(formvariedades, tformvariedades, 'formvariedades');
end;
Nota 1: hemos utilizado la función "lockwindowupdate" para quitar el efecto de maximizado que realiza Windows pues resulta algo molesto.
Nota 2: con "application.findcomponent" buscamos si ya está creado el formulario para no volver a crearlo.
Nota 3: La variable global "vtestadocarga" la utilizamos para mostrar la ventana maximizada o a su tamañano normal.
Publicado el: 2005-07-26