Sayfayı Yazdır | Pencereyi Kapat

Renk Değiştirme

Nereden Yazdırıldığı: Clomosy | Forum
Kategori: Genel Programlama
Forum Adı: Genel İşlemler
Forum Tanımlaması: TRObject dili ile programlama yaparken karşılaşılan genel işlemler
URL: https://forum.clomosy.com.tr/forum_posts.asp?TID=595
Tarih: 08 Ocak 2025 Saat 20:12
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: Renk Değiştirme
Mesajı Yazan: emre.gungor01
Konu: Renk Değiştirme
Mesaj Tarihi: 16 Mayıs 2024 Saat 22:37
Merhabalar;

Uygulamamda dizi kullandım sadece yuvarlağın içindeki sayaçta 100'ü geçtiği zaman sürekli olarak arka plan renginin değişmesini istedim ama olmadı ne kadar araştırsam da yapamadım bana bir yol gösterebilir misiniz?

Kodlar;

Var
  AnaForm:TclForm;
  btn1 : TClProButton;
  Zaman : TCLTimer;
  sayac:Integer;
  
  oyunzaman:TCLTimer;
  sayac1:Integer;
  lblTimer: TCLLabel;
  
  testImg: TCLImage;  //random yerlerde belirli zamanda görsel çıkartıyor. //EKSURE İÇİN KULLANDIM.
  
  i:Integer;
  dizi1: array[12] of String;
  
void eksure
{
  if(IntToStr(btn1.Text)==25)
  {
  testImg.Visible=True;
  sayac1 = sayac1+5;
  }
}
void zamanlayici;
{
  sayac = sayac + 1;
  oyunzaman.Enabled=True;
  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);
  }
  
  //Dizi başlangıçı
  if(sayac > 101)
  {
    dizi1[0] = '#26cf3a';
    dizi1[1] = '#ff780a';
    dizi1[2] = '#9a7de8';
    
    for (i = 0 to Length(dizi1)-1)
    {
      AnaForm.SetFormColor(' dizi1['+ IntToStr(i) +'] = '+ dizi1);
    }
  }
}

void sure;
{
  if(sayac1 == 0)
  {
    oyunzaman.Enabled = False;
    lblTimer.caption = IntToStr(sayac1);
    //sayac1=20;  // GEREKLİ OLDUĞUNDA AÇILACAK.
    ShowMessage('Süreniz Doldu!');
    ShowMessage('Puanınız: ' + IntToStr(sayac));
    
    
  }
  else
  {
    lblTimer.caption=IntToStr(sayac1);
    Dec(sayac1);
  }
}

  
 {
   sayac=0;
   
   sayac1=35;
   
   AnaForm = TclForm.Create(Self);
   
  
  oyunzaman=AnaForm.AddNewTimer(AnaForm,'oyunzaman',1000);
  oyunzaman.Enabled=False;
  AnaForm.AddNewEvent(oyunzaman,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.
   
  AnaForm.SetImage(testImg,' https://cdn2.iconfinder.com/data/icons/chess-58/377/Time-256.png" rel="nofollow - https://cdn2.iconfinder.com/data/icons/chess-58/377/Time-256.png ');
  testImg.Align = alNone;
  testImg.Height = 30;
  testImg.Width = 30;
  testImg.Visible=False;
  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;
 
 }
   



Cevaplar:
Mesajı Yazan: Atiker01
Mesaj Tarihi: 17 Mayıs 2024 Saat 11:40
Merhaba Emre,
Yapılan örnek üzerinde dizi içerisinde renk kodları tanımlandı. Butona basıldıkça sayac değişkeni bir arttırılmaktadır ve bunun yanında if sorgusu ile eğer sayac 100'den büyük olursa sürekli olarak formun arkaplan rengi random değişmektedir. Aşağıdaki istenilen mantığa göre program yazılmıştır. Uygulamana göre yapıyı değiştirebilirsin.

var
   Form1:TclForm;
   oBtn : TclButton;
   sayac : Integer;
   RndmTimer: TClTimer;
   colorArray : array of String;
   
void randomColor;
var
  randmDeger : Integer;
{
  colorArray = ['#26cf3a','#ff780a','#9a7de8','#813b3b','#a664c4','#6492c4','#81c464'];
  randmDeger =  clMath.GenerateRandom(0,6);
  Form1.SetFormColor(colorArray[randmDeger],'',clGNone);
}
 
void sayacArttir;
{
    Inc(sayac);
    if (sayac > 100)
    {
      RndmTimer.Enabled = True;
    }
}

{
  sayac = 0;
  Form1 = TclForm.Create(Self);
  
  RndmTimer = Form1.AddNewTimer(Form1,'RndmTimer',100); 
  RndmTimer.Enabled = False;
  Form1.AddNewEvent(RndmTimer,tbeOnTimer,'randomColor');
  
  oBtn= Form1.AddNewButton(Form1,'oBtn','Başla');
  oBtn.TextSettings.Font.Size=50;
  oBtn.Align = alCenter;
  oBtn.Height = 50;
  oBtn.Width = 100;
  Form1.AddNewEvent(oBtn,tbeOnClick,'sayacArttir');
  
  Form1.Run;
}

Sürekli olarak dendiği için timer kullanılmaktadır. Eğer sadece butona tıklandığında renk değişsin istenirse timer nesnesine ihtiyaç yoktur. 

İyi çalışmalar dilerim.



Mesajı Yazan: emre.gungor01
Mesaj Tarihi: 17 Mayıs 2024 Saat 14:23
evet doğru, fakat alt tarafta bulunan 
RndmTimer.Enabled = False; kısmını true yaptığım zaman çalışıyor sadece bunun nedeni neden olabilir?
Random görsel koyduğum zamanda da aynısı olmuştu. Aynı sorunu birden çok kez yaşadım ve bunun çözümünün
ne olduğunu bilemiyorum?



Sayfayı Yazdır | Pencereyi Kapat

Forum Software by Web Wiz Forums® version 12.07 - https://www.webwizforums.com
Copyright ©2001-2024 Web Wiz Ltd. - https://www.webwiz.net