Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.11.02;
Скачать: CL | DM;

Вниз

Прозрачность компонентов   Найти похожие ветки 

 
viRUS ©   (2008-01-27 20:23) [0]

У меня проблема: я использую на форме RxGifAnimator с прозрачным анимированным gif. Форма прозрачная (из под нее виден Windows компоненты видны а формы нет. так вот, мне нужно, чтоб под RxGifAnimator не было фона. Для прозрачности формы пользуюсь этим:
unit unit1;
interface
uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls;
type
 TForm1 = class(TForm)
 Button1: TButton;
 Button2: TButton;
   // это просто кнопка на форме - для демонстрации
 protected
   procedure RebuildWindowRgn;
   procedure Resize; override;
 public
   constructor Create(AOwner: TComponent); override;
 end;
var
 Form1 : TForm1;
implementation
// ресурс этой формы
{$R *.DFM}

{ Прозрачная форма }
constructor TForm1.Create(AOwner: TComponent);
begin
 inherited;
 // убираем сколлбары, чтобы не мешались
 // при изменении размеров формы
 HorzScrollBar.Visible:= False;
 VertScrollBar.Visible:= False;
 // строим новый регион
 RebuildWindowRgn;
end;

procedure TForm1.Resize;
begin
 inherited;
 // строим новый регион
 RebuildWindowRgn;
end;

procedure TForm1.RebuildWindowRgn;
var
 FullRgn, Rgn: THandle;
 ClientX, ClientY, I: Integer;
begin
 // определяем относительные координаты клиенской части
 ClientX:= (Width - ClientWidth) div 2;
 ClientY:= Height - ClientHeight - ClientX;
 // создаем регион для всей формы
 FullRgn:= CreateRectRgn(0, 0, Width, Height);
 // создаем регион для клиентской части формы
 // и вычитаем его из FullRgn
 Rgn:= CreateRectRgn(ClientX, ClientY, ClientX + ClientWidth, ClientY +
ClientHeight);
 CombineRgn(FullRgn, FullRgn, Rgn, rgn_Diff);
 // теперь добавляем к FullRgn регионы каждого контрольного элемента
 for I:= 0 to ControlCount -1 do
   with Controls[I] do begin
     Rgn:= CreateRectRgn(ClientX + Left, ClientY + Top, ClientX + Left +
Width, ClientY + Top + Height);
     CombineRgn(FullRgn, FullRgn, Rgn, rgn_Or);
   end;
 // устанавливаем новый регион окна
 SetWindowRgn(Handle, FullRgn, True);
end;
end.


 
KilkennyCat ©   (2008-01-27 20:42) [1]

> чтоб под RxGifAnimator не было фона

нужно его переписать.


 
viRUS ©   (2008-01-27 20:46) [2]

Что? RxGifAnimator?


 
KilkennyCat ©   (2008-01-27 21:20) [3]

наверное.


 
KilkennyCat ©   (2008-01-27 21:23) [4]

и кстати, прозрачность и отсутствие - разные вещи.



Страницы: 1 вся ветка

Текущий архив: 2008.11.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
1-1200976524
skiph
2008-01-22 07:35
2008.11.02
WebBrowser и Word


15-1221060690
keymaster
2008-09-10 19:31
2008.11.02
как избавиться от хинта?


1-1201774076
Still Swamp
2008-01-31 13:07
2008.11.02
Мультиязыковая поддержка


1-1201264323
Kolan
2008-01-25 15:32
2008.11.02
Как дисэйблить кнопки если операция не поддерживается&#133 ?


2-1222100965
Terasbetoni
2008-09-22 20:29
2008.11.02
MainMenu не видно на форме, у которой Parent ом является др форма