Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.03.2013, 00:33
Gareth Gareth вне форума
Активный
 
Регистрация: 21.03.2013
Адрес: Приднестровье
Сообщения: 202
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Добовление времени для будильника

Написал будильник на делфи.
Опишу саму прогу:
на форму выведено системное время, 3 комбобокса (часы, минуты и секунды). Еще есть edit, в него попадают цифры из комбобоксов (часы:минуты:секунды). И уже с edit`a сравниваем время с системным, если равно то будильник срабатывает...
Всё работает как мне надо, кроме одного! Хотелось бы добавить кнопки быстрого набора, то-есть не копаться в комбобоксах, что бы выставить 5 минут, а сразу нажать на кнопку, которая указала бы в комбобоксе эти самые 5 минут.

Пробовал вот так:
Код:
 var
 dt: TDateTime;
  Hours, Minutes, Seconds, Milliseconds: Word;
begin
dt := GetTime;
  DecodeTime(dt, Hours, Minutes, Seconds, Milliseconds);
cbb1.Text:=IntToStr(Hours); // выводит в первый комбобокс часы
cbb2.Text:=IntToStr(Minutes+5); // выводит минуты и прибавляет 5 минут
end;
Первое время думал что всё сделал правильно, но потом понял что нет. Если время будет к примеру 22:59, этот код нам приплюсует еще 5 минут, это будет 22:64, но как мы все знаем, минут в часах всего 60
Каким образом можно сделать подобные кнопки быстрого набора ? Не обязательно что бы это происходило через комбобоксы!
Посоветуйте что-нибудь. Спасибо.

похвастаться
Ответить с цитированием
  #2  
Старый 25.03.2013, 00:37
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Во-первых, SpinEdit. Во-вторых, if...then. То-есть, если сумма текущих минут и того, что добавляем, больше 59, то вычесть 60. Аналогично с часами (только уже по модулю 24).
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
Этот пользователь сказал Спасибо PhoeniX за это полезное сообщение:
Gareth (25.03.2013)
  #3  
Старый 25.03.2013, 00:47
Gareth Gareth вне форума
Активный
 
Регистрация: 21.03.2013
Адрес: Приднестровье
Сообщения: 202
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от PhoeniX
Во-первых, SpinEdit. Во-вторых, if...then. То-есть, если сумма текущих минут и того, что добавляем, больше 59, то вычесть 60. Аналогично с часами (только уже по модулю 24).
По подробнее можно? Я практически ничего не понял. Я новичок еще в этом. Писать за меня код не прошу, просто объясните подробно пожалуйста.
Код:
if cbb2.ItemIndex >60 then
cbb2.ItemIndex:=(-60);
Так?

Последний раз редактировалось Gareth, 25.03.2013 в 01:12.
Ответить с цитированием
  #4  
Старый 25.03.2013, 01:37
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Замени ComboBox на SpinEdit, и сразу станет проще.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
Этот пользователь сказал Спасибо PhoeniX за это полезное сообщение:
Gareth (25.03.2013)
  #5  
Старый 25.03.2013, 05:44
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,105
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от PhoeniX
Замени ComboBox на SpinEdit, и сразу станет проще.

А еще есть модуль DateUtils, в котором есть куча полезный функций работы с датой и временем.
А еще есть такой компонент - TDateTimePicker, который позволяет вводить время...
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
Gareth (25.03.2013)
  #6  
Старый 25.03.2013, 07:02
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Оффтоп:
Цитата:
Сообщение от lmikle
А еще есть модуль DateUtils, в котором есть куча полезный функций работы с датой и временем...
Да не, думаю ТСу это будет пока сложно, судя по предыдущим постам, да и похоже, ему надо чтоб раздельно вводились часы, минуты etc.

По теме. УК, кидай прям по совету Феникса, на "похвастаться" три SpinEdit`а (компонента живет на вкладке Samples) и прикрути к ним одно на всех событие OnChange
Код:
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
 with (Sender as TSpinEdit) do
  begin
   if Value = MinValue then Value:= MaxValue - 1;
   if Value = MaxValue then Value:= MinValue + 1;
  end;{with}
end;
так будет проще, единственное что ещё надо, так это у всех задать MinValue = -1, а MaxValue у первого = 24, а у двух других равным 60.
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
Gareth (25.03.2013)
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:57.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025