Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/88: Рейтинг темы: голосов - 88, средняя оценка - 4.82
2 / 2 / 1
Регистрация: 14.12.2014
Сообщений: 66

С++ Builder Таймер в форме

20.12.2014, 18:54. Показов 16214. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приведите пожалуйста пример работы таймера в форме, к примеру при нажатии кнопки таймер начинает отсчет.(Желательно чтобы этот отсчет виден был, ну допустим создать Label с текстом "0" , для того чтобы отсчет начинался с нуля)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.12.2014, 18:54
Ответы с готовыми решениями:

Таймер в C++ Builder. Анимация
Ребят нужна помощь (не ссылка а код). Нужна анимация: - минуту висит картинка - на нее вылазит следующая - проходит 0.2 секунды ...

Таймер на форме
каким образом и возможно ли создать таймер чтобы. При нажатии на клавишу появлялся на экран (на форме) поле и начался отсчет в обратку, и...

Таймер на форме
На форме будет стоять таймер, надо в его обработчике событий написать, чтобы он срабатывал каждый день в 7 утра, через интервал таймера это...

5
Модератор
 Аватар для D1973
9915 / 6452 / 2455
Регистрация: 21.01.2014
Сообщений: 27,385
Записей в блоге: 3
21.12.2014, 08:53
Лучший ответ Сообщение было отмечено Leva_Zevakin как решение

Решение

Да пожалуйста...
На форме метка (Label), кнопка и таймер.
Свойство Enabled таймера выставляем false;

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int i; //объявили глобальную переменную-счетчик
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   Label1->Caption = IntToStr(i); //Вывели в метку начальное значение счетчика
   Timer1->Enabled = true; //включили таймер
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  if(i <= 100) //Пока счетчик меньше 100
   {
     i++; //Инкрементируем значение счетчика
     Label1->Caption = IntToStr(i); //Меняем значение метки в соответствии со значением счетчика
     Application->ProcessMessages(); //Это чтобы программа не зависала, пока счетчик считается
   }
  else Timer1->Enabled = false; //Когда счетчик > 100 - выключаем таймер
}
//---------------------------------------------------------------------------
1
2 / 2 / 1
Регистрация: 14.12.2014
Сообщений: 66
21.12.2014, 15:23  [ТС]
Скажите пожалуйста как записать в файл значение таймера при его остановке ? Вот к примеру в игре , ты дошел до какого-то конца, выводится 2форма с сохранением в файл Имени игрока, и так же нужно записать время прохождения, не знаю как это реализовать...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int i; //объявили глобальную переменную-счетчик
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
* *Label1->Caption = IntToStr(i); //Вывели в метку начальное значение счетчика
* *Timer1->Enabled = true; //включили таймер
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
* if(i <= 100) //Пока счетчик меньше 100
* *{
* * *i++; //Инкрементируем значение счетчика
* * *Label1->Caption = IntToStr(i); //Меняем значение метки в соответствии со значением счетчика
* * *Application->ProcessMessages(); //Это чтобы программа не зависала, пока счетчик считается
* *}
* else Timer1->Enabled = false; //Когда счетчик > 100 - выключаем таймер
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)// кнопка стоп
{
* Timer1->Enabled = false;*
}
0
Модератор
 Аватар для D1973
9915 / 6452 / 2455
Регистрация: 21.01.2014
Сообщений: 27,385
Записей в блоге: 3
21.12.2014, 16:54
Лучший ответ Сообщение было отмечено Leva_Zevakin как решение

Решение

В таком случае...
1. переменную-счетчик необходимо объявить не глобально для Form1, а в секции public класса Form1, для того, чтобы можно было получить к ней доступ из других модулей проекта.
C++
1
2
3
4
5
6
7
8
9
10
11
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TButton *Button1;
        ...
        void __fastcall FormCreate(TObject *Sender);
private:    // User declarations
public:     // User declarations
       int i;
        __fastcall TForm1(TComponent* Owner);
};
2. При создании Form1 инициализировать переменную-счетчик
C++
1
2
3
4
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  i = 0;
}
3. в модуль второй формы включить директиву
C++
1
#include "Unit1.h"
4. обратиться к переменной-счетчику из второй формы можно так:
C++
1
String s = IntToStr(Form1->i);
а потом пиши эту переменную s файл наряду с именем игрока
1
2 / 2 / 1
Регистрация: 14.12.2014
Сообщений: 66
26.12.2014, 01:18  [ТС]
D1973, Как сделать счет таймера в обратном порядке? чтобы начинался таймер к примеру со ста и заканчивался нулем, в этом же коде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int i; 
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Label1->Caption = IntToStr(i); 
  Timer1->Enabled = true; 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  if(i <= 100) //пробовал здесь писать условие так (i>=1){....
   {
    i++; //и здесь ставил i--; не получилось в итоге:)
    Label1->Caption = IntToStr(i); 
    Application->ProcessMessages(); 
  }
  else Timer1->Enabled = false;
}
0
Модератор
 Аватар для D1973
9915 / 6452 / 2455
Регистрация: 21.01.2014
Сообщений: 27,385
Записей в блоге: 3
26.12.2014, 07:51
Лучший ответ Сообщение было отмечено Leva_Zevakin как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
int i = 100; //объявили и инициализировали глобальную переменную-счетчик
 
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  if(i > 0) //Пока счетчик больше 0
   {
     i--; //Декрементируем значение счетчика
     Label1->Caption = IntToStr(i); //Меняем значение метки в соответствии со значением счетчика
     Application->ProcessMessages(); //Это чтобы программа не зависала, пока счетчик считается
   }
  else Timer1->Enabled = false; //Когда счетчик == 0 - выключаем таймер
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.12.2014, 07:51
Помогаю со студенческими работами здесь

Таймер на форме
При открытии формы должен запускаться таймер, который автоматически начинает отчёт 20 минут (в обратном отчёте). Не получается реализовать,...

Таймер на форме
Добрый день. Помогите разобраться с проблемой: 1. Создал форму Progress на которой разместил объект класса TTimer...

Установить таймер на форме и Recordset
Доброго времени суток! Помогите, пожалуйста, реализовать следующее. Необходимо, перемещаясь по записям в форме (с помощью Recordset),...

Как реализовать таймер на форме
Есть форма на которой должен быть визуальный таймер обратного отсчета, по завершении времени форма должна закрываться.

Таймер на форме. Запуск по нажатию кнопки
Добрый вечер форумчане, подскажите или поделитесь ссылкой на готовый вариант. Хочу сделать на форме поле-таймер. Запускаемый по...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru