关于delphi:AlphaBlend子窗体

AlphaBlend a child form

我正在寻找一种AlphaBlend子窗体的方法,如果可能的话,可以使用分层窗口,因为它后面会有交互控件。

问题是我在常规TForm中有一个组件,该组件绘制了多个可视层(图形,图片...)。在某个时候,我需要实例化此表单上的编辑器控件(就地),此控件将涉及控件之外的各种标准输入控件(编辑框,复选框等),但是我想覆盖使用alpha混合(和WS_EX_TRANSPARENT使其可单击)编辑的图层前面的图层。

我首先想到了为此使用子表单(无边界TForm作为组件的父元素),并且可以正常工作的问题,直到AlphaBlended TForm完全不被alphablended的程度,但是一旦变为不透明育儿...

然后我尝试取消父混合形式的父项,将其设置为fsStayOnTop,并通过对相关事件做出反应,将其置于屏幕上的组件前面,这是可行的,但这并不是真正令人满意的解决方案:如果用户决定将它们移动到组件的前面,则StayOnTop窗体也位于应用程序的其他模式和无模式窗体的前面。

那么,关于形成子表单的方式还有其他想法可以混用吗? (或表现得如此)


根据MSDN,您不走运,因为WS_EX_LAYERED不能用于子窗口。

也许当您的表单/应用程序失去焦点时,您可以隐藏所有编辑器表单,这至少会使它们不位于其他窗口的顶部。但是,它还是不令人满意...