![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Как можно создать таймер и процедуру к нему, если форма создается через 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	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. |