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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2016, 12:43   #1
Mazourik
Пользователь
 
Регистрация: 24.07.2015
Сообщений: 14
По умолчанию Обработка событий не в состоянии ожидания

Как обработать нажатие на клавишу в процессе работы (программа не находится в состоянии ожидания) ?
Mazourik вне форума Ответить с цитированием
Старый 21.05.2016, 13:41   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
программа не находится в состоянии ожидания
а в каком состоянии она находится? мотает цикл, который ты хочешь прервать по кнопке?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 24.05.2016, 07:30   #3
Mazourik
Пользователь
 
Регистрация: 24.07.2015
Сообщений: 14
По умолчанию Прерваить цикл по кнопке

Как прервать работающий цикл по кнопке?
Mazourik вне форума Ответить с цитированием
Старый 24.05.2016, 07:50   #4
TaLadno
Форумчанин
 
Регистрация: 03.06.2015
Сообщений: 393
По умолчанию

Способ первый - "фу-фу-фу" (никому не говори, что это я такое показал):
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.Tag := 0;
  Button1.Caption := 'Started';
  while Button1.Tag = 0 do
  Begin
    Application.ProcessMessages;
  End;
  Button1.Caption := 'Stopped';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Button1.Tag := 1;
end;
Способ второй - "для норм пацанов"
Использовать потоки
+
С примерами
+
https://www.google.com/


А вообще все зависит от задачи/проблемы. Расскажешь?
Вы там держитесь.
TaLadno вне форума Ответить с цитированием
Старый 25.05.2016, 18:36   #5
Mazourik
Пользователь
 
Регистрация: 24.07.2015
Сообщений: 14
По умолчанию Реагирование на клавиатуру при выполнении цикла

Был неправ, необходимо перехватывать и обрабатывать событие нажатия на клавишу, а не на кнопку. Проблема: выполняется цикл, результаты работы динамически отображаются на экране, необходимо в процессе выполнения цикла отслеживать события нажатия клавиш (для внесения изменений в работу цикла). Обработчики событий типа KeyDown выполняются только тогда, когда программа находится в состоянии ожидания.
Mazourik вне форума Ответить с цитированием
Старый 25.05.2016, 21:33   #6
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

А сколько параметров клавишами можно отследить? Просто можно зависти на них переменные, изменять при нажатие клавишь, а цикл засунуть в поток и просто проверять параметры через синхронизацию.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 26.05.2016, 01:31   #7
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от Mazourik Посмотреть сообщение
Обработчики событий типа KeyDown выполняются только тогда, когда программа находится в состоянии ожидания.
И ещё раз был не прав. См. например "способ "фу-фу-фу"".
northener вне форума Ответить с цитированием
Старый 26.05.2016, 05:04   #8
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
И ещё раз был не прав. См. например "способ "фу-фу-фу"".
Если он поместит свой цикл в поток, тогда он будет не прав. А по его изложению он вполне прав(так как, подозреваю, что цикл находится в какой-либо процедуре, исключая процедуру таймера - это отдельный поток с синхронизацией и временным интервалом между выполнениями).
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 26.05.2016, 06:11   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от саша40 Посмотреть сообщение
Если он поместит свой цикл в поток, тогда он будет не прав. А по его изложению он вполне прав(так как, подозреваю, что цикл находится в какой-либо процедуре, исключая процедуру таймера - это отдельный поток с синхронизацией и временным интервалом между выполнениями).
способ фу-фу-фу, позволяет вернутся в цикл обработки сообщений, и принять все нажатия и все обработчики выполнятся.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 26.05.2016, 10:16   #10
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
способ фу-фу-фу, позволяет вернутся в цикл обработки сообщений, и принять все нажатия и все обработчики выполнятся.
Точно. Как же мог забыть про Application.ProcessMessages. Просто больше года уже нормально не программировал. Хотя и мой вывод вполне мог быть верным.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка событий Кольша Win Api 4 16.10.2013 17:34
Обработка JS событий Pamparam JavaScript, Ajax 5 15.08.2012 15:33
обработка событий в javascript Marika lady Помощь студентам 2 19.09.2011 13:21
обработка событий CoRviN88 Помощь студентам 0 16.12.2010 13:46
Обработка событий meganom Общие вопросы Delphi 5 01.09.2010 19:41