![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Прозрачные окошки
Алексей Петухов © (2003-09-05 12:10:00)
Здравствуйте, мастера.
Подскажите пожалуйста, как сделать формочку слегка прозрачной?
Asteroid (2003-09-07 21:01:00) [1]
Для 9х - копирование экрана под формой, копирование самой формы и blend одного на другое. Также есть компонент TGlassy.
Songoku (2003-09-07 18:50:00) [2]
Удалено модератором
Примечание: Offtopic
cult_passwordForgotten (2003-09-05 18:18:00) [3]
если Дельфи версии 6 и выше - у формы есть свойство AlphaBlendValue, делающее ее прозрачной, по-иоему, 256 градаций существует.
y-soft (2003-09-05 13:43:00) [4]
Sorry, как-то странно вставилось:))
const
WS_EX_LAYERED = $00080000;
LWA_ALPHA = $00000002;
CUR_ALPHA = 224; //Степень непрозрачности (0..255)
...
procedure TMyForm.FormCreate(Sender: TObject);
type
TSetLayeredWindowAttributes = function (Hwnd: THandle; crKey: COLORREF;
bAlpha: Byte; dwFlags: DWORD): Boolean; stdcall;
var
SLWA : TSetLayeredWindowAttributes;
User32 : THandle;
ExStyle : Longint;
begin
fUsers := TSafeObjList.Create(TUser);
fDefaultUser := nil;
fTryCnt := 3; //!!!
fResult := False;
User32 := GetModuleHandle("User32.dll");
if User32 > 0 then
begin
SLWA := GetProcAddres(User32,"SetLayeredWindowAttributes");
if assigned(SLWA) then
begin
ExStyle := GetWindowLong(Handle, GWL_EXSTYLE);
SetWindowLong(Handle, GWL_EXSTYLE, ExStyle or WS_EX_LAYERED);
SLWA(Handle, 0, CUR_ALPHA, LWA_ALPHA);
end;
end;
end;
y-soft (2003-09-05 13:34:00) [5]
В Windows 2000 и выше можно так:
const
WS_EX_LAYERED = $00080000;
LWA_ALPHA = $00000002;
CUR_ALPHA = 224; //Степень непрозрачности (0..255)
procedure TMyForm.FormCreate(Sender: TObject);
type
TSetLayeredWindowAttributes = function (Hwnd: THandle; crKey: COLORREF;
bAlpha: Byte; dwFlags: DWORD): Boolean; stdcall;
var
SLWA : TSetLayeredWindowAttributes;
User32 : THandle;
ExStyle : Longint;
begin
fUsers := TSafeObjList.Create(TUser);
fDefaultUser := nil;
fTryCnt := 3; //!!!
fResult := False;
User32 := GetModuleHandle("User32.dll");
if User32 > 0 then
begin
SLWA := GetProcAddres(User32,"SetLayeredWindowAttributes");
if assigned(SLWA) then
begin
ExStyle := GetWindowLong(Handle, GWL_EXSTYLE);
SetWindowLong(Handle, GWL_EXSTYLE, ExStyle or WS_EX_LAYERED);
SLWA(Handle, 0, CUR_ALPHA, LWA_ALPHA);
WS_EX_LAYERED);
end;
end;
end;
Если хотите большего - прочитайте про функции SetLayeredWindowAttributes и UpdateLayeredWindow