Консультация № 36133
25.02.2006, 04:06
0.00 руб.
0 3 3
Привет. Кто-нибудь знает способ, желательно несложный, отучить развёрнутую форму (maximized) "восстанавливаться" при двойном щелчке по заголовку? Спасибо.

Обсуждение

Неизвестный
25.02.2006, 05:04
общий
это ответ
Здравствуйте, Злоумышленник!

Пример перехвата события восстановления окна приложения:

Type TMain = class(TForm)
....
protected
Procedure WMGetSysCommand(var Message : TMessage) ; message WM_SYSCOMMAND;
end;
.....
//------------------------------------------------------------------------------
// Обработка сообщения WM_SYSCOMMAND (перехват минимизации окна)
//------------------------------------------------------------------------------
Procedure TMain.WMGetSysCommand(var Message : TMessage) ;
Begin
//Если восстановление, то ничего не делаем...
IF (Message.wParam <> SC_RESTORE) Then Inherited;
End;
Неизвестный
25.02.2006, 10:24
общий
это ответ
Здравствуйте, Злоумышленник!
OnCanResize по идее может помочь (хотя выше изложенное кажется более правильным). Resize:=false; - и форма размера не изменит, но переместится в левый верхний угол, но это исправимо. Только вот значок поменяется, вроде как развёрнутое окно. Можно ещё с OnConstrainedResize поэкпериментировать.
Неизвестный
25.02.2006, 20:00
общий
это ответ
Здравствуйте, Злоумышленник!
Если вам нужно именно по щелчку по заголовку у меня получилось так:
Перехватываете сообщение wm_NcHittest, а далее примерно как в приложении
(правда максимизироваться по щелчку она тоже не будет)

Приложение:
procedure wmnchittest(var Msg: TWMncHITTEST); message wm_NcHittest;......procedure TForm1.wmnchittest(var Msg: TWMncHITTEST);var pt: tpoint;begin inherited; if msg.Result = HTCAPTION then msg.Result := htBorder;end;
Форма ответа