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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
3-83112
Крутыш
2003-12-27 14:09
2004.01.26
Либо что-то с ADO или гридом из пакета DeveloperExpress4.


1-83190
pvv
2004-01-13 16:39
2004.01.26
Как получить комментарий из ячейки Excel?


14-83261
fag2000
2004-01-05 14:03
2004.01.26
DCOM


8-83218
scorpi
2003-09-22 12:04
2004.01.26
Моргания в Delphi(Image, PaintBox)


1-83133
Nobody2002
2004-01-15 12:59
2004.01.26
Использую TWordDocument. Как заполнить колонтитулы?