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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2008, 22:24   #1
ak3000
Пользователь
 
Аватар для ak3000
 
Регистрация: 07.03.2008
Сообщений: 15
Сообщение TTimer

Кто может объяснить подробно как этот компонент работает? Почему-то у меня возникают интересные ошибки в программе из-за этого компонента и я не могу понять как он работает... Например интересны вот такие моменты: когда в теле процедуры которая выполняется по таймеру написано выполнить такую процедуру, а после строка где написано что таймер нужно отключить. Как будет происходить работа? Либо сначала будет выполняться указанная процедура и только по ее завершению таймер отключиться либо же пока началось выполнение процедуры параллельно произойдет отключение таймера? Если знаете еще какие-нибудь тонкости буду очень рад послушать.
ak3000 вне форума Ответить с цитированием
Старый 25.08.2008, 22:50   #2
GreenDan
Никто
Пользователь
 
Аватар для GreenDan
 
Регистрация: 25.08.2008
Сообщений: 28
По умолчанию

Например тебе надо по истечении времени сделать Label1 невидимой.
Тебе надо сделать это через секунду.
Код:
procedure Form1.Create(Sender: TObject);
begin
Timer1.Enabled := true; // Включаешь таймер
Timer1.Interval := 1000;
end;
Потом создаёшь процедуру OnTimer для Timer1
Между begin и end пишешь:
Код:
Label1.Visible := false; // Делает Label1 невидимым
Timer1.Enabled := false; // Откючаешь таймер
Готово!
GreenDan вне форума Ответить с цитированием
Старый 25.08.2008, 22:51   #3
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

TTimer это оболочка винды SetTimer и KillTimer. Всего две функции. И если идет речь об обработчике OnTimer то без разницы где вы вставите .Enabled := False ведь пока не закончится код обработчика ничего не произойдет нового, того что вы не писали.
BOBAH13 вне форума Ответить с цитированием
Старый 26.08.2008, 01:43   #4
ak3000
Пользователь
 
Аватар для ak3000
 
Регистрация: 07.03.2008
Сообщений: 15
По умолчанию

Спасибо, за помощь, но я уже успел разобраться со своими проблемами. Там была ошибка в том что выключение таймера стояла после процедуры (все это в теле выполнения таймера), а так как та процедура потом тоже использовала этот же таймер, то он должен был быть отключеным уже в этот момент. Поэтому поменяв местами эти 2 строчки у меня все заработала. Т.е. самое важное то что когда отключаешь таймер процедура которая выплняется в текущий момент им не прервется пока не закончится не зависимо от того включен или выключен таймер. Моя ошибка была в том что я думал что выключение таймера у меня произойдет параллельно с выполнением процедуры (которая стояла перед выключением), но нет, как и везде код выполняется строго последовательно, вообщем я немного переоценил его возможности )).

Теперь по поводу того что вы сказали: GreenDan, то что написано у тебя на создании формы можно сразу забить в таймер, но если делать так, то надо по крайней мере задать интервал ПЕРЕД тем как ты его включишь. Иначе у тебя первый запуск произойдет со стандартным интервалом а ни с тем которым ты хочешь. А во втором куске, как я уже писал выше, можно строки менять местами и нимего не измениться.
ak3000 вне форума Ответить с цитированием
Старый 13.11.2008, 19:16   #5
Nastiusha_19
Новичок
Джуниор
 
Регистрация: 13.11.2008
Сообщений: 1
По умолчанию

помогите мне мне слулать обновление по timer.надоело искать,немогу сделатьЙ
Nastiusha_19 вне форума Ответить с цитированием
Старый 13.11.2008, 20:57   #6
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

А что вы тут написали чет нейпойняйтно :D по русски пожалуйста например не ясно вот это: "слулать" и что обновлять? Очень открытый вопрос
BOBAH13 вне форума Ответить с цитированием
Старый 13.11.2008, 21:28   #7
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,573
По умолчанию

Если действия обработчика таймера могут затянуться, и может произойти обработка сообщений системой, то в начале обработчика таймера таймер нужно отключить, а в конце включить.
Иначе, если, скажем в таймере выдается сообщение, то, пока пользователь его не закрыл, может произойти следующий тик таймера, и на экране появится куча окошек сообщений.
Arigato вне форума Ответить с цитированием
Старый 14.11.2008, 14:08   #8
Liite
позитиффф
Пользователь
 
Регистрация: 14.11.2008
Сообщений: 34
По умолчанию

господа кто поможет ламеру?)))
нада замутить свои часы в проге чтобы в них можно было менять время , пытался преобразовывать по всякому не хочет подлец....
Liite вне форума Ответить с цитированием
Старый 14.11.2008, 14:15   #9
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Liite Посмотреть сообщение
господа кто поможет ламеру?)))
нада замутить свои часы в проге чтобы в них можно было менять время , пытался преобразовывать по всякому не хочет подлец....
Из правил форума - новый вопрос - новая тема. И совсем уж не годится лезть со своими вопросами в чужую тему.
mihali4 вне форума Ответить с цитированием
Старый 14.11.2008, 18:18   #10
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Михалыч прав и ваще нуна писать не "замутить", а "слулать".
Ой, не могу, потешили.
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TTimer в Delphi AlexandrSid Общие вопросы Delphi 7 23.05.2008 14:10
TTimer amandra Компоненты Delphi 3 19.11.2007 13:54