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

Вниз

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

 
zioza   (2004-01-12 10:51) [0]

Заранее спасибо


 
[lamer]Barmaglot   (2004-01-12 10:52) [1]

Форму прозрачной - мутно, но можно, копай в направлении AlphaBlend и т.д.
Компоненты обычными - запросто, просто ничего не меняй...


 
NAlexey   (2004-01-12 11:24) [2]

AlphaBlend не поможет. Компоненты тоже будут все прозрачные. На мой взгляд необходиом работать с регионами. Создавай Rectangtle регион по ClientRect формы и исключай из него регионы компонентов потом делай форме SetWindowRegion.


 
User_Name   (2004-01-12 11:48) [3]

Возможно это поможет

procedure TForm1.FormCreate(Sender: TObject);
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;


 
хамло   (2004-01-12 11:50) [4]

так это уже не прозрачность, а "дырявость" ))


 
Horol   (2004-01-12 19:12) [5]

должно работать на 2000 винде точно

пробуй

procedure TForm1.Button1Click(Sender: TObject);
var
AControl : TControl;
A, Margin, X, Y, CtlX, CtlY : Integer;
begin
Margin := ( Width - ClientWidth ) div 2;
//First, get form region
FullRgn := CreateRectRgn(0, 0, Width, Height);
//Find client area region
X := Margin;
Y := Height - ClientHeight - Margin;
ClientRgn := CreateRectRgn( X, Y, X + ClientWidth, Y + ClientHeight );
//"Mask" out all but non-client areas
CombineRgn( FullRgn, FullRgn, ClientRgn, RGN_DIFF );
//Now, walk through all the controls on the form and "OR" them
// into the existing Full region.
for A := 0 to ControlCount - 1 do begin
AControl := Controls[A];
if ( AControl is TWinControl ) or ( AControl is TGraphicControl )
then with AControl do begin
if Visible then begin
CtlX := X + Left;
CtlY := Y + Top;
CtlRgn := CreateRectRgn( CtlX, CtlY, CtlX + Width, CtlY + Height );
CombineRgn( FullRgn, FullRgn, CtlRgn, RGN_OR );
end;
end;
end;
//When the region is all ready, put it into effect:
SetWindowRgn(Handle, FullRgn, TRUE);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
FullRgn := CreateRectRgn(0, 0, Width, Height);
CombineRgn(FullRgn, FullRgn, FullRgn, RGN_COPY);
SetWindowRgn(Handle, FullRgn, TRUE);
end;


 
Horol   (2004-01-12 19:13) [6]

тфу, забыл

var
Form1: TForm1;
fullrgn, clientrgn, ctlrgn:hrgn;


 
zioza   (2004-01-15 10:15) [7]

Спасибо



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

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

Наверх





Память: 0.46 MB
Время: 0.005 c
14-83267
Карелин Артем
2004-01-06 13:02
2004.01.26
Программа AIN.EXE Где взять?


1-83196
Andersen
2004-01-14 16:17
2004.01.26
Как сделать так, чтобы второе окно не появлялось


3-83114
Michail Dalakov
2003-12-28 16:40
2004.01.26
MSSQL и деревья


11-83129
Gandalf
2003-05-07 17:26
2004.01.26
Как вам KOL.MASTAK.RU?


14-83244
DAC
2004-01-06 03:10
2004.01.26
Выскажите свое мнение!





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