Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.021 c
6-51855
delpher_gray
2002-10-16 13:09
2002.12.16
Передача файлов через сокеты


1-51787
Roman_Tutov
2002-12-04 12:53
2002.12.16
Как проверить активен-ли процесс


4-52032
TankMan
2002-11-05 12:24
2002.12.16
Как узнать, приоритет любой программы?


14-51914
Avtograf
2002-11-21 22:05
2002.12.16
Чем можно просмотреть файл данных *.bdf


3-51570
Брат
2002-11-27 10:11
2002.12.16
Обработка исключительной ситуации InterBase





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский