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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2014, 14:27   #1
webersol
Заблокирован
 
Регистрация: 09.10.2014
Сообщений: 20
По умолчанию Свернуть/развернуть окно одной кнопкой

Всем привет! В прошлой теме я научился управлять программой, отлавливая нажатие клавиш на клавиатуре. Теперь стоит другой вопрос: как одной кнопкой можно показать, а затем свернуть программу. Тоесть один раз нажал- свернулось, второй раз нажал появилось. Не могу додуматься.
webersol вне форума Ответить с цитированием
Старый 12.10.2014, 14:41   #2
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,451
По умолчанию

чекбокс кинь, если развернуто окно, то ЧексБокс = True иначе False или управлением атомом, вариантов много
beegl вне форума Ответить с цитированием
Старый 12.10.2014, 15:08   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Это как вообще? Откуда вы кнопку возьмете если свернута программа?

Или о клавиатуре речь? Ну так RegisterHotKey + какой-нибудь WindowState у формы для определения ее текущего состояния.

Хотя вроде WindowState не во всех случаях работает, еще есть функция IsIconic(). (передать туда Application.Handle или Handle формы).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 12.10.2014 в 15:20.
Alex11223 вне форума Ответить с цитированием
Старый 12.10.2014, 15:15   #4
Dmitry33RU
Пользователь
 
Регистрация: 09.10.2014
Сообщений: 62
По умолчанию

Код:
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if form1.CheckBox1.checked then begin
form2.WindowState := wsMinimized;
end else begin
form2.WindowState := wsNormal;
end;
end;

Последний раз редактировалось Dmitry33RU; 12.10.2014 в 15:19.
Dmitry33RU вне форума Ответить с цитированием
Старый 12.10.2014, 15:22   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
как одной кнопкой можно показать, а затем свернуть программу
какую программу: свою или чужую?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 12.10.2014, 15:26   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

beegl, Dmitry33RU, а если пользователь свернет или развернет программу другим способом?
И даже если это единственный способ и не страшна рассинхронизация, то причем тут CheckBox вообще если он не нужен в интерфейсе? Вы его всегда используете вместо boolean переменных или свойств?!
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.10.2014, 16:59   #7
Dmitry33RU
Пользователь
 
Регистрация: 09.10.2014
Сообщений: 62
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
beegl, Dmitry33RU, а если пользователь свернет или развернет программу другим способом?
И даже если это единственный способ и не страшна рассинхронизация, то причем тут CheckBox вообще если он не нужен в интерфейсе? Вы его всегда используете вместо boolean переменных или свойств?!
Что ТС просил то я ему и предложил

Цитата:
Сообщение от webersol
как одной кнопкой можно показать, а затем свернуть программу
Dmitry33RU вне форума Ответить с цитированием
Старый 12.10.2014, 17:14   #8
webersol
Заблокирован
 
Регистрация: 09.10.2014
Сообщений: 20
По умолчанию

Кнопкой на клавиатуре! В своей же программе, я отлавливаю событие нажатие кнопки. Одной кнопкой F10 мне надо сначала свернуть программу (hide) и развернуть (show).
webersol вне форума Ответить с цитированием
Старый 12.10.2014, 17:20   #9
Dmitry33RU
Пользователь
 
Регистрация: 09.10.2014
Сообщений: 62
По умолчанию

Цитата:
Сообщение от webersol Посмотреть сообщение
Кнопкой на клавиатуре!
Я не вижу чтобы он это уточнал, писать нужно конкретнее что хочешь.
Dmitry33RU вне форума Ответить с цитированием
Старый 12.10.2014, 17:30   #10
Dmitry33RU
Пользователь
 
Регистрация: 09.10.2014
Сообщений: 62
По умолчанию

Если по кнопке то можно зарегистрировать глобальную горячию клавишу.

Вот пример:

Цитата:
Чтобы программа реагировала на нажатие определённых клавиш даже в неактивном состоянии, не обязательно ставить хук на клавиатуру. Можно зарегистрировать свою горячую клавишу, при её нажатии дескриптору, указанному при регистрации, будет отправляться сообщение WM_HOTKEY. Для регистрации горячей клавиши нужно использовать функцию RegisterHotKey(), для снятия регистрации UnregisterHotKey(). Рассмотрим пример:
Сперва нужно добавить обработчик сообщений WM_HOTKEY. Для этого напишите в секции private

Код:
...
private
   procedure OnHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
...
Теперь надо реализовать этот метод.

Код:
procedure TForm1.OnHotKey(var Msg: TWMHotKey);
begin
   inherited;
   MessageBeep(0); // Любые действия при нажатии гор. клавиши
end;
И соответсвенно регистрация/снятие регистрации

Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
   RegisterHotKey(Handle, Ord('U'), 0, Ord('U')); //регистрац. гор. клавиши U
end;
Код:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   UnregisterHotKey(Handle, Ord('U')); // снятие регистрации
end;
Обратите внимание, что после регистрации горячей клавиши при её нажатии сообщение будет отправляться только форме, для других приложений клавиша работать не будет до снятия регистрации. При нажатии клавиши U будет раздаваться пик динамика.
Dmitry33RU вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Баг в цикле: программно развернуть - свернуть - восстановить окно chandrasecar Общие вопросы Delphi 23 02.12.2011 16:05
свернуть развернуть ленту Excel segail Microsoft Office Excel 17 27.07.2010 16:12
свернуть развернуть Книгу segail Microsoft Office Excel 3 23.03.2010 18:38
как свернуть и развернуть форму? blackstersl Общие вопросы Delphi 7 25.06.2009 09:20
Свернуть, развернуть, восстановить окно chandrasecar Win Api 1 15.10.2008 00:13