Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2014, 17:19   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
Вопрос Побочный эффект WindowState := wsNormal;

Доброго времени суток!
Использую WindowState := wsNormal;, чтобы восстанавливать форму с панели задач, если форма свёрнута, но у этого свойства есть побочный эффект. Если форма развёрнута на весь экран, то wsNormal вызывает событие Свернуть в окно у формы. Можно ли этот момент как-то убрать?
Shouldercannon вне форума Ответить с цитированием
Старый 30.09.2014, 17:42   #2
Vapaamies
Просветитель
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,844
По умолчанию

Наверное, ей нужно посылать SW_RESTORE через SendMessage или Perform.
В разработке: воспроизводственный контур ИТ
Vapaamies вне форума Ответить с цитированием
Старый 01.10.2014, 10:16   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Если форма развёрнута на весь экран, то wsNormal вызывает событие Свернуть в окно у формы. Можно ли этот момент как-то убрать?
Ну, попробуй ещё
Код:
if WindowState = wsMaximized
  then // ....
  else; // ....
Цитата:
Наверное, ей нужно посылать SW_RESTORE через SendMessage или Perform.
Согласен. А если форма главная, то достаточно
Код:
Application.Restore();
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 02.10.2014, 07:01   #4
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию

min@y™, попробую Ваш способ. Сии манипуляции нужны для дочерних форм, не для главной.
Shouldercannon вне форума Ответить с цитированием
Старый 05.01.2015, 16:38   #5
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию

Решение
Код:
procedure ShowForm(Form: Tform);
begin
  if Form.WindowState = wsNormal then
  begin
    Form.WindowState := wsNormal;
    Form.Show;
  end;
  if Form.WindowState = wsMinimized then
  begin
    ShowWindow(Form.Handle, SW_RESTORE);
    Form.Show;
  end;
  if Form.WindowState = wsMaximized then begin
    ShowWindow(Form.Handle, SW_MAXIMIZE);
    Form.Show;
  end;
end;
Проходит тестирование
Shouldercannon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WindowState и Show Shouldercannon Общие вопросы Delphi 5 12.09.2014 09:29
MDI, один child в состояние wsMaximize а другой wsNormal но поверх первого fedorov2012 Общие вопросы Delphi 1 14.05.2013 00:29
побочный эффект применения AutoFit к строке blackarrow Microsoft Office Excel 2 18.05.2011 21:12
windowState в Delphi Claster Помощь студентам 0 22.04.2011 11:12
Есть ли у LoadLibrary и FreeLibrary побочный эффект? BaronTreep Win Api 5 23.08.2009 20:52