|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Необходимо условие
Добрый день! Подскажите пожалуйста, как реализовать следующее условие. Если не нажимать на кнопки клавиатуры и мыши в течении 5 минут, то чтобы запускалась форма.
|
#2
|
||||
|
||||
компонент TApplicationEvents событие OnIdle
Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
Этот пользователь сказал Спасибо Yurk@ за это полезное сообщение: | ||
demon-sheff (04.07.2013)
|
#3
|
|||
|
|||
чего-то я может не понимаю? делаю все так
Код:
procedure TForm1.IdleEventHandler(Sender: TObject; var Done: Boolean); begin Form1.Show; end; procedure TForm1.FormCreate(Sender: TObject); begin Application.OnIdle := IdleEventHandler; end; procedure TForm1.IdleProc(sender:TObject; var Done: Boolean); begin Timer1.:= TimeToStr(Time); done:=false; end; не проходит |
#4
|
|||
|
|||
вроде разобрался работает так:
Код:
private { Private declarations } procedure IdleEventHandler(Sender: TObject; var Done: Boolean); public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.IdleEventHandler(Sender: TObject; var Done: Boolean); begin if timer1.Interval=10000 then Form1.WindowState:=wsMaximized; Done := false; end; procedure TForm1.FormCreate(Sender: TObject); begin Application.OnIdle := IdleEventHandler; form1.WindowState:=wsMinimized; end; |
#5
|
||||
|
||||
Код:
procedure TForm2.ApplicationIdle(Sender: TObject; var Done: Boolean); Var CurrentTime: Extended; begin Done := False; CurrentTime := GetTickCount; if CurrentTime - ApplicationStartTime > 1000 * 60 * 5 then begin ApplicationStartTime := CurrentTime; ShowMessage('Другая форма'); Done := True; end; end; procedure TForm2.FormCreate(Sender: TObject); begin ApplicationStartTime := GetTickCount; Application.OnIdle := ApplicationIdle; end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
demon-sheff (04.07.2013)
|
#6
|
|||
|
|||
Цитата:
|
#7
|
||||
|
||||
Удобнее использовать Now.
Код:
var isDone : Boolean; ApplicationStartTime : TDateTime; procedure TForm1.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean); Var CurrentTime : TDateTime; begin CurrentTime := Now; if not isDone and (CurrentTime >= ApplicationStartTime) then begin isDone := True; ShowMessage('Другая форма'); end; end; procedure TForm1.FormCreate(Sender: TObject); begin isDone := False; ApplicationStartTime := Now; ApplicationStartTime := incMinute(ApplicationStartTime, 5); Application.OnIdle := ApplicationEvents1Idle; end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#8
|
|||
|
|||
Цитата:
|
#9
|
||||
|
||||
В uses подключить DateUtils.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#10
|
|||
|
|||
странно, но почему-то ничего не происходит?
|
#11
|
||||
|
||||
Смотри где напутал. Для более быстрой проверки поставь такую строку.
Код:
ApplicationStartTime := incSecond(ApplicationStartTime, 10); Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#12
|
|||
|
|||
все равно ничего не происходит.
вот тут все правильно вы написали? Код:
Application.OnIdle := ApplicationEvents1Idle; Код:
Application.OnIdle := ApplicationEvents1.OnIdle; |
#13
|
||||
|
||||
У меня правильно написано, так как эту строчку Дельфи сформировал автоматически при создании события OnIdle в Инсректоре.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#14
|
||||
|
||||
Че-то вы не то делаете. У меня все точно работает с первоначальным кодом. В форму добавили переменную и заголовок события?
Код:
TForm2 = class(TForm) procedure FormCreate(Sender: TObject); procedure ApplicationIdle(Sender: TObject; var Done: Boolean); private ApplicationStartTime: Extended; public { Public declarations } end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#15
|
||||
|
||||
У тебя не может работать правильно, так как переменная Done служит несколько для других целей нежели применённая в коде.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |