Question

Je cherche un moyen de créer un formulaire enfant avec AlphaBlend, en utilisant si possible des fenêtres superposées car il y aura des contrôles interactifs derrière ce formulaire.

Le problème est que j’ai un composant dans un TForm standard qui peint plusieurs calques visuels (dessins, images ...). À un moment donné, j'ai besoin d'instancier un contrôle d'éditeur sur ce formulaire (in-situ), ce contrôle impliquera une variété de contrôles d'entrée standard en dehors de mon contrôle (zone d'édition, case à cocher, etc.), mais je souhaite superposer les calques situés devant le calque en cours de modification à l'aide de la fusion alpha (et WS_EX_TRANSPARENT pour qu'il soit cliqué).

J'ai d'abord pensé à utiliser des formulaires enfants pour cela (les TForm sans bordure sont apparentés au composant), et cela fonctionne parfaitement, jusqu'au point où AlphaBlended TForm n'est pas du tout alphablendu, mais devient opaque dès qu'il est parent ...

J'ai ensuite essayé de laisser de côté la forme alphablended, de la définir sur fsStayOnTop et, en réagissant aux événements pertinents, de la conserver devant le composant à l'écran, cela fonctionne, mais ce n'est pas une solution vraiment satisfaisante: l'alphablended. La forme StayOnTop est également devant d'autres formes modales et non modales de l'application, si l'utilisateur décide de les déplacer devant le composant ...

Donc, y a-t-il d'autres idées sur la façon de faire une alphablended pour une forme enfant? (ou se comporter comme il est)

Était-ce utile?

La solution

Selon MSDN, vous n'avez aucune chance, comme WS_EX_LAYERED ne peut pas être utilisé pour les fenêtres enfants .

Vous pourriez peut-être masquer tous les formulaires de l'éditeur lorsque votre formulaire / votre application perd son focus, ce qui les empêcherait au moins de ne pas se retrouver au-dessus des autres fenêtres. C'est quand même insatisfaisant ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top