ストップウォッチをつくりたい。


message  2007-02-06 21:05:45  No: 24786

ということです。
内容的には、Button1を押したらタイマーが動き出して、もう一度押したら(もしくは別のButton)とまる。もちろんタイマーの進み具合も表示していく。
できますかねぇ?


ズバリ  2007-02-07 00:57:29  No: 24787

できます。

「どうやって作るんですか?」はNGワードね。


message  2007-02-07 04:01:47  No: 24788

申し訳ない。

自分で作ってみました。・・・が、(オブジェクトインスペクタでTimer1.interval=10に設定)
var
  a:double;

procedure TForm3.FormCreate(Sender: TObject);
begin
  a:=0;
end;

procedure TForm3.BtnStartClick(Sender: TObject);
begin
  timer1.enabled:=true;
end;

procedure TForm3.Timer1Timer(Sender: TObject);
begin
  a:=a+0.01;    //あたかも小数点第2位まで表示しているかのように
  label1.Caption:=floattostr(a);
end;

procedure TForm3.BtnStopClick(Sender: TObject);
begin
  timer1.enabled:=false;
end;

これだと・・・1秒が1秒じゃない!?(実際は15秒たっているのに、Label1.captionでは10秒もたってない・・・)

ので、Timerを2つ足して、それぞれTimer1が1の位、Timer2が10分の1の位、Timer3が100分の1の位として表示させました。が・・・

var
  a:integer;
  b,c:double;

procedure TForm3.FormCreate(Sender: TObject);
begin
  a:=0;
  b:=0;
  c:=0;
end;

procedure TForm3.BtnStartClick(Sender: TObject);
begin
  timer1.enabled:=true;
  timer2.Enabled:=true;
  timer3.Enabled:=true;
end;

procedure TForm3.Timer1Timer(Sender: TObject);
begin
  a:=a+1;
  label1.Caption:=inttostr(a);
end;

procedure TForm3.Timer2Timer(Sender: TObject);
begin
  b:=b+1;

  if b=10 then
    b:=1;

  label2.Caption:=floattostr(b);
end;

procedure TForm3.Timer3Timer(Sender: TObject);
begin
  c:=c+1;

  if c=10 then
    c:=1;

  label3.Caption:=floattostr(c);
end;

procedure TForm3.BtnStopClick(Sender: TObject);
begin
  timer1.enabled:=false;
  timer2.Enabled:=false;
  timer3.Enabled:=false;
end;

これも微妙にずれてます。ピタリになるにはどうすればよいのでしょうか。


orz  2007-02-07 05:33:31  No: 24789

まるちめでぃあたいまー・・・なんてのは?
ttp://norg1964.hp.infoseek.co.jp/delphianworld/compo/graphmul.html#GM0035


take  2007-02-07 06:37:30  No: 24790

StartTime := GetTickCount;
EndTime   := GetTickCount;
これを比較すれば?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加