PDA

Ver la Versión Completa : Efectos en el form que abre un ShowModal


mam1986
21-07-2008, 19:45:21
Hola.
Quisiera conseguir que la ventana principal, desde la que abro otra con ShowModal, se oscureciera o manifestara algún efecto que indicase claramente que no es operativa hasta cerrar la ShowModal. No se si esto es posible desde Delphi (estoy utilizando Delphi 5) o a través de alguna API de Windows.
Agradeceré cualquier ayuda.....

javier7ar
21-07-2008, 20:04:26
podes hacer una funcion que recorra todos los componentes del form y los deshabilite (enabled = FALSE) y te daria un efecto como el que queres, y sino simplemente cambiando el color del form por uno un poquito mas oscuro y listo

mam1986
21-07-2008, 20:17:09
Gracias javier7ar por responder. Tu propuesta ya la habia valorado, pero la descarté por la complejidad de la ventana principal, ya que dispone de cientos de objetos (TPageControl con múltiples pestañas, cada una de ellas mostrando información de tablas, con gran cantidad de TDBEdit, botones, etc. y el usuario puede estar situado en cualquiera de ellas cuando abre el showmodal). Buscaba algo más rápido y sin tanta complicación. También pensé en ocultar el form principal con la propiedad Visible, pero el efecto no es el deseado, puesto que me interesa poder ver datos contenidos en este form, moviento la ventana showmodal. Lo dicho, gracias por tu respuesta.

coso
21-07-2008, 20:43:28
la opcion de javier7r es la que yo uso :


procedure UnBrick(f : TForm);
var
i, r : integer;
begin
r := f.ComponentCount;

for i := 0 to r - 1 do
Activar(f.Components[i], true);
end;

procedure Brick(f : TForm);
var
i, r : integer;
begin
r := f.ComponentCount;

for i := 0 to r - 1 do
Activar(f.Components[i], false);
end;

procedure Activar(c : TComponent; v : boolean);
var
i, r : integer;
begin
r := c.ComponentCount;

for i := 0 to r - 1 do
Activar(c.Components[i], v);

try
(c as TControl).Enabled := v;
except
end;

try
(c as TMenuItem).Enabled := v;
except
end;
end;

mam1986
21-07-2008, 20:52:46
Muchas gracias coso y javier7ar. Voy a poner en práctica vuestra sugerencia (no tenía claro como recorrer todos los componentes sin nombrarlos uno a uno).

ElKurgan
22-07-2008, 06:14:58
También puedes probar este truco (http://delphi.about.com/od/delphitips2008/qt/form_dimmer.htm) de Zarko Gajic, que explica como hacer DMI-Out en ventanas modales

Un saludo

mam1986
22-07-2008, 10:14:47
Gracias ElKurgan. Es un artículo muy interesante y se acerca más al efecto que ando buscando (que el form principal aparezca en tono gris o apagado hasta salir de la ventana modal). Probaré a ver si lo consigo....

Saludos

dalsim
03-08-2008, 22:30:47
si desde el menu abro un form com puedo hacer para que me abra otro formulari sin cerra el ue tengo abierto?

coso
04-08-2008, 09:50:47
Hola, esto deberia ser otro hilo...puedes probar de llamar las nuevas forms con el show en vez de con el showmodal, o bien haciendo una form con formstyle MDIform y las demas con formstyle MDIChild