Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Прозрачность [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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо