AlphaBlend一个子表单

时间:2009-05-05 13:00:23

标签: delphi forms parent alphablending

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

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

我首先考虑使用子表单(无边界TForm成为组件的父级),并且可以正常工作,直到AlphaBlended TForm根本没有alpha混合,但变为不透明的很快就成了... ...

然后我尝试取消对alphablended形式的删除,将其设置为fsStayOnTop,并通过对相关事件作出反应,将其保留在屏幕上的组件前面,这样可行,但这不是一个真正令人满意的解决方案:alphablended如果用户决定将它们移到组件前面,StayOnTop表单也会出现在应用程序的其他模态和无模式前面...

那么,有关儿童形式的任何其他想法都会被混淆吗? (或表现得像)

1 个答案:

答案 0 :(得分:2)

根据MSDN,你运气不好,WS_EX_LAYERED cannot be used for child windows

当您的表单/应用程序失去焦点时,也许您可​​以隐藏所有编辑器表单,这至少可以防止它们在其他窗口之上。不过,它还不尽如人意......