Вопрос Как сделать таймер

Nemko

Дилетант
Модератор
MISHAWIN, может лучше так, правда, отлавливание будет всего одно, если нужно несколько, то тогда вернуть Boolean переменные:
Код:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Files]
Source: {win}\help\*; DestDir: {app}\Files; Flags: external recursesubdirs;

[Code]
procedure MyOnTimer(Obj: TObject);
var
  curValue: Integer;
begin
  curValue:= Round(WizardForm.ProgressGauge.Position / 10);
  if (curValue >= 10) and (curValue < 19) then begin
    TTimer(Obj).Enabled:= False;
    MsgBox('Cообщение', mbError, mb_Ok);
  end;
end;

procedure InitializeWizard;
begin
  with TTimer.Create(nil) do begin
    OnTimer:= @MyOnTimer;
    Interval:= 10;
  end;
end;
 

MISHAWIN

Новичок
MISHAWIN, может лучше так, правда, отлавливание будет всего одно:
Код:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Files]
Source: {win}\help\*; DestDir: {app}\Files; Flags: external recursesubdirs;

[Code]
procedure MyOnTimer(Obj: TObject);
var
  curValue: Integer;
begin
  curValue:= Round(WizardForm.ProgressGauge.Position / 10);
  if (curValue >= 10) and (curValue < 19) then begin
    TTimer(Obj).Enabled:= False;
    MsgBox('Cообщение', mbError, mb_Ok);
  end;
end;

procedure InitializeWizard;
begin
  with TTimer.Create(nil) do begin
    OnTimer:= @MyOnTimer;
    Interval:= 10;
  end;
end;
Спасибо, но нет, хотелось бы больше одного, а нечто подобное уже предлагали.
Добавление () вроде помогло, но буду дальше смотреть.
 

Nemko

Дилетант
Модератор
MISHAWIN, надеюсь уже поняли, что если прогресс пролетит интервал 10-19%, то код не сработает . Поэтому стоит поглядывать в сторону callback'а. :D Или может убрать условие - curValue < 19?
Код:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Code]
var
  Persent10: Boolean;

procedure MyOnTimer(Obj: TObject);
var
  curValue: Integer;
begin
  curValue:= Round(WizardForm.ProgressGauge.Position / 10);
  if (curValue >= 10) and (curValue < 19) and not Persent10 then begin
    Persent10:= not Persent10;
    MsgBox('10% - 19%', mbError, mb_Ok);
  end;
end;

procedure InitializeWizard;
begin
  with TTimer.Create(nil) do begin
    OnTimer:= @MyOnTimer;
    Interval:= 10;
  end;
end;
 

MISHAWIN

Новичок
MISHAWIN, надеюсь уже поняли, что если прогресс пролетит интервал 10-19%, то код не сработает . Поэтому стоит поглядывать в сторону callback'а. :D Или может убрать условие - curValue < 19?
Код:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Code]
var
  Persent10: Boolean;

procedure MyOnTimer(Obj: TObject);
var
  curValue: Integer;
begin
  curValue:= Round(WizardForm.ProgressGauge.Position / 10);
  if (curValue >= 10) and (curValue < 19) and not Persent10 then begin
    Persent10:= not Persent10;
    MsgBox('10% - 19%', mbError, mb_Ok);
  end;
end;

procedure InitializeWizard;
begin
  with TTimer.Create(nil) do begin
    OnTimer:= @MyOnTimer;
    Interval:= 10;
  end;
end;
Да, я понимаю, но установка не быстра, шансы, что пролетит очень малы, но да, я посмотрю в сторону callback, он более надежен для этого случая.
 
Сверху