Domanda

Sto cercando un modo per AlphaBlend un modulo figlio, se possibile usando finestre a più livelli poiché ci saranno controlli interattivi dietro di esso.

Il problema è che ho un componente in un normale TForm che dipinge più livelli visivi (disegni, immagini ...). Ad un certo punto ho bisogno di istanziare un controllo dell'editor su questo modulo (sul posto), questo controllo coinvolgerà una varietà di controlli di input standard al di fuori del mio controllo (casella di modifica, casella di controllo, ecc.), Tuttavia vorrei sovrapporre i livelli davanti al livello in fase di modifica utilizzando la fusione alfa (e WS_EX_TRANSPARENT per renderlo click-through).

Ho pensato per la prima volta di usare i moduli figlio per questo ( TForm senza bordi associato al componente), e questo funziona bene, fino al punto in cui AlphaBlended TForm non è affatto alfa, ma diventa opaco non appena genitore ...

Ho quindi provato a non separare la forma alfablended, impostarla su fsStayOnTop e, reagendo agli eventi rilevanti, tenerlo davanti al componente sullo schermo, che funziona, ma non è una soluzione davvero soddisfacente: l'alfablended Il modulo StayOnTop è anche di fronte ad altre forme modali e non modali dell'applicazione, nel caso l'utente decida di spostarle davanti al componente ...

Quindi, qualsiasi altra idea su come ottenere una forma figlio dovrebbe essere alfa? (o comportarsi come è)

È stato utile?

Soluzione

Secondo MSDN sei sfortunato, come WS_EX_LAYERED non può essere utilizzato per le finestre secondarie .

Forse potresti nascondere tutti i moduli dell'editor quando il tuo modulo / applicazione perde lo stato attivo, che almeno impedirebbe loro di essere in cima ad altre finestre. Tuttavia, è insoddisfacente ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top