Главная страница
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.01 c
1-51740
AndrewCh
2002-12-06 14:10
2002.12.16
Как определить размер каталога с вложенными подкаталогами?


1-51808
kepten
2002-12-05 09:50
2002.12.16
Как неписать много if


1-51825
HP
2002-12-05 11:14
2002.12.16
FastReprt


1-51675
123000
2002-12-05 17:23
2002.12.16
Tables


4-52003
Lexa1900
2002-11-02 20:37
2002.12.16
Можно ли программно произвести клик мышкой?