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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2024, 12:47   #1
Drouge
Пользователь
 
Аватар для Drouge
 
Регистрация: 18.05.2020
Сообщений: 36
По умолчанию Как в Delphi XE обнулить таймер?

У меня есть кнопка, и надо чтобы через 5 секунд после её нажатия - она отжалась назад. Я попробовал добавить на форму таймер, и в обработчике нажатия кнопки написал:

ReturnToReadModeTimer.Enabled:=fals e;
ReturnToReadModeTimer.Interval:=500 0;
ReturnToReadModeTimer.Enabled:=true ;

В событии таймера соответственно ReturnToReadModeTimer.Enabled:=fals e;
Но это пока не работает как надо: в первый раз кнопка отжимается через 5 секунд, а в последующие - сразу. Как обнулить счётчик таймера, чтобы он и во второй раз сработал не сразу, а через 5 секунд после нажатия кнопки?
Drouge вне форума Ответить с цитированием
Старый 07.11.2024, 15:08   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,541
По умолчанию

timer.enabled:=true; //при нажатии
timer.enabled:=false; //при отжатии
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 07.11.2024, 20:22   #3
Drouge
Пользователь
 
Аватар для Drouge
 
Регистрация: 18.05.2020
Сообщений: 36
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
timer.enabled:=true; //при нажатии
timer.enabled:=false; //при отжатии
Нет, это не работает. И мне надо не при отжатии, а через 5 секунд после нажатия.
Drouge вне форума Ответить с цитированием
Старый 10.11.2024, 03:29   #4
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,918
По умолчанию

Цитата:
Сообщение от Drouge Посмотреть сообщение
У меня есть кнопка, и надо чтобы через 5 секунд после её нажатия - она отжалась назад.
А можно поподробнее. Что значит "чтобы через 5 секунд после её нажатия - она отжалась назад"?
И что за кнопка?
И при чём тут таймер?
northener вне форума Ответить с цитированием
Старый 10.11.2024, 04:18   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,422
По умолчанию

Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Button1.Enabled := True;
  Timer1.Enabled := False;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.Enabled := False;
  Timer1.Enabled := True;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  // или в инспекторе объектов задать эти свойства
  Timer1.Enabled := False;
  Timer1.Interval := 5000;
end;
При нажатии кнопка отключается, а через 5 секунд включается. Так подойдет?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 10.11.2024 в 07:16.
BDA на форуме Ответить с цитированием
Старый 11.11.2024, 20:21   #6
Drouge
Пользователь
 
Аватар для Drouge
 
Регистрация: 18.05.2020
Сообщений: 36
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Button1.Enabled := True;
  Timer1.Enabled := False;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.Enabled := False;
  Timer1.Enabled := True;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  // или в инспекторе объектов задать эти свойства
  Timer1.Enabled := False;
  Timer1.Interval := 5000;
end;
При нажатии кнопка отключается, а через 5 секунд включается. Так подойдет?
Кажется нет: в первый раз кнопка будет отключена 5 секунд, а второй и далее менее секунды. Я сейчас не дома чтобы проверить, но у меня практически такой же код и был, и он не работает.
Я понимаю конечно что можно закодить костыль, но нелепо как-то получается...
Drouge вне форума Ответить с цитированием
Старый 12.11.2024, 05:52   #7
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,898
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Button1.Enabled := True;
  Timer1.Enabled := False;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.Enabled := False;
  Timer1.Enabled := True;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  // или в инспекторе объектов задать эти свойства
  Timer1.Enabled := False;
  Timer1.Interval := 5000;
end;
При нажатии кнопка отключается, а через 5 секунд включается. Так подойдет?
На Embarcadero RAD Studio 10.1 Berlin работает идеально.
Shouldercannon вне форума Ответить с цитированием
Старый 12.11.2024, 14:41   #8
Drouge
Пользователь
 
Аватар для Drouge
 
Регистрация: 18.05.2020
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
На Embarcadero RAD Studio 10.1 Berlin работает идеально.
Ок, буду иметь в виду. Можете сказать, какие ещё улучшения есть в 10.1 по сравнению с XE 8?
Drouge вне форума Ответить с цитированием
Старый 13.11.2024, 01:57   #9
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,918
По умолчанию

Цитата:
Сообщение от Drouge Посмотреть сообщение
Можете сказать, какие ещё улучшения есть в 10.1 по сравнению с XE 8?
По работе с таймерами никаких улучшений не было. Да их и вообще не было никогда с времен царя Гороха. Что там улучшать. Так что виноват ваш код, а не версия Дельфи.
northener вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi 7 таймер Dagerock1 Помощь студентам 1 14.11.2016 22:20
Таймер в Delphi Krasavica Помощь студентам 1 10.04.2014 00:49
Таймер (delphi) Георгий Златов Помощь студентам 1 07.02.2012 21:02
[Delphi] В матрице обнулить все элементы, расположенные после максимального в каждом столбце Volodyajke Помощь студентам 5 17.11.2011 23:52
Таймер в delphi SysSt Помощь студентам 5 21.04.2010 11:16