|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Динамический Timer
Как можно создать таймер и процедуру к нему, если форма создается через
var F:TForm; Application.CreateForm(TForm,F); Мне нужно как бы создать таймер без помещения его на форму, а так же привязать действие к нему. Как сделать? Не пускайте детей в интернет. |
#2
|
||||
|
||||
Код:
uses ExtCtrls; // делфи сам этот модуль подключает, но все таки ... private procedure Timer_(Sender: TObject); ... // там где надо создать таймер: var T: TTimer; begin T := TTimer.Create(Self); // вместо self твоя форма T.Interval := 500; T.OnTimer := Timer_; T.Enabled := True; end; procedure TForm1.Timer_(Sender: TObject); begin /// ну а тут твое событие таймера. end; Помогаю за Спасибо |
#3
|
||||
|
||||
таймер без привязки к TForm:
Код:
program Project1; uses Windows, Messages, Forms, Classes, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} type TWndTimer = class private FWindowHandle: HWND; procedure WndProc(var Msg: TMessage); public constructor Create; destructor Destroy; override; end; var FWndTimer: TWndTimer; { TWndTimer } constructor TWndTimer.Create; begin inherited Create; FWindowHandle:=AllocateHWnd(WndProc); SetTimer(FWindowHandle, 1, 500, nil); end; destructor TWndTimer.Destroy; begin KillTimer(FWindowHandle, 1); DeallocateHWnd(FWindowHandle); inherited Destroy; end; procedure TWndTimer.WndProc(var Msg: TMessage); begin if Msg.Msg=WM_TIMER then begin { do it } Windows.Beep(1000, 100); end else Msg.Result:=DefWindowProc(FWindowHandle, Msg.Msg, Msg.WParam, Msg.LParam); end; begin FWndTimer:=TWndTimer.Create; Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; FWndTimer.Free; end. Пишу программы за еду. __________________ |