Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Impedir que un Form reciba Foco (https://www.clubdelphi.com/foros/showthread.php?t=43575)

gluglu 15-05-2007 13:31:47

Impedir que un Form reciba Foco
 
Hola a todos !

Como puedo impedir que un Form reciba el Foco ?

Estoy mandando correos electrónicos mediante un TThread, y el proceso lo muestro en un Form creado para tal efecto (me he decidido por esta opción de un nuevo Form para mostrar el proceso).

Lo que quiero es impedir que el usuario pueda hacer click con el ratón sobre dicho form y que por lo tanto adquiera foco, e incluso impedir que adquiera el foco mediante cualquier combinación de teclas.

Gracias por vuestra ayuda.

dec 15-05-2007 13:58:09

Hola,

La pregunta es: pa' qué, o sea, qué sentido tiene que el formulario no pueda recibir el foco del usuario. :)

gluglu 15-05-2007 14:26:40

Al ser una ventana que muestra un proceso de envío de correo electrónico, no quiero que el usuario pueda hacer click encima y que dicha ventana reciba foco, con la evidente correspondiente pérdida de foco en el form que me encuentre trabajando (editando, o lo que sea).

Para ir más al detalle de la problemática, el Form creado para mostrar el proceso de envío, es un form NO modal, claro está. Si fuera modal no podría seguir trabajando en otros formularios.

Al tener otros formularios modales, si este form de proceso recibiera foco, y a su vez paso de mi aplicación a otra aplicación de windows cualquiera, al volver puede ocurrir que el form Modal en el cual estaba, quede detrás de todos los demás.

Para evitarme este, y otros casos diversos que creo no necesarios comentar ahora aqui, lo que intento es que precisamente ese form que muestra el proceso no pueda adquirir foco. Además en él se muestra sólo una barra de progreso propia y algunas indicaciones en forma de Labels.

Por lo tanto, desde el punto lógico y operativo también se podría argumentar que dicho form de progreso no pueda adquirir foco. :o

seoane 15-05-2007 14:48:16

¿Y para esto no esta la propiedad Enabled del form? :confused:

Cita:

Empezado por Ayuda de Delphi
Use Enabled to change the availability of the control to the user. To disable a control, set Enabled to false. Disabled controls appear dimmed. If Enabled is false, the control ignores mouse, keyboard, and timer events.

To re-enable a control, set Enabled to true. The control is no longer dimmed, and the user can use the control


seoane 15-05-2007 14:53:06

Y como no un poco de codigo ;)
Código Delphi [-]
  // Ponemos la propiedad Enabled del segundo form a false
  form2.Enabled:= FALSE;
  // Mostramos el segundo form
  form2.show;
  // Ponemos el primer form por encima
  form1.show;


  // Para cerrar el segundo form lo haremos por codigo
  form2.Close;

gluglu 15-05-2007 14:55:56

:eek: :eek: :eek:

A ver .... lo voy a probar.

Gracias Domingo.

gluglu 15-05-2007 15:07:14

Vaya !! Tan simple y tan efectivo. Funciona perfecto.

Es más, el form que utilizo para mostrar el proceso de envío, es un form sin marcos. Por lo que la operación de Enabled := False no le afecta lo más mínimo.

... y mira que andaba buscando ya soluciones imposibles ! :o

Una vez más, muchas gracias.


La franja horaria es GMT +2. Ahora son las 03:08:15.

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