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

Вниз

Прозрачная ФОРМА, но не компоненты.   Найти похожие ветки 

 
greenrul ©   (2002-12-03 19:09) [0]

Как сделать нивидымым форму, оставив все control"ы на ней видимыми? Пробовал через регионы (SetWindowRgn), но он либо всю форму, либо ничего.

Можно конечно сложить все control"ы в один регион, и его засобачить в SetWindowRgn, но тогда
1) Нет ли другого, более оптимального способа?
2) Если нет, то как объеденить эти регионы?


 
greenrul ©   (2002-12-04 19:12) [1]

?


 
Юрий Зотов ©   (2002-12-04 19:56) [2]

1. Попробуйте повозиться со стилем формы WS_EX_TRANSPARENT (устанавливается в методе CreateParams). Но если и получится, то не для графических контролов.

2. CombineRgn.


 
kronprince ©   (2002-12-04 20:43) [3]

Ты пробовал да не распробовал.

CombineRgn() - и все контролы в один регион :)))


 
mukha ©   (2002-12-04 22:54) [4]

Отправил пример. Правда только один EXE-файл.Исходники никак не найду.сделано в Д-5, скампилировано без пакетов, вес 15 КБ, заинтересует буду искать исходники.


 
ZEE ©   (2002-12-05 01:16) [5]

Вот пример с регионами.

в protected добавляем
procedure RebuildWindowRgn;

в OnCreate формы добавляем
RebuildWindowRgn;

и добавляем саму процедурку
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;



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

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

Наверх




Память: 0.48 MB
Время: 0.014 c
14-51937
Shved
2002-11-25 00:31
2002.12.16
Как перенести базу данных на другой компьютер?


7-51980
RUS1
2002-10-16 11:05
2002.12.16
Запускаем процесс...


4-51990
kosdem
2002-11-01 05:06
2002.12.16
реестр


3-51559
Delphin2002
2002-11-26 13:10
2002.12.16
дублировать значение


14-51933
Карелин Артем
2002-11-25 13:35
2002.12.16
О чем разговаривают программисты за пивом.