Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
28 / 28 / 8
Регистрация: 07.10.2012
Сообщений: 106

Установка времени таймера через команду меню

11.10.2012, 14:32. Показов 1735. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем дня! На форме есть меню с командами Файл->Таймер->{30 сек, 20 сек, 10 сек, 5 сек}, label, куда выводится время в минутах и секундах, и кнопка. При нажатии на одну из команд {30 сек, 20 сек, 10 сек, 5 сек} устанавливается время в label. По нажатию кнопки таймер запускается. Ведется обратный отсчет до 0 и устанавливается прежнее время и так до выполнения некоторых операций.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.10.2012, 14:32
Ответы с готовыми решениями:

Реализовать при помощи таймера вывод сообщения через разные промежутки времени
Здравствуйте вот код procedure TForm1.Timer11Timer(Sender: TObject); begin Timer11.Enabled:=False; Timer11.Interval :=...

Установка таймера
Добрый вечер.Очень Простенький проект,объяснения нашла в обучающем курсе,программа работает,но хочу,чтобы кубики закрашивались по цветам за...

Установка Зргоху через команду на CentOS
Добрый день. Пробую установить Зргоху, некогда подобным не занимался, делал поэтапно по руководству. Подключаем нужный...

6
angstrom
11.10.2012, 14:42
Что не получается?
28 / 28 / 8
Регистрация: 07.10.2012
Сообщений: 106
11.10.2012, 14:52  [ТС]
Как написать команды меню, чтобы при истечении времени оно устанавливалась обратно?
0
angstrom
11.10.2012, 15:05
Вариант действия такой, всем пунктам меню отвечающим за установку времени таймера, устанавливаем в свойстве Tag число в секундах. Этим пунктам назначаем один обработчик на всех. Таймер устанавливаем на 1000 Мсек.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var
  Count,
  CounEnd : Integer;
 
// для всех пунктов меню отвечающих за установку времени таймера.
procedure TForm1.MeniItemClick(Sender: TObject);
begin
  CounEnd := (Sender as TMenuItem).Tag;
  Count := 0;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if Count >= CountEnd then
    Timer1.Enabled := False
  else
    inc(Count);
end;
28 / 28 / 8
Регистрация: 07.10.2012
Сообщений: 106
11.10.2012, 15:38  [ТС]
А как обратно установить время после истечения? Есть кое-какие наработки. Нужно оптимизировать. Или есть другие решения?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
var
  min,sec:Integer;
 
procedure TForm1.N301Click(Sender: TObject);
begin
  sec:=30;
  N301.Checked:=True;
  txt1.Caption:='  00:'+ FloatToStr(sec);
end;
 
procedure TForm1.N201Click(Sender: TObject);
begin
  sec:=20;
  N201.Checked:=True;
  txt1.Caption:='  00:'+ FloatToStr(sec);
end;
 
procedure TForm1.N101Click(Sender: TObject);
begin
  sec:=10;
  N101.Checked:=True;
  txt1.Caption:='  00:'+ FloatToStr(sec);
end;
 
procedure TForm1.N51Click(Sender: TObject);
begin
  sec:=5;
  N51.Checked:=True;
  txt1.Caption:='  00:0'+ FloatToStr(sec);
end;
 
procedure ShowTime;
var
    buf: string[20];
begin
  // минуты и секунды выводим двумя цифрами
  if min < 10 then
     buf := '  0' + IntToStr(min) + ':'
  else
     buf := '  '+ IntToStr(min) + ':';
 
  if sec < 10 then
    buf := buf + '0' + IntToStr(sec)
  else
    buf := buf + IntToStr(sec);
 
  Form1.txt1.Caption := buf;
end;
 
procedure TForm1.tmr1Timer(Sender: TObject);
begin
  if sec=0 then
  begin
    if N301.Checked=True then
      sec:=31;
    if N201.Checked=True then
      sec:=21;
    if N101.Checked=True then
      sec:=11;
    if N51.Checked=True then
      sec:=6;
  end;
  sec := sec - 1;
  ShowTime; // показать, сколько времени осталось
end;
 
procedure TForm1.btn1Click(Sender: TObject);
begin
  tmr1.Enabled := True;   
end;
0
angstrom
11.10.2012, 15:44
Я ведь указал, ОДИН обработчик для всех пунктов меню отвечающих за установку времени.
Delphi
1
2
3
4
5
6
7
8
// для всех пунктов меню отвечающих за установку времени таймера.
procedure TForm1.MeniItemClick(Sender: TObject);
begin
  CounEnd := (Sender as TMenuItem).Tag;
  (Sender as TMenuItem).Checked := True;
  txt1.Caption := '  00:' + IntToStr((Sender as TMenuItem).Tag);
  Count := 0;
end;
28 / 28 / 8
Регистрация: 07.10.2012
Сообщений: 106
11.10.2012, 16:23  [ТС]
А где объявить CounEnd и Count, чтобы в процедуре Timer1Timer(Sender: TObject) не ругался?

Добавлено через 22 минуты
Разобрался. Там просто ошибка в имени переменной.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.10.2012, 16:23
Помогаю со студенческими работами здесь

Запуск программы через заданный промежуток времени после выбора данного действия в меню
Всем добрый вечер!!! Я написал программу, которая сворачивает форму в трей, при нажатии правой кнопки мыши на неё выпадает меню, в котором...

Сохранение времени для таймера
Здравствуйте, создавая секундомер в Windows Forms,столкнулся с такой проблемой, что после нажатия кнопки Start время автоматически...

Вывод времени до срабатывания таймера
Здравствуйте. У меня в приложении есть два таймера: m_timerAutoRefresh = new System.Windows.Forms.Timer(); ...

Создание таймера с выводом времени
навеяло отсюда https://www.cyberforum.ru/php/thread31174.html читал читал, в итоге все равно не понял как сделать таймер. Вот какой...

Установка периода таймера на 20 мс (i8051)
частота кварца 11,59 МГц #include &lt;reg51.h&gt; sbit SB1 = P3^2; sbit SB2 = P3^3; sbit LED1 = P3^4; sbit LED2 = P3^5; int ttrol=0; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru