Avatar billede esneh Nybegynder
25. september 2008 - 13:14 Der er 8 kommentarer og
1 løsning

stopur og timer

Hvordan laver jeg et stopur, hvor tiden tæller ned i en label. Skal bruge det til at holde øje med hvor langt min timer er nået i sit "Countdown".

Har søgt på google, men finder kun sider hvor jeg kan downloade stopure.
Avatar billede kroning Nybegynder
25. september 2008 - 17:41 #1
Brug en TTimer og sæt Interval til 100

Måske lidt mere forklaring?
Avatar billede esneh Nybegynder
25. september 2008 - 19:23 #2
Har lavet en TTimer, men vil gerne vise på min form via en TLabel hvor langt TTimeren er nået, hvis nu TTimeren er sat til en time, og der er gået 20 min. vil jeg gerne have min TLabel til at vise 40min.
Avatar billede kroning Nybegynder
25. september 2008 - 19:37 #3
Hvis du nu har sat den til 2 timer og der er 1½ tilbage, skal den så vise 1:30 eller 90min eller noget andet?
Avatar billede kroning Nybegynder
25. september 2008 - 19:40 #4
Der er en færdig løsning her:
http://www.eksperten.dk/spm/323474
Avatar billede esneh Nybegynder
25. september 2008 - 20:21 #5
Vil gerne have min label til at skifte, f. eks når min TTimer tæller ned fra 30 min. så skal min TLabels caption være 30, men når så min TTimer når ned på 29 min. skal min TLabels caption skifte til 29
Avatar billede kroning Nybegynder
25. september 2008 - 20:31 #6
Du svarer ikke på mit spørgsmål. Og hvad med http://www.eksperten.dk/spm/323474
Avatar billede esneh Nybegynder
25. september 2008 - 20:39 #7
vil have den til at vise 1:30.
Avatar billede hrc Mester
25. september 2008 - 21:21 #8
esneh: I Delphi har man en TDateTime. Det er et decimaltal hvor heltalsdelen er antallet af dage siden en gang i slutningen af det 19'ende århundrede. Decimaldelen er antallet af milisekunder siden kl. 0:0. Det er en genial tingest at lege med løsningen er let:

  TfrmMain = class(TForm)
    pBottom: TPanel;
    btnStart: TButton;
    btnStop: TButton;
    Timer: TTimer;
    leHours: TLabeledEdit;
    leMinutes: TLabeledEdit;
    leSeconds: TLabeledEdit;
    lStatus: TLabel;
    procedure TimerTimer(Sender: TObject);
    procedure btnStartClick(Sender: TObject);
    procedure btnStopClick(Sender: TObject);
  private
    fThreshold: TDateTime;
  public
  end;

var
  frmMain: TfrmMain;

implementation

{$R *.dfm}

uses
  DateUtils;

procedure TfrmMain.btnStartClick(Sender: TObject);
var
  h, m, s: word;
begin
  h := StrToIntDef(leHours.Text,0);
  m := StrToIntDef(leMinutes.Text,0);
  s := StrToIntDef(leSeconds.Text,0);
  fThreshold := now + EncodeTime(h,m,s,0);
  Timer.Enabled := true;
end;

procedure TfrmMain.btnStopClick(Sender: TObject);
begin
  Timer.Enabled := false;
end;

procedure TfrmMain.TimerTimer(Sender: TObject);
var
  Delta: TDateTime;
begin
  Delta := fThreshold - now;
  lStatus.Caption := TimeToStr(Delta);
  if Delta < 0 then
  begin
    Timer.Enabled := false;
    MessageDlg('Ploing!', mtInformation, [mbOK], 0);
  end;
end;
Avatar billede hrc Mester
25. september 2008 - 21:33 #9
Synes i øvrigt det link kroning har lagt, er til en dårlig løsning. Alt for megen kode og alt for mange rettelser. Ovenstående virkede straks og kan ikke gøres meget simplere.

Dog har jeg følgende justering. Det irriterede mig, at talte man ned fra 10s, startede displayet med 9 (og sluttede efter 0). Nedenstående rutine tæller ned fra 10 og det er en smagssag hvad man kan lide. Jeg foretrækker nedenstående mens vores mikrobølgeovn foretrækker den første.

procedure TfrmMain.TimerTimer(Sender: TObject);
var
  Delta: TDateTime;
begin
  Delta := fThreshold - now;
  lStatus.Caption := TimeToStr(IncSecond(Delta));
  if Delta <= 0 then
  begin
    Timer.Enabled := false;
    MessageDlg('Ploing!', mtInformation, [mbOK], 0);
  end;
end;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester