Помощь - Поиск - Пользователи - Календарь
Полная версия: Создание формы произвольного вида...
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
b13st
Вобщем, я делаю форму произвольного вида, вот таким способом (в данном случае круглую):
 R1 := CreateElliPticRgn(0,0,100,100);
SetWindowRgn(Handle, R1, True);


и я хочу сделать вокруг нее оборку (как бы подчеркнуть границу формы), вот так -
	 Canvas.Brush.Color := clBlack; 
FrameRgn (Canvas.Handle, R1, Canvas.Brush.Handle, 2, 2);


Но в результате ни чего не изменилось - получается та же форма без оборки..
Собственно сам вопрос - как сделать вокруг формы рамку (оборку)?
volvo
Где находится у тебя код с FrameRgn ? Должен быть в OnPaint ...
b13st
 	   R1 := CreateElliPticRgn(0,0,100,100);
SetWindowRgn(Handle, R1, True);
-
в OnCreate, а
 	 Canvas.Brush.Color := clBlack;
FrameRgn (Canvas.Handle, R1, Canvas.Brush.Handle, 2, 2);

в OnPaint.
мисс_граффити
а если форму свернуть/развернуть - появится оборка?
b13st
Цитата
если форму свернуть/развернуть - появится оборка?


нет, ничего не происходит...
volvo
И не будет...

Читаем здесь: MSDN:: SetWindowRgn
Цитата
After a successful call to SetWindowRgn, the system owns the region specified by the region handle hRgn. The system does not make a copy of the region. Thus, you should not make any further function calls with this region handle. In particular, do not delete this region handle. The system deletes the region handle when it no longer needed.


Попробуй это:
procedure TForm1.FormCreate(Sender: TObject);
var
region: HRGN;
begin
BorderStyle := bsNone;
region := CreateEllipticRgn(0, 0, 100, 100);
SetWindowRgn(Handle, region, True);
end;

procedure TForm1.FormPaint(Sender: TObject);
var
T: HRGN;
begin
Canvas.Brush.Color := clBlack;

T := CreateEllipticRgn(0, 0, 100, 100);
try
FrameRgn(Canvas.Handle, TempRgn, Canvas.Brush.Handle, 2, 2);
finally
DeleteObject(TempRgn);
end;

end;
b13st
volvo, спасибо.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.