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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2015, 18:19   #1
adkomissarov
Пользователь
 
Регистрация: 21.01.2015
Сообщений: 37
По умолчанию Работа с таймером и комбобоксом

Всем привет. Подскажите пожалуйста новичку. Необходимо автоматизировать некие моменты (это нажатия на определенные места на экране) Должно это выглядеть так: Имеется форма с комбобоксом и полем и кнопкой, в комбобоксе выбор , назовём "1" и "2", в поле вводим количество повторений ну и кнопка запускает все это дело.
В идеале должно быть так: Тычу в комбо "1" в поле ввожу например 3 и жму кнопку старт, по истечению 10 сек - мышь шагает по определенным координатам, проходит еще 10 сек и мышь повторяет это, и потом третий раз (ну или сколько я укажу в поле едит). В общем туда сюда пробую всяко, но получаю либо 1 раз либо бесконечное число повторений, вот код, но он не работает нужным образом:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
 tmr1.Enabled:= false;
end;

procedure TForm1.btn1Click(Sender: TObject);
begin

  if cbb1.ItemIndex=0 then begin
  sec:= 10;
  kol:= StrToInt(edt1.Text);
  tmr1.Enabled:= True;
  end;

  end;


procedure TForm1.tmr1Timer(Sender: TObject);
begin
sec:=sec-1;

  if sec=0 then begin

    for i := 1 to kol do begin



            SetCursorPos(200, 200);
            Sleep(1000);
            SetCursorPos(300, 300);


            tmr1Timer(Self);


          end;



   end;

  form1.Caption:= ('Осталось '+IntToStr(sec)+' секунд');

Последний раз редактировалось Stilet; 16.03.2015 в 19:45.
adkomissarov вне форума Ответить с цитированием
Старый 16.03.2015, 20:30   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Вар 1. без работы с заголовком формы и "длинным" таймером
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
   tmr1.Enabled:= false;
   tmr1.interval:=10*1000; //интервал срабатывания таймера >=10 сек. 
end;

procedure TForm1.btn1Click(Sender: TObject);
begin

  if cbb1.ItemIndex=0 then begin
    kol:= StrToInt(edt1.Text);
    tmr1.Enabled:=(kol>0);
  end;

  end;


procedure TForm1.tmr1Timer(Sender: TObject);
begin
  if kol>0 then begin
     SetCursorPos(200, 200);
     kol:=kol-1;
  end;
  timer1.enabed:=kol>0;
end;
вар 2. засекаем время нужного срабатывания (контрольное время)
периодически (в таймере) следим за текущим временем
информируем о разнице текущего и контрольного времен
и по наступлению нужного времени выполняем нужное
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  tmr1.Enabled:= false;
   tmr.interval:=500;
  self.caption:='неактивно';
end;

procedure TForm1.btn1Click(Sender: TObject);
begin

  if cbb1.ItemIndex=0 then begin
    timeclick:=now;
    IncSec(timeclick, 10);  //вычисляем время следующего действия мыши
    kol:= StrToInt(edt1.Text);
    tmr1.Enabled:=(kol>0);
    self.caption:=format('осталось: %d', [ SecBeetwean(now, timeclick) { разница времен в секундах }  ] );
  end;

end;


procedure TForm1.tmr1Timer(Sender: TObject);
begin
  form.caption:=secsBeetween(now, timeclick);//число секунд между текущим временем и временем следующего действия мыши
  if now>=timeclick then begin

            SetCursorPos(200, 200);
    kol:=kol-1;
    timeclick:=now;
    IncSec(timeclick, 10);  //вычисляем время следующего действия мыши

  end;
  self.timer1.enabled:=(kol>0);
end;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 16.03.2015 в 20:34.
evg_m вне форума Ответить с цитированием
Старый 17.03.2015, 11:31   #3
adkomissarov
Пользователь
 
Регистрация: 21.01.2015
Сообщений: 37
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Вар 1. без работы с заголовком формы и "длинным" таймером
В принципе вариант хороший, но хочется разобраться, непонятна только одна строчка:
Код HTML:
tmr1.Enabled:=(kol>0);
Расскажите пожалуйста что это за параметр?
adkomissarov вне форума Ответить с цитированием
Старый 17.03.2015, 12:28   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

tmr1{ наш таймер}.Enabled{будет включен}:={только когда будет выполнятся следующее условие}(kol>0);

при исчерпании лимита действий (kol <=0) он "автоматом" выключится.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 17.03.2015 в 12:31.
evg_m вне форума Ответить с цитированием
Старый 17.03.2015, 17:19   #5
adkomissarov
Пользователь
 
Регистрация: 21.01.2015
Сообщений: 37
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
tmr1{ наш таймер}.Enabled{будет включен}:={только когда будет выполнятся следующее условие}(kol>0);

при исчерпании лимита действий (kol <=0) он "автоматом" выключится.
Спасибо большое)
adkomissarov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с таймером fbus Java Мобильная разработка (Android) 5 07.08.2014 08:56
Работа с таймером С# JK0 Помощь студентам 1 31.10.2011 16:25
Работа с таймером... misher Свободное общение 11 15.07.2010 15:26
Работа с таймером LordTor Общие вопросы Delphi 1 09.11.2009 14:08