Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Таймер [D6, WinXP]


Страницы:   1 2

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]

осень...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо