![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос о форме ( окне программы ) [WinXP]
SinnerPro © (2002-10-07 12:11:00)Помогите. Кто знает как сделать округлыми края формы ( окна программы ), а то так не очень красиво. (У меня Delphi7)
delta (2002-10-07 12:31:00) [1]Когдато нашол ету статью, где не помню, мне помогло. Можно создать форму любой формы.
Всё, что нам нужно, это HRGN и дескриптор (handle) элемента управления. SetWindowRgn имеет три параметра: дескриптор окна, которое будем менять, дескритор региона и булевый (boolean) параметр, который указывает - перерисовывать или нет после изменения. Как только у нас есть дескриптор и регион, то можно вызвать SetWindowRgn(Handle, Region, True) и вуаля!
Функция BitmapToRgn есть на исходники.ру поищи
Заметьте, что Вы не должны освобождать регион при помощи DeleteObject, так как после вызова SetWindowRgn владельцем региона становится операционная система.
var
MaskBmp: TBitmap;
begin
MaskBmp := TBitmap.Create;
try
MaskBmp.LoadFromFile("FormShape.bmp");
Height := MaskBmp.Height;
Width := MaskBmp.Width;
// ОС владеет регионом, после вызова SetWindowRgn
SetWindowRgn(Self.Handle, BitmapToRgn(MaskBmp), True);
finally
MaskBmp.Free;
end;
end;
sask (2002-10-07 12:28:00) [2]Нашел ссылку - там все просто и ясно:
http://zyxel0.narod.ru/My_Progs/Kruv_form.rar