Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Efectos en el form que abre un ShowModal (https://www.clubdelphi.com/foros/showthread.php?t=58468)

mam1986 21-07-2008 19:45:21

Efectos en el form que abre un ShowModal
 
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 :

Código Delphi [-]
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 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

como puedo hecer multiventanas mi aplicacion
 
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


La franja horaria es GMT +2. Ahora son las 02:25:46.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi