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

Вниз

Можно ли сделать форму прозрачной   Найти похожие ветки 

 
Glonia Zbanov   (2002-07-15 13:06) [0]

Можно ли сделать форму прозрачной
If answer=true then Каким образом.


 
BizonWar   (2002-07-15 13:11) [1]

Можно.
См.
createpolygonrgn(p,10,ALTERNATE);
setwindowrgn(form1.handle,h,true);


 
LENIN INC   (2002-07-15 13:22) [2]

Разбирайся:

Первым делом в защищённых объявлениях (после слова protected) объявим две процедуры. Изначально это слово отсутствует, поэтому Вам придётся самим вписать его (можно до слова public):

protected
procedure RebuildWindowRgn;
procedure Resize; override;

Затем в публичных объявлениях (теперь уже в public)размещаем объявление конструктора. Нам его нужно переопределить, поэтому добавляем ключевое слово override:

constructor Create(AOwner:TComponent);override;

В области реализации (после слова implementation) описываем конструктор так:

implementation
{$R *.DFM}
constructor TForm1.Create(AOwner:TComponent);
begin
inherited;
HorzScrollbar.Visible:=false;
VertScrollbar.Visible:=false;
RebuildWindowRgn;
end;

Ресурс формы {$R *.DFM} оставляем без изменений. Слово inherited свидетельствует о том, что используется стандартный обработчик этой процедуры. Мы лишь убрали полосы прокрутки

HorzScrollbar.Visible:=false;
VertScrollbar.Visible:=false;

(скролбары), чтобы они не мешались. И построили регион с помощью процедуры RebuildWindowRgn.
Тело переобъявленной процедуры Resize выглядит так:

procedure TForm1.Resize;
begin
inherited;
RebuildWindowRgn;
end;

Здесь мы всего лишь перестраиваем регион, когда пользователь изменяет размер окна.

И, наконец, описываем процедуру 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);
Rgn:=CreateRectRgn(ClientX,ClientY,ClientX+ClientWidth,ClientY+ClientHeight);
CombineRgn(FullRgn,FullRgn,Rgn,RGN_DIFF);
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;

Как это сделано?

В переменные ClientX и ClientY мы помещаем относительные координаты клиентской части. Создаём регион для всей формы:

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);


 
Builder   (2002-07-15 14:11) [3]

Посмотри мыло - мне нравиться :)



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

Форум: "Основная";
Текущий архив: 2002.07.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.006 c
3-81168
Pro
2002-07-04 07:26
2002.07.25
SQL Запрос с группировкой по месяцам


1-81210
shelest
2002-07-11 17:00
2002.07.25
Форма в виде подсказки в Win XP.


1-81272
CrazyRoger
2002-07-15 13:05
2002.07.25
Можно ли использовать TclientSocket в консольных приложениях?


1-81356
Klon
2002-07-13 16:37
2002.07.25
Как рисовать в чужом окне или по всему экрану?


1-81300
Alex_win
2002-07-11 14:51
2002.07.25
графика поворот изображения





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский