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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2011, 12:18   #1
suslik_
 
Регистрация: 04.07.2011
Сообщений: 6
По умолчанию Как выйти из цикла по нажатию горячей клавиши?

Код:
...
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure F1(var Message:TMessage);message WM_HOTKEY;
    procedure FormDestroy(Sender: TObject);
...

procedure TForm1.FormCreate(Sender: TObject);
begin
  RegisterHotKey(Handle,0,MOD_ALT,$56);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  UnRegisterHotKey(Handle,0);
end;

procedure TForm1.F1(var Message: TMessage);
begin
 e:=1;
end;

  while e<>1 do begin
    ...
    {код программы}
    ...
  end;
Нужно чтобы программа работала пока я ее не остановлю, а не до выполнения каких то особых условий. Пробовал через HOTKEY , не реагирует.
Посоветуйте как можно это сделать, желательно с примером.

Последний раз редактировалось suslik_; 06.07.2011 в 12:19. Причина: опечатка
suslik_ вне форума Ответить с цитированием
Старый 06.07.2011, 14:19   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1)
Цитата:
чтобы программа работала пока я ее не остановлю
Вы не поверите, но запущенное Вами приложение с формой и так работает, пока Вы его не закроете!!

нужно что бы ЧТО ДЕЛАЛОСЬ в цикле?!
Может быть, Вам таймер поможет?!


2) ну если у Вас какие-то свои заморочки (читай - "извращения"),
то как минимум в цикл добавьте строчку Application.ProcessMessages;
Код:

  while e<>1 do begin
    Application.ProcessMessages;
    ...
    {код программы}
    ...
  end;
ну и по нажатию клавишу устанавливайте какую-то переменную.
например, на форме на OnKeyPress/OnKeyUp/OnKeyDown - установить глобальную переменную e в 1

хотя, возможно, что и ваша F1 отработает...


Но мой Вам совет. Ещё раз подумайте, что и как Вы собираете запрограммировать!
подобные "проблемы" говорят о том, что Вы неправильно (очень плохо) придумали логику работы программы!


ДОБАВЛЕНО
А зачем вообще все эти пляски с бубном вокруг нажатия клавиш?!
Добавив Application.ProcessMessages; в цикл
вы получаете возможность в любой момент закрыть приложение стандартным образом!
(через ALT-F4 или через крестик в правом верхнем углу окна...)

Последний раз редактировалось Serge_Bliznykov; 06.07.2011 в 14:23.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.07.2011, 16:20   #3
suslik_
 
Регистрация: 04.07.2011
Сообщений: 6
По умолчанию

Код:
Application.ProcessMessages;
Спасибо помогло ))
Цитата:
Вы не поверите, но запущенное Вами приложение с формой и так работает, пока Вы его не закроете!!
Вот только закрывать приходилось Процесс в Диспетчере задач ...
suslik_ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в C# прервать работу цикла при нажатии клавиши xata1988 Общие вопросы .NET 5 14.02.2011 14:48
Как сделать, чтобы по нажатию клавиши вводился не символ, а строка? Сид Общие вопросы Delphi 5 27.12.2009 13:32
Делфи выйти из цикла. S_Yevgeniy Помощь студентам 1 14.11.2009 09:41
Как выйти из бесконечного цикла! Эдуард Общие вопросы C/C++ 11 02.03.2008 19:15
Создание системной горячей клавиши Seqular Общие вопросы Delphi 8 17.02.2007 21:12