![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Прозрачность [D2005, 2003]
гыгы © (2008-07-04 20:40:00)Как сделать что бы сама форма была прозрачная а компоненты на ней нет? Я сделал на свойствах формы:
AlphaBlend - True
AlphaBlendValue - 100
но прозрачна не только форма но и все находящиеся на ней, а я хотел бы что бы форма прозрачна а например Лейбл на ней видно отчетливо.как это сделать, заранее спасибо
Renegat (2008-07-04 20:56:00) [1]> [1] Rouse_ © (04.07.08 20:44)
Речь видимо шла не о полной прозрачности, а только об альфа-блендинге...
может быть, наследовать кнопки не от того полупрозрачного окна, а от "приклеенного" к нему ещё одного, над которым прочтено заклятие из [1]?
Криво конечно.
но работать будет
Rouse_ (2008-07-04 20:44:00) [2]
procedure TForm1.Button1Click(Sender: TObject);
var
I, X, Y: Integer;
TmpReg, WindowRegion: HRGN;
hRect: TRect;
begin
hRect := GetClientRect;
X := (Width - hRect.Right) div 2;
Y := Height - hRect.Bottom - GetSystemMetrics(SM_CYSIZEFRAME);
WindowRegion := CreateRectRgnIndirect(hRect);
GetWindowRgn(Handle, WindowRegion);
try
for I := 0 to ComponentCount - 1 do
with TControl(Components[I]) do
begin
if Parent = Self then
begin
TmpReg := CreateRectRgn(Left + X, Top + Y, Width + Left + X, Height + Top + Y);
try
CombineRgn(WindowRegion, TmpReg, WindowRegion, RGN_XOR);
finally
DeleteObject(TmpReg);
end;
end;
end;
TmpReg := CreateRectRgnIndirect(hRect);
try
GetWindowRgn(Handle, TmpReg);
CombineRgn(WindowRegion, TmpReg, WindowRegion, RGN_XOR);
SetWindowRgn(Handle, WindowRegion, True);
finally
DeleteObject(TmpReg);
end;
finally
DeleteObject(WindowRegion);
end;
end;