Не хочу, чтобы форма сводилась к минимуму

Можно ли в Delphi запретить сворачивание формы \ приложения?

Я нашел следующий код:

procedure TForm1.WMShowWindow(var Msg: TWMShowWindow);
begin
  if not Msg.Show then
    Msg.Result := 0
  else
    inherited;
end;

Но если я нажму клавишу Windows + M или WindowsKey + D, она все равно будет свернута. Есть ли способ предотвратить это?


person Anna    schedule 03.06.2009    source источник
comment
в моем случае пользователь хочет, чтобы он оставался максимальным   -  person Anna    schedule 03.06.2009


Ответы (3)


Установка BorderIcons.bsMinimized на false (удаление его из набора) будет работать для WindowsKey + M, но не остановит WindowsKey + D. Я думаю, что это имеет смысл. Разница между ними заключается в том, что первое - это запрос на сворачивание всех окон, а второе - это явный запрос пользователя на просмотр своего рабочего стола. Отмена последнего, вероятно, раздражает пользователя (аналогично тому, как заставить себя сосредоточиться).

person Ryan VanIderstine    schedule 03.06.2009

или вы можете поставить крючок клавиатуры и поймать winkey + d или winkey + m и сохранить свою форму в максимальном размере.

person avar    schedule 03.06.2009
comment
и раздражать ваших пользователей ... Тем не менее, +1 за то, что это правильное решение. - person Lieven Keersmaekers; 03.06.2009
comment
в моем случае пользователь хочет, чтобы он оставался максимальным - person Anna; 03.06.2009
comment
Привет, Авар, спасибо за комментарий, не могли бы вы дать мне код, чтобы форма была развернута - person Anna; 03.06.2009
comment
Анна, это может быть то, что вы ищете (больше похоже на киоск). stackoverflow.com/questions/14451/ - person Ryan VanIderstine; 03.06.2009
comment
Я нашел кое-что интересное: Show Desktop отправляет команду ToggleDesktop, которая, помимо прочего, отправляет сообщение DTM_RAISE (WM_USER + 83) на рабочий стол (Progman), чтобы установить его на передний план. eggheadcafe.com/forumarchives/win32programmerui/Jun2005/, я попробую чтобы написать что-нибудь с этим, нужно время :) - person avar; 03.06.2009
comment
Привет, Энн, сегодня я кое-что протестировал, в методе создания формы поместил что-то вроде var progmanhandle: Thandle; progmanhandle: = findwindow ('Progman', 'Менеджер программ'); если progmanhandle ‹› 0, то begin ParentWindow: = progmanhandle; конец; который прикрепит вашу форму как дочернюю к рабочему столу и никогда не скроет с помощью winkey + d или winkey + m; но когда вы запускаете свое приложение, я не проявлял себя как обычно. - person avar; 06.06.2009

Просто введите в форму события onShow такой код:

  WindowState:=wsMaximized;

И к OnCanResize это:

  if (newwidth<width) and (newheight<height) then
    Resize:=false;
person Taras    schedule 08.08.2012