Форум: "Основная";
Текущий архив: 2003.05.01;
Скачать: [xml.tar.bz2];
ВнизКак сделать прозрачное окно? Найти похожие ветки
← →
Andrew75 (2003-04-19 13:41) [0]Как сделать прозрачное окно?
← →
Лана Розанова (2003-04-19 13:47) [1]Код большой, не помню. Зайди в Поиск или в кладовку, там есть точно.
← →
Snap (2003-04-19 13:54) [2]Совсем прозрачное или на несколько процентов прозрачное?
← →
Andrew75 (2003-04-19 14:05) [3]Совсем
← →
Yanis (2003-04-19 14:17) [4]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.
А ещё есть компонент что бы делать отдельный участок формы прозрачным.
Кажется он лежит здесь: http://alexeenko.prima.susu.ac.ru/lynx/files/vcl/glassy10.zip
← →
Snap (2003-04-19 14:18) [5]Если ты имеешь ввиду форму, то visible:=false, если эта форма только одна и такой способ не поможет, можно присвоить ей регион к примеру только с одной видимой точной, которую ничкто и не заметит. А вот если окно создаётся с помощью АПИ, то просто нужно указать определённые опции в классе.
К тому же можно попробовать использовать функцию ShowWindow, опять таки с определёнными опциями.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.05.01;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c