Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.23;
Скачать: CL | DM;

Вниз

Ожидание   Найти похожие ветки 

 
Ag2002   (2002-12-10 14:48) [0]

Подскажите пожалуйста как узнать о том что моя в моей программе в течениии какого либо времени ни кто ничего не делатет...


 
Sha ©   (2002-12-10 14:56) [1]

TTimer


 
Mike_Goblin ©   (2002-12-10 15:24) [2]

TApplication.OnIdle


 
uu ©   (2002-12-10 18:04) [3]

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

const
Delay = 3; // "Продолжительная задержка" в секундах

type
TForm1 = class(TForm)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
public
Past: LongInt;
procedure DoWork; // То, что будет делаться по истечении "продолжительной задержки"
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var
Current: LongInt;
begin
Current := GetTickCount;
if Current-Past > Delay*1000 then begin
Past := Current;
DoWork;
end;
end;

procedure TForm1.DoWork;
begin
ShowMessage("Что-то вы долго ничего не делали");
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Past := GetTickCount;
KeyPreView := True;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Past := GetTickCount;
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Past := GetTickCount;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Past := GetTickCount;
end;

end.


 
Юрий Зотов ©   (2002-12-10 18:33) [4]

> uu © (10.12.02 18:04)

1. В программе может быть и несколько форм.
2. KeyPreview на мышь не распространяется.

Вывод - мышь/клавиатуру надо перехватывать глобально. Например, в обработчике Application.OnMessage. См. также WM_KEYFIRST, WM_KEYLAST, WM_MOUSEFIRST, WM_MOUSELAST в Windows.pas.


3. Зачем какие-то дополнительные поля и переменные?

procedure TForm1.Timer1Timer(Sender: TObject);
begin
ShowMessage("Что-то вы долго ничего не делали")
end;

procedure TForm1.АppMessage(...); // Application.OnMessage.
begin
if <это сообщение клавиатуры/мыши> then // Сброс таймера
begin
Timer1.Enabled := False;
Timer1.Enabled := True
end
end;

Это все, больше ничего не нужно.


 
Sha ©   (2002-12-10 18:44) [5]

Разделяю мнение предыдущего оратора :)



Страницы: 1 вся ветка

Текущий архив: 2002.12.23;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.013 c
14-74978
3d[Power]
2002-12-03 14:32
2002.12.23
---|Ветка была без названия|---


7-75010
Slym
2002-10-16 07:35
2002.12.23
Как узнать координаты иконки в трее?


14-74913
vopros
2002-11-29 11:16
2002.12.23
Вроде все хорошо.Но такая ж.па.


1-74716
Armageddon
2002-12-10 22:22
2002.12.23
К- ричные числа.


1-74630
bkv
2002-12-10 16:42
2002.12.23
сколько пикселов займет срока в 10 символов?