Kronometre

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Kronometre

Mesaj gönderen haydarxxx »

Arkadaşlar forumda bulduğum bir kronometre kodu var syn mmarmara hocamın şu şekilde çalışıyor.Ben kendime göre düzenleme yapmak istedim ama beceremedim.Timer1 interval değeri 20

Kod: Tümünü seç

var
  Form1: TForm1;
  Var
  xSaat    : TTime;
  xSonSaat : TDateTime;

Kod: Tümünü seç

procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text := '00:00:00,00';
end;

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.Enabled:=true;
  If Button1.Tag = 1 then
  begin
  Button1.Tag := 0;
  Button1.Caption:='Başla';
                 end
                 else begin
                        Button1.Caption:='Dur';

                       xSaat      := StrToTime(edit1.text);
                       xSonSaat   := Now() + xSaat;

                       Button1.Tag := 1;

                     end;


end;

Kod: Tümünü seç

procedure TForm1.Timer1Timer(Sender: TObject);
Var
  a,b,c,d : Word;
begin
If (Button1.Tag = 1) and ((xSonSaat - Now()) <= 0)  then begin
    DecodeTime( xSonSaat-Now(), a,b,c,d );
    Label1.Caption := Format('%.2d:%.2d:%.2d,%.2d', [a,b,c,d div 10]);

   end;
end;
sorunum şu Label1.Caption da 00:00:00,00 sayısı dönüyor buton dur konumuna geçtiğinde kronometrede duruyor fakat tekrar başla dediğimde sıfırdan alıyor ben Label1.Caption en son kalan kronometre sayısı üzerinden saymaya devam etmesini istiyorum yani Label1.Caption +Label1.Caption gibi kaldığı yerden saymasını istiyorum kodları nasıl düzenleriz yardımcı olursanız çok sevinirim.
fox
Üye
Mesajlar: 78
Kayıt: 24 Nis 2006 08:28

Mesaj gönderen fox »

Kod: Tümünü seç

procedure TForm1.Timer1Timer(Sender: TObject);
Var
  a,b,c,d : Word;
begin
If (Button1.Tag = 1) and ((xSonSaat - Now()) <= 0)  then begin
    DecodeTime( xSonSaat-Now(), a,b,c,d );
    Label1.Caption := Format('%.2d:%.2d:%.2d,%.2d', [a,b,c,d div 10]);

//////////////buraya edit1.Text:=Format('%.2d:%.2d:%.2d,%.2d', [a,b,c,d div 10]); 
//ekleyiver çünkü edit bir text 0 oluyor ve başlangıcı ondan alıyor
//bide timer on timer kısmına application.progressmessage; yazarsan windwos işlerinide bir yandan yapsın

   end;
end;
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

Fox teşekkürler ama

Var
a,b,c,d : Word;
begin
If (Button1.Tag = 1) and ((xSonSaat - Now()) <= 0) then begin
DecodeTime( xSonSaat-Now(), a,b,c,d );
Label1.Caption := Format('%.2d:%.2d:%.2d,%.2d', [a,b,c,d div 10]);

edit1.Text:=Format('%.2d:%.2d:%.2d,%.2d',[a,b,c,d div 10]);
ekledim butona tıkladığımda kronometre çalışıyor dur dediğimde kronometre duruyor faka t tekrar başla dediğimde kronometre çalışmıyor edit1 e aldığı değer üzerinden saymaya devam etmediği gibi kronometre duruyor çalışmıyor. :?

ikincisi application.progressmessage; kodlara eklediğimde progressmessage hatası alıyorum.birde burda şununa sormak istiyorum
//bide timer on timer kısmına application.progressmessage; yazarsan windwos işlerinide bir yandan yapsın
timer on timer olaylarında mutlaka application.progressmessage; kodu mutlaka kullanılmalımıdır windwos işlerinide bir yandan yapılması için ben timer kullandığımda bu kodu pek kullanmıyorum kullanmamanın ne gibi bir sakıncası olur
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Merhaba..

- Olayın özü mevcut saat ile bir kerara not edilen saat arasındaki fark alınarak elde edilen sonucu zaman bilgisi olarak ekrana yansıtıyoruz.

- İstediğin şekle dönüşmesi için aşağıdaki şekilde bir modifikasyon yapman yeterli. Yapılann değişiklik şunlar.

Eklenen satır :

Kod: Tümünü seç

  If Button1.Tag = 1 then begin
    Edit1.Text   := Label1.Caption;
ve

Değişen satır :

Kod: Tümünü seç

    xSonSaat    := Now() - xSaat;
Sonuç :

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1.Enabled :=true;
  If Button1.Tag = 1 then begin
    Edit1.Text   := Label1.Caption;
    Button1.Tag  := 0;
    Button1.Caption :='Başla';
  end else begin
    Button1.Caption:='Dur';
    xSaat       := StrToTime(Edit1.text);
    xSonSaat    := Now() - xSaat;
    Button1.Tag := 1;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.Text      := '00:00:00,00';
  Timer1.Interval := 20;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
Var
  a,b,c,d : Word;
begin
  If (Button1.Tag = 1) then begin
      DecodeTime( xSonSaat-Now(), a,b,c,d );
      Label1.Caption := Format('%.2d:%.2d:%.2d,%.2d', [a,b,c,d div 10]);
  end;
end;
Resim
Resim ....Resim
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

sy mrmarman teşekkür ederim çok sağol
aseka

Mesaj gönderen aseka »

--
En son aseka tarafından 18 Mar 2008 02:39 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

aseka çok hassas bir ölçüm yapmıyorum ama belki kullanacak arkadaşlar olabilir (Veya belki kullanırız) o yüzden nasıl bir düzenleme yapılır yazarsanız ben ve forumdaki arkadaşlara yardımcı olursunuz diye düşünüyorum.İlginiz için de ayrıca teşekkürler
Cevapla