![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите с регионами [D7]
ArtemESC © (2006-01-09 22:38:00)Доброго времени суток...
В Help'e ничего ни нашел, на тему CreateRoundRectRgn...
Нужно данную форму "скруглить"...
Интуитивно написал след. код, но он не работает:
procedure TfrmMain.FormSet;
var
RGN: HRGN;
begin
RGN := CreateRoundRectRgn(frmMain.Left, frmMain.Top,
frmMain.Left + frmMain.Width, frmMain.Top + frmMain.Height, 10, 10);
SetWindowRgn(frmMain.Handle, RGN, true);
frmMain.Position := poScreenCenter;
end;
Rouse_ (2006-01-10 10:52:00) [1]
> Вот - опять не работает...
Напоминает ролик про техподдержку :))
Лови:
procedure TForm1.Button3Click(Sender: TObject);
var
RGN: HRGN;
begin
RGN := CreateRoundRectRgn(0,0,Width, Height, 100, 100);
if Rgn = 0 then RaiseLastOsError;
SetWindowRgn(Handle, RGN, true);
end;
ArtemESC (2006-01-09 23:05:00) [2]>>Джо © (09.01.06 22:55) [6]
Вот - опять не работает...Исключение не "сробатывает"
procedure TfrmMain.FormSet;
var
RGN: HRGN;
begin
RGN := CreateRoundRectRgn (0,0,frmMain.Width,frmMain.Height, 10, 10);
if Rgn = 0 then RaiseLastOsError;
SetWindowRgn(frmMain.Handle, RGN, true);
frmMain.Position := poScreenCenter;
end;
...За такое frmMain.Left должно быть стыдно...
Почему???
Джо (2006-01-09 22:55:00) [3]> [5] ArtemESC © (09.01.06 22:48)
> >>Джо © (09.01.06 22:47) [3]
> Не скругляет нифига!!.
Как же не скругляет? Еще как скругляет.
Кстати, координаты прямоугольника задается не относительно экрана, а в клиентских координатах. Т.е, нужно задавать так:
CreateRoundRectRgn (0,0,Width,Height,...)
Это первое. Второе, где проверка возвращаемого функцией значения? Я имею в виду что-то вроде этого:
Rgn := CreateRoundRectRgn (...);
if Rgn = 0 then
RaiseLastOsError;
Ну, и третье. За такое frmMain.Left должно быть стыдно. И, кстати, за клевету на справочную систему, тоже.
ArtemESC (2006-01-09 22:48:00) [4]>>Джо © (09.01.06 22:47) [3]
Не скругляет нифига!!.
Джо (2006-01-09 22:47:00) [5]Да, и что значит "не работает" тоже совершенно неясно.
ArtemESC (2006-01-09 22:47:00) [6]>>Джо © (09.01.06 22:44) [2]
О чем речь? Объясни...
Джо (2006-01-09 22:44:00) [7]Главная ошибка, разумеется, в том, что не проверяется возвращаемое значение на 0.
Джо (2006-01-09 22:43:00) [8]> ArtemESC © (09.01.06 22:38)
> Доброго времени суток...
> В Help'e ничего ни нашел, на тему CreateRoundRectRgn...
Как же? Есть и в SDK и в MSDN.