![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Таймер [D6, WinXP]
Sp1r1t © (2006-11-06 19:43:00)type
Thr = class(TThread)
procedure Execute; override;
end;
MyTimer = class(TTimer);
var
Time : MyTimer;
implementation
procedure Thr.Execute;
begin
Time.Interval:=500;
Time:=MyTimer.Create(Time);
{
Здесь мне надо запустить таймер и написать
действия которые он будет выполнять. Как это
сделать?
}
Time.Destroy;
end;
end.
evvcom (2006-11-07 12:18:00) [1]> [20] Сергей М. © (07.11.06 08:53)
Любые извращения за ваши деньги! :-)))))))
Сергей М. (2006-11-07 08:53:00) [2]
> Sp1r1t
type
TMyThread = class(TThread)
private
procedure DoTimer(Sender: TObject);
protected
procedure Execute; override;
end;
..
var
MyTimer : TTimer;
implementation
procedure TMyThread.DoTimer;
begin
Windows.Beep(1000, 200);
end;
procedure TMyThread.Execute;
var
Msg: TMsg;
begin
try
MyTimer:=TTimer.Create(nil);
try
MyTimer.Interval:=500;
MyTimer.OnTimer := DoTimer;
MyTimer.Enabled := True;
while not Terminated do begin
if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then
DispatchMessage(Msg);
Sleep(0);
end;
finally
MyTimer.Free;
end;
except
MessageBox(0, 'Грабли !', '', mb_ok or mb_setforeground);
end;
end;
...
var
MyThread: TMyThread;
..
MyThread := TMyThread.Create(False);
ShowMessage('Поток с таймером создан, послушай как он бибикает. Как надоест, жмакни ОК для прекращения этого безобразия ...');
MyThread.Free;
Германн (2006-11-07 01:39:00) [3]<offtop>
Хорошо, что хоть кто-то понял, что доппотоки не есть панацея. Теперь бы вот как-нибудь убедить всех, кто работает с СОМ-портом в этом!
</offtop>
Sp1r1t (2006-11-07 00:59:00) [4]спасибо RASkov - все работает. То я шото правда загнул нащет таймера в потоке. :D
MetalFan (2006-11-06 22:20:00) [5]> [15][16]
ну пошли извращенства)))
кто там мне говорил через горло в попе у соседа ковыряться? ;)
Ketmar (2006-11-06 22:13:00) [6]>[15] RASkov 6-Nov-2006, 22:11
>:)) или как еще?
или свойство Components ещё.
RASkov (2006-11-06 22:11:00) [7]> [14] Ketmar © (06.11.06 22:08)
procedure TForm1.OnTime(Sender: TObject);
begin
(Sender as TTimer).Interval:=1500;
end;
:)) или как еще?
Ketmar (2006-11-06 22:08:00) [8]>[13] RASkov 6-Nov-2006, 22:07
>Но нельзя будет изменить, например Interval:)
неправда.
RASkov (2006-11-06 22:07:00) [9]> [12] Ketmar © (06.11.06 22:03)
Но нельзя будет изменить, например Interval:)
Ketmar (2006-11-06 22:03:00) [10]>[11] RASkov 6-Nov-2006, 21:58
>Просто после выхода из процедуры Button4Click
>потеряется ссылка на Таймер.
ну и фиг с ним. форма при умирании и таймер пришибёт.
RASkov (2006-11-06 21:58:00) [11]> procedure TForm1.Button4Click(Sender: TObject);
> var tm: TTimer;
> begin
> tm:=TTimer.Create(self);
Не совсем верно.... или совсем не верно.... Вообщем так не надо. Просто после выхода из процедуры Button4Click потеряется ссылка на Таймер.
RASkov (2006-11-06 21:56:00) [12]> [8] Sp1r1t (06.11.06 20:28)
> Т.е не обратиться а написать обработчик метода OnTimer
procedure OnTime(Sender: TObject);
.....
procedure TForm1.Button4Click(Sender: TObject);
var tm: TTimer;
begin
tm:=TTimer.Create(self);
tm.Interval:=2000;
tm.OnTimer:=OnTime;
end;
procedure TForm1.OnTime(Sender: TObject);
begin
ShowMessage('Ну нахрена в потоке таймер');
end;
> Мне нужно чтобы создавался отдельный поток, который будет
> генерировать числа с заданным интервалом времени.
Отдельный поток это и есть "таймер". И дополнительно в нем создавать еще таймер нет смысла.
Percent (2006-11-06 20:42:00) [13]Зачем тебе поток?
Sp1r1t (2006-11-06 20:28:00) [14]Т.е не обратиться а написать обработчик метода OnTimer
Sp1r1t (2006-11-06 20:25:00) [15]Ну може я плохо придумал работать с Объектом - ну это пока сырой/обобщенный код. Дело не в том. Я хочу знать как обратиться к методу OnTimer. Мне нужно чтобы создавался отдельный поток, который будет генерировать числа с заданным интервалом времени.
Percent (2006-11-06 20:20:00) [16]можь ты не чихлишь шо я делаю и что хочу
Ты же сам не говоришь: "Какая разница што это." - твое?
А вот за это:
Time.Interval:=500;
Time:=MyTimer.Create(Time);
тебе - в начинающие.
И еще. Ты можешь обїяснить, зачем тебе в потоке таймер?
Sp1r1t (2006-11-06 20:12:00) [17]Шо тут такого конченого? Сказать можешь? можь ты не чихлишь шо я делаю и что хочу
Percent (2006-11-06 20:09:00) [18]Какая разница што это.
Это %ля ващще!
Жжош!
Вы мне скажите пожалуйста как запустить таймер и как написать обработчик события OnTimer
Берешь будильник.
Открываешь окно.
Запускаешь будильник в окно.
Идешь спать.
То есть, или ты забываешь, что такое программирование вообще, или уходишь в "Начинающим".
Другого тебе пока не дано.
Смирись.
Sp1r1t (2006-11-06 20:04:00) [19]Какая разница што это. Вы мне скажите пожалуйста как запустить таймер и как написать обработчик события OnTimer
Ketmar (2006-11-06 19:57:00) [20]осень...