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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2010, 17:56   #1
Karyuudo
Пользователь
 
Регистрация: 17.02.2008
Сообщений: 53
По умолчанию Как прервать цикл, когда нажата кнопка какая-нибудь?

есть цикл

Код:
for z:=1 to 99999 do   
begin
for h:=1 to 5 do
begin
x0:=800
y0:=300
while x0<=1300 do
 begin
  While y0<=620 do
  begin
  DC := CreateDC('Display', nil, nil, nil);
  Color := GetPixel(DC,x0,y0);
    if 'ffffff'=IntToHex(color,6) then
   begin
  SetCursorPos(x0,y0);
Mouse_Event(MOUSEEVENTF_LEFTDOWN, x0, y0, 0, 0);
Mouse_Event(MOUSEEVENTF_LEFTUP, x0, y0, 0, 0);
  end;
  DeleteDC(DC);
  y0:=y0+2; 
  end;
  y0:=300;
  x0:=x0+2;
 end;
  sleep (1000);
 end;
end;
после того как он начинает работать, форма становится недоступной (белой ) и нельзя остановить прогу, пока не кончится цикл, либо если не завершить процесс череез ctrl alt del

а как бы сделать так, чтобы при нажатии на клавишу, например Esc, программа останавливалась и снова показывалась форма, и потом уже опять можно было запустить при необходимости?
Karyuudo вне форума Ответить с цитированием
Старый 12.04.2010, 18:52   #2
bitSoft
Programming...
Форумчанин
 
Аватар для bitSoft
 
Регистрация: 13.03.2010
Сообщений: 198
По умолчанию

Код:
global
 var Stop : Boolean;

............
............
............


for z:=1 to 99999 do   
begin
application.ProcessMessages; // Shtob ne zavisal
if Stop then
begin
 Stop := False;
 Exit;
end;
for h:=1 to 5 do
begin
x0:=800
y0:=300
while x0<=1300 do
 begin
  While y0<=620 do
  begin
  DC := CreateDC('Display', nil, nil, nil);
  Color := GetPixel(DC,x0,y0);
    if 'ffffff'=IntToHex(color,6) then
   begin
  SetCursorPos(x0,y0);
  Mouse_Event(MOUSEEVENTF_LEFTDOWN, x0, y0, 0, 0);
  Mouse_Event(MOUSEEVENTF_LEFTUP, x0, y0, 0, 0);
  end;
  DeleteDC(DC);
  y0:=y0+2; 
  end;
  y0:=300;
  x0:=x0+2;
 end;
  sleep (1000);
 end;
end;


//////
procedure TForm1.Button2Click(Sender: TObject);
begin
 Stop := True;
end;
Код:
With TProgrammersForum.Create do  AddNewTopic('Title','Content...');

Последний раз редактировалось bitSoft; 12.04.2010 в 18:54.
bitSoft вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать была ли нажата кнопка? SanSanblch Win Api 3 20.12.2009 01:15
Как определить когда нажата кнопка мыши, если она нажата в совсем другой программе? Iceman Общие вопросы Delphi 2 19.10.2009 19:03
Как прервать внешний цикл? AndreyF Общие вопросы Delphi 15 15.06.2009 17:46
Как определить, какая кнопка нажата? Paul Hindenburg Компоненты Delphi 1 19.02.2009 23:15
какая функция определяет - была-ли нажата левая кнопка мыши, положение мышки на экране Wicing Общие вопросы Delphi 5 11.12.2007 10:17