如何防止子表单继承父表单的Alphablend属性?

时间:2018-05-14 05:54:14

标签: api delphi vcl

我创建了一个表单(Form1),我将其用作背景表单。我将其AlphaBlend属性设置为True并将其AlphaBlendValue设置为230,使表单透明。

然后我创建了第二个完全独立的表单(Form2),其AlphaBlend属性为False(我甚至在创建表单时隐式设置它)。然后我将Form1设置为Form2的父窗口(通过Form2.Parent = Form1)。

这使子窗口成为父窗口AlphaBlend属性,然后无法独立更改。我根本无法修改Form2上的Alpha属性。

我要求Form2成为Form1的子级,但不能继承Alpha属性。

2 个答案:

答案 0 :(得分:0)

也许您可以考虑另一种方法:不要设置“嵌入”表单的父级,而是将其保持独立。而是处理WM_WINDOWPOSCHANGING的消息Form1并设置相对于Form2的{​​{1}}的{​​{1}}位置:

ClientOrigin

enter image description here

仔细观察,可以看出第二种形式在跟随第一种形式的运动时滞后一个像素左右,不应该太令人不安。

答案 1 :(得分:-1)

确定我已经更改了我的源代码以通过在主应用程序上添加两个表单来修复WS_EX_LAYERED窗口表单上的问题,其中一个是alphablend true,其中200值作为背景,第二个是正常的前窗口主应用程序完全透明,属性透明色,这是我的第一个beta解决方案的链接https://1drv.ms/u/s!Alu0WnpJr3ruhTB68XOMcpd3mB5u

最后我对背景形式有一点问题,它不能成为任何控件的容器,甚至命中测试也不会对它起作用....我希望接受我的想法即使有了尚未完成......