![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
сменить цвет Border'а... [Delphi, Windows]
AOTD © (2003-10-05 18:58:00)Не подскажете: как у KOL-овской формы сменить цвет Border'а? (или сделать возможным изменение размеров формы без самого Border'a)
Vladimir Kladov (2003-10-19 21:55:00) [1]навесить на OnMessage панельки обработку WM_NCHITTEST и вернуть HTTRANSPARENT.
BelchonokH (2003-10-19 20:52:00) [2]2 Vladimir Kladov
Класссная процедурка, всё работало до того момента как края формы оказались закрыты панелями, и всё, лафа закончилась... :( попытался навесить эту процедурку на панельку, однако желаемого эффекта не получил, курсор растягивания появляется, и на этом всё, ничего не растягивается... нет ли какого-нибудь выхода из этой ситуации?
Vladimir Kladov (2003-10-05 21:40:00) [3]цвет формы определяется настройками десктопа.
вот этот обработчик позволяет менять размеры для формы без бордюра наиболее естественным образом. Обратите внимание, что происходит (в вин-2К), если навести и подержать мышь в верхнем правом углу формы.
function TForm2.KOLForm1Message(var Msg: tagMSG;
var Rslt: Integer): Boolean;
var R: TRect;
P: TPoint;
begin
Result := FALSE;
if Msg.message = WM_NCHITTEST then
begin
R := Form.ClientRect;
P.X := SmallInt( LoWord( Msg.lParam ) );
P.Y := SmallInt( HiWord( Msg.lParam ) );
P := Form.Screen2Client( P );
if PointInRect( P, R ) then
begin
if (P.X > R.Right - 18) and (P.Y > R.Bottom - 18) then
begin
Rslt := HTBOTTOMRIGHT;
Result := TRUE;
Exit;
end;
if (P.X > R.Right - 12) and (P.Y < R.Top + 12) then
begin
Rslt := HTCLOSE;
Result := TRUE;
Exit;
end;
InflateRect( R, -3, -3 );
if P.X < R.Left then
if P.Y < R.Top then Rslt := HTTOPLEFT else
if P.Y > R.Bottom then Rslt := HTBOTTOMLEFT
else Rslt := HTLEFT
else if P.X > R.Right then
if P.Y < R.Top then Rslt := HTTOPRIGHT else
if P.Y > R.Bottom then Rslt := HTBOTTOMRIGHT
else Rslt := HTRIGHT
else
if P.Y < R.Top then Rslt := HTTOP else
if P.Y > R.Bottom then Rslt := HTBOTTOM
else Exit;
Result := TRUE;
end;
end;
end;
Gandalf (2003-10-05 20:59:00) [4]Нарисуй свой через WM_PAINT