Pregunta

Estoy buscando una forma de AlphaBlend un formulario hijo, si es posible usando ventanas en capas, ya que habrá controles interactivos detrás de él.

El problema es que tengo un componente en un TForm regular que pinta múltiples capas visuales (dibujos, imágenes ...). En algún momento necesito crear una instancia de un control de editor en este formulario (en el lugar), este control incluirá una variedad de controles de entrada estándar fuera de mi control (cuadro de edición, casilla de verificación, etc.), sin embargo, me gustaría superponer las capas que se encuentran frente a la capa que se está editando mediante la combinación alfa (y WS_EX_TRANSPARENT para hacer clic).

Primero pensé en usar formas secundarias para eso ( TForm sin bordes parental al componente), y eso funciona bien, hasta el punto en que el TForm AlphaBlended no se mezcla alfabéticamente en absoluto, pero se vuelve opaco tan pronto como se crea como padre ...

Luego traté de desvincular la forma alphablended, la configuré en fsStayOnTop y, al reaccionar a los eventos relevantes, la mantuve frente al componente en pantalla, eso funciona, pero esa no es una solución realmente satisfactoria: la alphablended El formulario StayOnTop también se encuentra frente a otros formularios modales y no modales de la aplicación, en caso de que el usuario decida moverlos al frente del componente ...

Entonces, ¿alguna otra idea sobre cómo hacer que una forma secundaria se mezcle alfabéticamente? (o comportarse como es)

¿Fue útil?

Solución

Según MSDN, no tiene suerte, ya que WS_EX_LAYERED no se puede usar para ventanas secundarias .

Tal vez podría ocultar todos los formularios del editor cuando su formulario / aplicación pierda el enfoque, por lo menos evitaría que estén en la parte superior de otras ventanas. Aún así, es insatisfactorio ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top