Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Окна диалога [D6]


Karlusha ©   (2002-06-04 11:27:00) 

Есть окно BorderStyle=bsDialog (стиль окна менять нельзя). А окно уж очень надо сделать изменяемого размера.
Перегружать CreateParams и делать SetWindowLong с WS_SIZEBOX уже пробовал. Не помогает. Помогите пожалуйста


Karlusha   (2002-06-04 12:51:00) [1]

McSimm. Огромное спасибо. Идея понятна


McSimm   (2002-06-04 12:42:00) [2]

Вот примерчик. У формы стиль bsNone, так что имитируем и заголовок (в конце) и кнопку закрытия тоже (SpeedButton2)

procedure TMyFrm.WMNCHITTEST(var Message: TWMNCHITTEST);
var
Bounds: TRect;
CX, CY: Integer;
begin
Bounds := BoundsRect;
CX := 5;
CY := 5;
InflateRect(Bounds, -CX, -CY); //по 5 пикселей на рамку
with Message do
begin
if ControlAtPos(ScreenToClient(Point(XPos, YPos)), True, True) = SpeedButton2 then
begin
Result := HTCLIENT; // пример попадания мыши на кнопку
Exit
end; // Дальше обрабатываем рамки
if XPos < Bounds.Left then
begin
if YPos > Bounds.Bottom - 8 then Result := HTBOTTOMLEFT
else if YPos < Bounds.Top + 8 then Result := HTTOPLEFT
else Result := HTLEFT
end else
if XPos > Bounds.Right then
begin
if YPos > Bounds.Bottom - 8 then Result := HTBOTTOMRIGHT
else if YPos < Bounds.Top + 8 then Result := HTTOPRIGHT
else Result := HTRIGHT
end else
if YPos < Bounds.Top then Result := HTTOP
else if YPos > Bounds.Bottom then Result := HTBOTTOM
else
if YPos < Bounds.Top + 15 then Result := HTCAPTION

end
end;


Karlusha   (2002-06-04 12:30:00) [3]

McSimm, можно маленький примерчик. Чото мысля не приходит на этот счет.


McSimm   (2002-06-04 11:48:00) [4]

попробуй так
Создай процедуру обработки сообщения
procedure WMNCHITTEST(var Message: TWMNCHITTEST); message WM_NCHITTEST;

в которой проверяй XPos, YPos и возвращай нужный результат.
HTBOTTOMLEFT, HTTOPLEFT и т п




Наверх

Титульная страница Поиск, карта сайта Написать письмо