Clomosy | Forum Ana Sayfa
Forum Anasayfa Forum Anasayfa > Genel Programlama > Genel İşlemler
  Aktif Konular Aktif Konular RSS - TclTimer
  SSS SSS  Forumu Ara   Etkinlikler   Kayıt Ol Kayıt Ol  Giriş Giriş

Clomosy Resmi Forum Sitesidir. Amacımız kullanıcılarımıza, iş ortaklarımıza, danışmanlara, yazılımcılara programlarımız hakkında destek ve bilgi vermektir.

TclTimer

 Yanıt Yaz Yanıt Yaz
Yazar
Mesaj
  Konu Arama Konu Arama  Topic Seçenekleri Topic Seçenekleri
emre.gungor01 Açılır Kutu İzle
Deneyimli Üye
Deneyimli Üye


Kayıt Tarihi: 03 Mayıs 2024
Konum: Konya
Durum: Aktif Değil
Puanlar: 46
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı emre.gungor01 Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: TclTimer
    Gönderim Zamanı: 11 Mayıs 2024 Saat 18:33
Merhabalar;
Projemde süre ekledim fakat sürenin butona tıklandığında başlamasını istiyorum. Buton ile süreyi birbirine bağlayamadım bir türlü
Kodlar;
Var
  AnaForm:TclForm;
  btn1 : TClProButton;
  Zaman : TCLTimer;
  sayac:Integer;
  
  Zaman2:TCLTimer;
  sayac1:Integer;
  lblTimer: TCLLabel;
  
void zamanlayici;
{
  if(sayac == sayac)
  {
  sayac = sayac + 1;
  Zaman.Enabled = False;
  btn1.Text = IntToStr(sayac);
  if(sayac == 25)
  {
  ShowMessage('Süre doldu!');
  }
  }
  else
  {
  btn1.Text = IntToStr(sayac);
  sayac = sayac + 1;
  }
}

void sure;
{
  if(sayac1 == 0)
  {
    Zaman2.Enabled=False;
    lblTimer.caption = IntToStr(sayac1);
    ShowMessage('Süreniz Doldu!');
    if(btn1 == 1)
    {
      lblTimer.caption=IntToStr(sayac1);
    Dec(sayac1);
    }
  }
  else
  {
    lblTimer.caption=IntToStr(sayac1);
    Dec(sayac1);
  }
}

 {
   sayac=0;
   
   sayac1=20;
   
   AnaForm = TclForm.Create(Self);
   
  Zaman= AnaForm.AddNewTimer(AnaForm,'',1000);
  Zaman.Enabled = True;
  AnaForm.AddNewEvent(Zaman,tbeOnTimer,'zamanlayici');
  
  
  Zaman2=AnaForm.AddNewTimer(AnaForm,'GetTimer',1000);
  Zaman2.Enabled=True;
  AnaForm.AddNewEvent(Zaman2,tbeOnTimer,'sure');
  
  lblTimer=AnaForm.AddNewLabel(AnaForm,'lblTimer','');
  lblTimer.StyledSettings = ssFamily;
  lblTimer.TextSettings.Font.Size = 35;
  lblTimer.Align = alTop;
  lblTimer.Height=50;
  lblTimer.Width=50;
  
 
   AnaForm.SetFormColor('#52504d','',clGNone); 
   btn1 = AnaForm.AddNewProButton(AnaForm,'btn1','SAYAC');
   btn1.Align = alCenter;
   btn1.Width = 100;
   btn1.Height = 100;
   btn1.clProSettings.BorderColor = clAlphaColor.clHexToColor('#a0a3b1');
   btn1.clProSettings.FontColor = clAlphaColor.clHexToColor('#050505');
   btn1.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#ffffff');
   btn1.clProSettings.IsTransparent = False;
   btn1.clProSettings.FontSize = 12;
   btn1.clProSettings.FontVertAlign = palcenter;//palLeading , palCenter , palTrailing
   btn1.clProSettings.FontHorzAlign = palCenter;
   btn1.clProSettings.IsFill = True; 
   btn1.clProSettings.IsRound = True;
   btn1.clProSettings.RoundHeight = 50;
   btn1.clProSettings.RoundWidth = 50;
   btn1.clProSettings.BorderWidth = 3;
   btn1.SetclProSettings(btn1.clProSettings);

   AnaForm.AddNewEvent(btn1,tbeOnClick,'zamanlayici');
   AnaForm.AddNewEvent(zamanlayici,tbeOnClick,'sure');
   AnaForm.Run;
 
 }
Yukarı Dön
Atiker01 Açılır Kutu İzle
Forum Yöneticisi
Forum Yöneticisi


Kayıt Tarihi: 26 Temmuz 2023
Durum: Aktif Değil
Puanlar: 92
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Atiker01 Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 13 Mayıs 2024 Saat 09:19
Merhaba Emre,

öncelikle kodunu çalıştırdığında hatayı görmüşsündür. 
En son tanımladığın Event yanlış bir tanımlama. Event içerisine ilk parametre bir nesneyi temsil etmeli sen bir procedure(void) bağlamışsın, o satırdaki hatanı düzeltmelisin.
Hata satırı: AnaForm.AddNewEvent(zamanlayici,tbeOnClick,'sure');

2. olarak butona tıklandığında zamanlayıcı çalışsın istiyorsan zamanlayıcıyı uygulama açıldığı anda etkinleştirme, butona tıklandığında zamanlayıcıyı etkinleştirmelisin. 
Kod satırı:  Zaman.Enabled = True;
Yukarı Dön
emre.gungor01 Açılır Kutu İzle
Deneyimli Üye
Deneyimli Üye


Kayıt Tarihi: 03 Mayıs 2024
Konum: Konya
Durum: Aktif Değil
Puanlar: 46
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı emre.gungor01 Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 13 Mayıs 2024 Saat 10:31
evet event kısmını bunu attıktan sonra düzenledim. 2. olarak enabled kısımlarına baktığımda Zaman.Enabled = True; kısımlarına teker teker baktım fakat kimisinde zaman görünüyor kimisinde butona basmasam bile belirli bir süre sonra kendisi başladığı için zamanda otomatikmen başladığını farkettim. Acaba event kısmında mı hata yapıyorum. Clomosy Kitapta baktığımda enabled kısmı false olarak yazıyor fakat ben yaptığımda olmuyor veya işlev görmüyor.
Yukarı Dön
Atiker01 Açılır Kutu İzle
Forum Yöneticisi
Forum Yöneticisi


Kayıt Tarihi: 26 Temmuz 2023
Durum: Aktif Değil
Puanlar: 92
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Atiker01 Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 13 Mayıs 2024 Saat 13:26
Merhaba Emre,

butona basmadan zaman ilerlemesinin sebebi başka bir zamanlayıcının açık olması ve bunu aktifleştirmen. Kodunu şu şekilde değiştirmelisin. Öncelikle 2 tane zamanlayıcıya ihtiyacın yok. Zaman2 adındaki değişkenini silebilirsin. Buna bağlı prosedürün (void) doğru mantıkta çalışıyor. Bunu Zaman adındaki zamanlayıcı nesnesine bağlayabilirsin.

İkinci olarak butona bastığında zamanlayıcın aktifleşiyor ve doğru şekilde ilerliyor fakat zamanlayici void yapındaki algoritmik mantık istediğin mantıkla uyuşmuyor, hatalı. 
Aşağıda kodunu alıntıladım ve yorum satırına sorunu yazdım.

void zamanlayici;
{
  if(sayac == sayac) //sayac değişkeni her zaman kendisine eşit olacağı için bu if'e her zaman girecektir ve içerisinde zamanlayıcı durduracaktır. Yani zamanlayıcın aktifleşip bir kez çalışıp duracak.
  {
  sayac = sayac + 1;
  Zaman.Enabled = False;
  btn1.Text = IntToStr(sayac);
  if(sayac == 25)
  {
  ShowMessage('Süre doldu!');
  }
  }
  else
  {
  btn1.Text = IntToStr(sayac);
  sayac = sayac + 1;
  }
}


Düzenlenmiş hali:

Var
  AnaForm:TclForm;
  btn1 : TClProButton;
  Zaman : TCLTimer;
  sayac1:Integer;
  lblTimer: TCLLabel;
  
void BtnOnClick;
{
  Zaman.Enabled = True;
  ShowMessage('girdim');
}

void sure;
{
  if(sayac1 == 0)
  {
    Zaman.Enabled=False;
    lblTimer.caption = IntToStr(sayac1);
    ShowMessage('Süreniz Doldu!');
    /*
    if(btn1 == 1) //btn1 nesnesi içerisindeki değeri almak istiyorsan IntToStr(btn1.Text) == 1 yazmalısın.
    {
      lblTimer.caption=IntToStr(sayac1);
    Dec(sayac1);
    } */
  }
  else
  {
    lblTimer.caption=IntToStr(sayac1);
    Dec(sayac1);
  }
}

 {
   
   sayac1=20;
   
   AnaForm = TclForm.Create(Self);
   
  Zaman= AnaForm.AddNewTimer(AnaForm,'Zaman',1000);
  AnaForm.AddNewEvent(Zaman,tbeOnTimer,'sure');
  
  
  lblTimer=AnaForm.AddNewLabel(AnaForm,'lblTimer','');
  lblTimer.StyledSettings = ssFamily;
  lblTimer.TextSettings.Font.Size = 35;
  lblTimer.Align = alTop;
  lblTimer.Height=50;
  lblTimer.Width=50;
  
 
   AnaForm.SetFormColor('#52504d','',clGNone); 
   btn1 = AnaForm.AddNewProButton(AnaForm,'btn1','SAYAC');
   btn1.Align = alCenter;
   btn1.Width = 100;
   btn1.Height = 100;
   btn1.clProSettings.BorderColor = clAlphaColor.clHexToColor('#a0a3b1');
   btn1.clProSettings.FontColor = clAlphaColor.clHexToColor('#050505');
   btn1.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#ffffff');
   btn1.clProSettings.IsTransparent = False;
   btn1.clProSettings.FontSize = 12;
   btn1.clProSettings.FontVertAlign = palcenter;//palLeading , palCenter , palTrailing
   btn1.clProSettings.FontHorzAlign = palCenter;
   btn1.clProSettings.IsFill = True; 
   btn1.clProSettings.IsRound = True;
   btn1.clProSettings.RoundHeight = 50;
   btn1.clProSettings.RoundWidth = 50;
   btn1.clProSettings.BorderWidth = 3;
   btn1.SetclProSettings(btn1.clProSettings);

   AnaForm.AddNewEvent(btn1,tbeOnClick,'BtnOnClick');
   AnaForm.Run;
 
 }

Sorunun çözüme ulaşıp ulaşmadığı ile ilgili geri dönüşünü bekliyorum.
İyi çalışmalar diliyorum.


Düzenleyen Atiker01 - 13 Mayıs 2024 Saat 13:27
Yukarı Dön
emre.gungor01 Açılır Kutu İzle
Deneyimli Üye
Deneyimli Üye


Kayıt Tarihi: 03 Mayıs 2024
Konum: Konya
Durum: Aktif Değil
Puanlar: 46
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı emre.gungor01 Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 13 Mayıs 2024 Saat 22:58
Denedim fakat tam olarak çalışmıyor bu sefer butonda tıklanma olayı çok geç oluyor benim istediğim butona anında tıklanması ve başlangıçta ben tıklayana kadar başlamamasıydı. 2 sürede yapmamın sebebi yuvarlağın içindeki label zamanlayici yani her bastığımda arttırıyor sayıyı sure ise yukarıda 20 den geriye doğru sayan süremiz şimdi burada ki koduda denediğimde yuvarlağın içindeki zamanlayiciyi etkiliyor. Acaba 3.bir event olayı açıp BtnOnClick özelliğini btn1 eventıyla birleştirmek mantıklı mı?
Yukarı Dön
Atiker01 Açılır Kutu İzle
Forum Yöneticisi
Forum Yöneticisi


Kayıt Tarihi: 26 Temmuz 2023
Durum: Aktif Değil
Puanlar: 92
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (1) Teşekkürler(1)   Alıntı Atiker01 Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 14 Mayıs 2024 Saat 11:42
Merhaba Emre,
istediğin durum şu şekilde ise;
Uygulama içerisinde 2 adet zamanlayıcı bulunmaktadır. Biri oyun zamanı ve diğeri buton zamanı olarak tanımlandı.
Uygulamada değişken adı olarak;
Oyun zamanlayıcısı => oyunZamani
Buton zamanlayıcısı => butonZamani
Uygulama açıldığı anda oyunZamani zamanlayıcısı başlasın ve butonZamani zamanlayıcısı ise butona tıklandığı anda çalışması için;

Buton Event için => void bAktiflestir
oyunZamani Event için => void oZamanlayici
butonZamani Event için => void bZamanlayici

oluşturuldu.
Uygulama açıldığı anda oZamanlayici void yapısı çalışmaktadır. Burada ise sayac 20 değerine gelene kadar geri sayım yapmaktadır.
Butona tıklandığında bAktiflestir void içerisine butonZamani zamanlayıcısı aktifleştirilmektedir.
Aktifleşen butonZamani zamanlayıcısı ise bZamanlayici void yapısı çalışmaktadır. Burada ise buton üzerindeki metin içerisine çalışan zamanlayıcı için oluşturulan butonSayac değişkeni arttırılarak yazılmaktadır.

Uygulama içerisindeki zamanlayıcılar oyun süresi bittiğinde durmaktadır ya da butonSayac değişkeni 10 sayısına geldiğinde butonZamani zamanlayıcısı durmaktadır. Butona tıklanırsa tekrardan başlar. 
Kodları aşağıda yer alıyor. Burada yapıyı istediğin gibi değiştirebilirsin.

Var
  AnaForm:TclForm;
  btn1 : TClProButton;
  butonZamani : TCLTimer;
  butonSayac:Integer;
  
  oyunZamani:TCLTimer;
  oyunSayac:Integer;
  lblTimer: TCLLabel;

void bAktiflestir;
{
  butonZamani.Enabled = True;
}
void bZamanlayici;
{
  if(butonSayac == 10) //25
  {
    butonZamani.Enabled = False;
    btn1.Text = IntToStr(butonSayac);
    butonSayac = 0;
    ShowMessage('Buton süresi doldu. Bu kısımda istediğin yöntemi uygulamalısın.');
    
  }
  else
  {
    btn1.Text = IntToStr(butonSayac);
    Inc(butonSayac);
  }
}

void oZamanlayici;
{
  if(oyunSayac == 0)
  {
    oyunZamani.Enabled=False;
    butonZamani.Enabled = False; //oyun süresi durduğunda buton zamanlayıcısıda dursun
    lblTimer.caption = IntToStr(oyunSayac);
    ShowMessage('Süreniz Doldu!');
    /*
    if(btn1 == 1)
    {
      lblTimer.caption=IntToStr(oyunSayac);
    Dec(oyunSayac);
    }*/
  }
  else
  {
    lblTimer.caption=IntToStr(oyunSayac);
    Dec(oyunSayac);
  }
}

 {
   butonSayac=0;
   oyunSayac=20;
   
  AnaForm = TclForm.Create(Self);
   
  butonZamani= AnaForm.AddNewTimer(AnaForm,'',1000);
  butonZamani.Enabled = False;
  AnaForm.AddNewEvent(butonZamani,tbeOnTimer,'bZamanlayici');
  
  oyunZamani=AnaForm.AddNewTimer(AnaForm,'GetTimer',1000);
  oyunZamani.Enabled=True;
  AnaForm.AddNewEvent(oyunZamani,tbeOnTimer,'oZamanlayici');
  
  lblTimer=AnaForm.AddNewLabel(AnaForm,'lblTimer','');
  lblTimer.StyledSettings = ssFamily;
  lblTimer.TextSettings.Font.Size = 35;
  lblTimer.Align = alTop;
  lblTimer.Height=50;
  lblTimer.Width=50;
  
 
   AnaForm.SetFormColor('#52504d','',clGNone); 
   btn1 = AnaForm.AddNewProButton(AnaForm,'btn1','butonSayac');
   btn1.Align = alCenter;
   btn1.Width = 100;
   btn1.Height = 100;
   btn1.clProSettings.BorderColor = clAlphaColor.clHexToColor('#a0a3b1');
   btn1.clProSettings.FontColor = clAlphaColor.clHexToColor('#050505');
   btn1.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#ffffff');
   btn1.clProSettings.IsTransparent = False;
   btn1.clProSettings.FontSize = 12;
   btn1.clProSettings.FontVertAlign = palcenter;//palLeading , palCenter , palTrailing
   btn1.clProSettings.FontHorzAlign = palCenter;
   btn1.clProSettings.IsFill = True; 
   btn1.clProSettings.IsRound = True;
   btn1.clProSettings.RoundHeight = 50;
   btn1.clProSettings.RoundWidth = 50;
   btn1.clProSettings.BorderWidth = 3;
   btn1.SetclProSettings(btn1.clProSettings);

   AnaForm.AddNewEvent(btn1,tbeOnClick,'bAktiflestir');
   AnaForm.Run;
 
 }

Sorunun çözüme ulaşıp ulaşmadığı ile ilgili geri dönüşünü bekliyorum.
İyi çalışmalar diliyorum.




Yukarı Dön
emre.gungor01 Açılır Kutu İzle
Deneyimli Üye
Deneyimli Üye


Kayıt Tarihi: 03 Mayıs 2024
Konum: Konya
Durum: Aktif Değil
Puanlar: 46
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı emre.gungor01 Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 15 Mayıs 2024 Saat 18:31
Hocamızla konuştuğumda kendisi zamanlayıcı hakkında düzeltme yapacaktı.

Kodlar;

Var
  AnaForm:TclForm;
  btn1 : TClProButton;
  Zaman : TCLTimer;
  sayac:Integer;
  
  Zaman2:TCLTimer;
  sayac1:Integer;
  lblTimer: TCLLabel;
  
  testImg: TCLImage;  //random yerlerde belirli zamanda görsel çıkartıyor.
  
void zamanlayici;
{
  if(sayac == sayac)
  {
  sayac = sayac + 1;
  Zaman.Enabled = False;  //burda yuvarlağın içindeki yazıyı çift arttırıyor.
  btn1.Text = IntToStr(sayac);
  
  if(sayac == 25)
  {
    AnaForm.SetFormColor('#23c7c5','',clGNone);
    sayac1 = sayac1 + 3;
    btn1.Position.X = Abs((Random() * AnaForm.clWidth) - btn1.Width);
    btn1.Position.Y = Abs((Random() * AnaForm.clHeight) - btn1.Height);
    testImg.Position.X = Abs((Random() * AnaForm.clWidth) - testImg.Width);
    testImg.Position.Y = Abs((Random() * AnaForm.clHeight) - testImg.Height);
  }
  
  if(sayac == 72)
  {
    AnaForm.SetFormColor('#e01f1f','',clGNone);
    sayac1 = sayac1 + 5;
    btn1.Position.X = Abs((Random() * AnaForm.clWidth) - btn1.Width);
    btn1.Position.Y = Abs((Random() * AnaForm.clHeight) - btn1.Height);
  }
  
  if(sayac == 100)
  {
    AnaForm.SetFormColor('#cfeb00','#db7edd',clGHorizontal);
    sayac1 = sayac1 + 7;
    btn1.Position.X = Abs((Random() * AnaForm.clWidth) - btn1.Width);
    btn1.Position.Y = Abs((Random() * AnaForm.clHeight) - btn1.Height);
  }
  }
  else
  {
  btn1.Text = IntToStr(sayac);
  sayac = sayac + 1;
  }
}

void sure;
{
  if(sayac1 == 0)
  {
    Zaman2.Enabled = False;  // sürekli ekranda gösteriyor. False olacak.
    lblTimer.caption = IntToStr(sayac1);
    ShowMessage('Süreniz Doldu!');
    ShowMessage('Puanınız: ' + IntToStr(sayac));
    
    if(sayac1 == 1)
    {
    Zaman2.Enabled= True;   //burda hiç bir şey olmuyor.
    lblTimer.caption = IntToStr(sayac1);
    }
  }
  else
  {
    lblTimer.caption=IntToStr(sayac1);
    Dec(sayac1);
  }
}

void eksure
{
  if(sayac==25)
  {
    testImg.Visible=True;
  }
  else
  sayac1 = sayac1+5;
  testImg.Visible=False;
}
  
 {
   sayac=0;
   
   sayac1=20;
   
   AnaForm = TclForm.Create(Self);
   
  Zaman= AnaForm.AddNewTimer(AnaForm,'Zaman',1000);
  Zaman.Enabled = True;  // burda da hiçbir işlev görünmüyor.
  AnaForm.AddNewEvent(Zaman,tbeOnTimer,'zamanlayici');
  
  
  Zaman2=AnaForm.AddNewTimer(AnaForm,'Zaman2',1000);
  Zaman2.Enabled=True;  // görünür yapıyor.
  AnaForm.AddNewEvent(Zaman2,tbeOnTimer,'sure');
  
  lblTimer=AnaForm.AddNewLabel(AnaForm,'lblTimer','');
  lblTimer.StyledSettings = ssFamily;
  lblTimer.TextSettings.Font.Size = 35;
  lblTimer.Align = alTop;
  lblTimer.Height=50;
  lblTimer.Width=50;
  lblTimer.Margins.Left = 170;
  
  
  
   AnaForm.SetFormColor('#52504d','',clGNone); 
   btn1 = AnaForm.AddNewProButton(AnaForm,'btn1','SAYAC');
   testImg = AnaForm.AddNewImage(AnaForm,'testImg');
  
   btn1.Align = alNone; //Böyle yaparak butonu sabitlemiş oluyorum.
   btn1.Width = 100;
   btn1.Height = 100;
   btn1.Position.X = (AnaForm.clWidth / 2) - (btn1.Width / 2);  //konum1.
   btn1.Position.Y = (AnaForm.clHeight / 2) - (btn1.Width / 2); // konum2.
   
  testImg.Align = alNone;
  testImg.Height = 30;
  testImg.Width = 30;
  testImg.Position.X = (AnaForm.clWidth / 2) - (testImg.Width / 2);  //testImg konum1.
  testImg.Position.Y = (AnaForm.clHeight / 2) - (testImg.Width / 2); //testImg konum2.
   
   btn1.clProSettings.BorderColor = clAlphaColor.clHexToColor('#a0a3b1');
   btn1.clProSettings.FontColor = clAlphaColor.clHexToColor('#050505');
   btn1.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#ffffff');
   btn1.clProSettings.IsTransparent = False;
   btn1.clProSettings.FontSize = 12;
   btn1.clProSettings.FontVertAlign = palcenter;//palLeading , palCenter , palTrailing
   btn1.clProSettings.FontHorzAlign = palCenter;
   btn1.clProSettings.IsFill = True; 
   btn1.clProSettings.IsRound = True;
   btn1.clProSettings.RoundHeight = 50;
   btn1.clProSettings.RoundWidth = 50;
   btn1.clProSettings.BorderWidth = 3;
   btn1.SetclProSettings(btn1.clProSettings);
   
   
   AnaForm.AddNewEvent(btn1,tbeOnClick,'zamanlayici');
   AnaForm.AddNewEvent(testImg,tbeOnClick,'eksure');
   
  
   AnaForm.Run;
 
 }
Yukarı Dön
cagataycantay Açılır Kutu İzle
Yeni Üye
Yeni Üye
Simge

Kayıt Tarihi: 16 Mayıs 2024
Konum: Adana
Durum: Aktif Değil
Puanlar: 54
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı cagataycantay Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 16 Mayıs 2024 Saat 11:52
Sorunuza cevap verebilmemiz için yaşadığınız problemi doğrudan burada açıklayabilir misiniz?
Yukarı Dön
emre.gungor01 Açılır Kutu İzle
Deneyimli Üye
Deneyimli Üye


Kayıt Tarihi: 03 Mayıs 2024
Konum: Konya
Durum: Aktif Değil
Puanlar: 46
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı emre.gungor01 Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 16 Mayıs 2024 Saat 11:56
Projemde ortadaki yuvarlağa bastığımda üst tarafta bulunan zamanında çalışmasını istiyordum. Ben ortadaki yuvarlağa basmadığım sürece sayacında başlamasını istemiyorum.
Yukarı Dön
cagataycantay Açılır Kutu İzle
Yeni Üye
Yeni Üye
Simge

Kayıt Tarihi: 16 Mayıs 2024
Konum: Adana
Durum: Aktif Değil
Puanlar: 54
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı cagataycantay Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 16 Mayıs 2024 Saat 13:13
Kodunuzu incelediğimde 2. timer a gerek olmadığından dolayı onu kaldırdım, diğer kullanacağımız timer ı buton un event inde true yaparak butona basıldığında başlamasını sağladım. 

Düzenlenmiş Hali:

Var
  AnaForm:TclForm;
  btn1 : TClProButton;
  sayac:Integer;
  
  zaman:TCLTimer;
  sayac1:Integer;
  lblTimer: TCLLabel;
  
  testImg: TCLImage;  
  
void zamanlayici;
{
  if(sayac == sayac)
  {
  sayac = sayac + 1;
  zaman.Enabled = True;    //Timerı butona basıldığında başlatıyoruz.  
  btn1.Text = IntToStr(sayac);
  
  if(sayac == 25)
  {
    AnaForm.SetFormColor('#23c7c5','',clGNone);
    sayac1 = sayac1 + 3;
    btn1.Position.X = Abs((Random() * AnaForm.clWidth) - btn1.Width);
    btn1.Position.Y = Abs((Random() * AnaForm.clHeight) - btn1.Height);
    testImg.Position.X = Abs((Random() * AnaForm.clWidth) - testImg.Width);
    testImg.Position.Y = Abs((Random() * AnaForm.clHeight) - testImg.Height);
  }
  
  if(sayac == 72)
  {
    AnaForm.SetFormColor('#e01f1f','',clGNone);
    sayac1 = sayac1 + 5;
    btn1.Position.X = Abs((Random() * AnaForm.clWidth) - btn1.Width);
    btn1.Position.Y = Abs((Random() * AnaForm.clHeight) - btn1.Height);
  }
  
  if(sayac == 100)
  {
    AnaForm.SetFormColor('#cfeb00','#db7edd',clGHorizontal);
    sayac1 = sayac1 + 7;
    btn1.Position.X = Abs((Random() * AnaForm.clWidth) - btn1.Width);
    btn1.Position.Y = Abs((Random() * AnaForm.clHeight) - btn1.Height);
  }
  }
  else
  {
  btn1.Text = IntToStr(sayac);
  sayac = sayac + 1;
  }
}

void sure;
{
  if(sayac1 == 0)
  {
    zaman.Enabled = False;  // sürekli ekranda gösteriyor. False olacak.
    lblTimer.caption = IntToStr(sayac1);
    ShowMessage('Süreniz Doldu!');
    ShowMessage('Puanınız: ' + IntToStr(sayac));
    
    if(sayac1 == 1)
    {
    zaman.Enabled= True;   //burda hiç bir şey olmuyor.
    lblTimer.caption = IntToStr(sayac1);
    }
  }
  else
  {
    lblTimer.caption=IntToStr(sayac1);
    Dec(sayac1);
  }
}

void eksure
{
  if(sayac==25)
  {
    testImg.Visible=True;
  }
  else
  sayac1 = sayac1+5;
  testImg.Visible=False;
}
  
 {
   sayac=0;
   
   sayac1=20;
   
   AnaForm = TclForm.Create(Self);
   
  Zaman=AnaForm.AddNewTimer(AnaForm,'zaman',1000);
  Zaman.Enabled=False; 
  AnaForm.AddNewEvent(zaman,tbeOnTimer,'sure');
  
  lblTimer=AnaForm.AddNewLabel(AnaForm,'lblTimer','');
  lblTimer.StyledSettings = ssFamily;
  lblTimer.TextSettings.Font.Size = 35;
  lblTimer.Align = alTop;
  lblTimer.Height=50;
  lblTimer.Width=50;
  lblTimer.Margins.Left = 170;
  
  
  
   AnaForm.SetFormColor('#52504d','',clGNone); 
   btn1 = AnaForm.AddNewProButton(AnaForm,'btn1','SAYAC');
   testImg = AnaForm.AddNewImage(AnaForm,'testImg');
  
   btn1.Align = alNone; //Böyle yaparak butonu sabitlemiş oluyorum.
   btn1.Width = 100;
   btn1.Height = 100;
   btn1.Position.X = (AnaForm.clWidth / 2) - (btn1.Width / 2);  //konum1.
   btn1.Position.Y = (AnaForm.clHeight / 2) - (btn1.Width / 2); // konum2.
   
  testImg.Align = alNone;
  testImg.Height = 30;
  testImg.Width = 30;
  testImg.Position.X = (AnaForm.clWidth / 2) - (testImg.Width / 2);  //testImg konum1.
  testImg.Position.Y = (AnaForm.clHeight / 2) - (testImg.Width / 2); //testImg konum2.
   
   btn1.clProSettings.BorderColor = clAlphaColor.clHexToColor('#a0a3b1');
   btn1.clProSettings.FontColor = clAlphaColor.clHexToColor('#050505');
   btn1.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#ffffff');
   btn1.clProSettings.IsTransparent = False;
   btn1.clProSettings.FontSize = 12;
   btn1.clProSettings.FontVertAlign = palcenter;//palLeading , palCenter , palTrailing
   btn1.clProSettings.FontHorzAlign = palCenter;
   btn1.clProSettings.IsFill = True; 
   btn1.clProSettings.IsRound = True;
   btn1.clProSettings.RoundHeight = 50;
   btn1.clProSettings.RoundWidth = 50;
   btn1.clProSettings.BorderWidth = 3;
   btn1.SetclProSettings(btn1.clProSettings);
   
   
   AnaForm.AddNewEvent(btn1,tbeOnClick,'zamanlayici');
   AnaForm.AddNewEvent(testImg,tbeOnClick,'eksure');
   
  
   AnaForm.Run;
 
 }
Yukarı Dön
 Yanıt Yaz Yanıt Yaz

Forum Atla Forum İzinleri Açılır Kutu İzle

Forum Software by Web Wiz Forums® version 12.07
Copyright ©2001-2024 Web Wiz Ltd.

Bu Sayfa 0,047 Saniyede Yüklendi.