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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.12.2007, 20:27
4EJIOBEK 4EJIOBEK вне форума
Прохожий
 
Регистрация: 13.12.2007
Адрес: Днепропетровск
Сообщения: 19
Репутация: 10
По умолчанию Хелп,плиз чайнику!Очень срочно!

Проблема такая:
Я хочу создать приложение с тестами,12 вопросов и 4 варианта ответа в RadioGroup, но чтобы было ограничение во времени 5 мин (на весь тест) после которых новые ответы не принимаются и выводится результат.Хелп плиз!
Ответить с цитированием
  #2  
Старый 13.12.2007, 20:55
~ SaM ~ ~ SaM ~ вне форума
Начинающий
 
Регистрация: 05.01.2007
Адрес: Днепропетровск
Сообщения: 141
Репутация: 25
По умолчанию

Можно так...

Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var i:byte;
begin
timer1.interval:=1000;
i:=i+1;
if i=300 then begin
application.messagebox('Время вышло!','Ошибка',0);
Timer1.Destroy;
{Далее можно пройтись циклом по всем радиобуттонам и задать им свойсто Enabled:=false}
end;
end;
Ответить с цитированием
  #3  
Старый 13.12.2007, 21:07
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Ставишь TTimer на 5 мин (в милисекундах) и делаешь выход с теста по истечении этого времени!
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #4  
Старый 13.12.2007, 21:28
4EJIOBEK 4EJIOBEK вне форума
Прохожий
 
Регистрация: 13.12.2007
Адрес: Днепропетровск
Сообщения: 19
Репутация: 10
По умолчанию

Цитата:
Сообщение от ~ SaM ~
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var i:byte;
begin
timer1.interval:=1000;
i:=i+1;
if i=300 then begin
application.messagebox('Время вышло!','Ошибка',0);
Timer1.Destroy;
end;
end;

Спасибо,смысл я понял, но как мне сделать так, чтоб таймер включался с нажатием кнопки Button1? (То есть как procedure TForm1.Timer1Timer(Sender: TObject); вставить в procedure Button1.Click(Sender: TObject); ?
Ответить с цитированием
  #5  
Старый 13.12.2007, 21:33
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

В таймере есть свойство Enable;
Вот его и используй по нажатию кнопки !
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #6  
Старый 13.12.2007, 21:35
Аватар для Winny
Winny Winny вне форума
Продвинутый
 
Регистрация: 26.05.2007
Адрес: Планета земля, Россия, Москва
Сообщения: 620
Репутация: 30
По умолчанию

Зачем его вставлять в код? У таймера есть свойство Enabled. Если стоит True, то таймер выполняет процедуру OnTimer у таймера, если False, то таймер выключен. В твоём случае в OnClick у Button пиши следующее:
Код:
Timer1.Enabled:=True
__________________

Ответить с цитированием
  #7  
Старый 13.12.2007, 21:36
Аватар для Winny
Winny Winny вне форума
Продвинутый
 
Регистрация: 26.05.2007
Адрес: Планета земля, Россия, Москва
Сообщения: 620
Репутация: 30
По умолчанию

To Yurk@
Опередил )
__________________

Ответить с цитированием
  #8  
Старый 13.12.2007, 22:36
4EJIOBEK 4EJIOBEK вне форума
Прохожий
 
Регистрация: 13.12.2007
Адрес: Днепропетровск
Сообщения: 19
Репутация: 10
По умолчанию

ГЛАВНЫЙ КУСОК КОДА

procedure TMainForm.testClick(Sender: TObject);
var name i: integer;
p:byte;
begin
Timer1.Enabled := True;
timer1.interval:=1000;
i:=i+1;
if i=10 then
begin
if radiobutton3.Checked then
p:=p+1;
if radiobutton8.Checked then
p:=p+1;
if radiobutton11.Checked then
p:=p+1;
if radiobutton16.Checked then
p:=p+1;
if radiobutton18.Checked then
p:=p+1;
if radiobutton24.Checked then
p:=p+1;
if radiobutton27.Checked then
p:=p+1;
if radiobutton29.Checked then
p:=p+1;
if radiobutton36.Checked then
p:=p+1;
if radiobutton37.Checked then
p:=p+1;
if radiobutton41.Checked then
p:=p+1;
if radiobutton47.Checked then
p:=p+1;
RadioGroup1.Enabled := False;
RadioGroup2.Enabled := False;
RadioGroup3.Enabled := False;
RadioGroup4.Enabled := False;
RadioGroup5.Enabled := False;
RadioGroup6.Enabled := False;
RadioGroup7.Enabled := False;
RadioGroup8.Enabled := False;
RadioGroup9.Enabled := False;
RadioGroup10.Enabled := False;
RadioGroup11.Enabled := False;
RadioGroup12.Enabled := False;
application.messagebox('Время вышло!','Ошибка',0);
Timer1.Destroy;
end;
end;

я написал программу компайл проходит, но через 10 сек меседж бокс не появляется...
Ответить с цитированием
  #9  
Старый 13.12.2007, 23:30
~ SaM ~ ~ SaM ~ вне форума
Начинающий
 
Регистрация: 05.01.2007
Адрес: Днепропетровск
Сообщения: 141
Репутация: 25
По умолчанию

Ладно...ты не правильно понял!

В Delphi, во вкладке System есть картинка, на котррой нарисованы часы. нажимаешь одни раз на нее, а потом в любое метсто на форме. на форме появится такой же рисунок(компонент) как из вкладки system. на него нажимешь два раза левой кнопкой мыши и пишешь то, то я тебе написал!

В свойствах Timer'a ставишь enabled:=false и при нажатии на кнопку(в процедуре) пишешь следующее:

Код:
Timer1.enabled:true;
//после чего пишешь все "запреты" на использование теста!
Ответить с цитированием
  #10  
Старый 13.12.2007, 23:34
~ SaM ~ ~ SaM ~ вне форума
Начинающий
 
Регистрация: 05.01.2007
Адрес: Днепропетровск
Сообщения: 141
Репутация: 25
По умолчанию

Можешь еще на форму добавить label и тогда в процедуру таймера добавь строку
Код:
label1.caption:='Прошло секунд: '+inttostr(i);

Последний раз редактировалось ~ SaM ~, 13.12.2007 в 23:36.
Ответить с цитированием
  #11  
Старый 13.12.2007, 23:52
~ SaM ~ ~ SaM ~ вне форума
Начинающий
 
Регистрация: 05.01.2007
Адрес: Днепропетровск
Сообщения: 141
Репутация: 25
По умолчанию

Да, кстати... Не понял прикола!

Цитата:
но чтобы было ограничение во времени 5 мин

И после:
Цитата:
я написал программу компайл проходит, но через 10 сек меседж бокс не появляется...

В таймере устанавливается интервал в милисекундах. 1 секунда = 1000 милисекундам!
Ответить с цитированием
  #12  
Старый 14.12.2007, 00:36
4EJIOBEK 4EJIOBEK вне форума
Прохожий
 
Регистрация: 13.12.2007
Адрес: Днепропетровск
Сообщения: 19
Репутация: 10
По умолчанию

Цитата:
Сообщение от ~ SaM ~


В таймере устанавливается интервал в милисекундах. 1 секунда = 1000 милисекундам!

Да, в коде интервал 1000мсек (1 сек),это время,через которое счётчик +1,надо было проверить работает ли таймер чтоб не ждать 5 мин я поставил 10 сек и ничего не вышло...
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter