Sayfayı Yazdır | Pencereyi Kapat

Değişen soru paneli

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=1153
Tarih: 01 Ağustos 2025 Saat 05:58
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: Değişen soru paneli
Mesajı Yazan: mrvbzdn
Konu: Değişen soru paneli
Mesaj Tarihi: 30 Temmuz 2025 Saat 13:04
Merhaba,
Soru ve seçeneklerden oluşan bir sayfa oluşturuyorum. Soru cevaplandıktan sonra diğer soruya geçilecek, seçenekler sabit kalacak şekilde yapmak istiyorum. Sorularımı yazdığım kısımda sürekli hata alıyorum. Yardımcı olabilir misiniz?

  var
  Form1: TclForm;
  SkorLbl, BaslikLbl, SureLbl: TClProLabel;
  SoruLbl: TClProLabel;
  MetalBtn, YmetalBtn, AmetalBtn, SoygazBtn: TClProButton;
  Timer, SureTimer: TClTimer;
  Skor, HataSayisi, KalanSure: Integer;
  Grup: String;
  SurePnl, SureIcPnl: TClProPanel;



void SureGuncelle;
{
  KalanSure = KalanSure - 1;
  SureLbl.Text = 'Kalan Sure: ' + IntToStr(KalanSure) + ' sn';
  
  // Panel genişliğini süreye göre güncelle
  SureIcPnl.Width = (KalanSure * SurePnl.Width) div 60;
  
  if (KalanSure <= 10) {
    // Son 10 saniye kırmızı renk
    SureLbl.ClProSettings.FontColor = ClAlphaColor.ClHextoColor('#ff0000');
    SureLbl.SetclProSettings(SureLbl.ClProSettings);
    SureIcPnl.ClProSettings.BackgroundColor = ClAlphaColor.ClHextoColor('#ff0000');
    SureIcPnl.SetclProSettings(SureIcPnl.ClProSettings);
  }
  
  if (KalanSure <= 0) {
    ShowMessage('Sure Doldu! Toplam Puan: ' + IntToStr(Skor));
    SureTimer.Enabled = False;
  }
}

void YeniAtik;
var 
  RastgeleSayi: Integer;
{
  RastgeleSayi = Random(4);
  
  if (RastgeleSayi == 0) {
    Grup = 'Ametal';
    Form1.SoruLbl.Text (SoruLbl, '18. grupta, renksiz, kokusuz, inert (tepkimeye girmeyen) bir gazdır. Hangi gruptadır?');
  } else if (RastgeleSayi == 1) {
    Grup = 'Yarı Metal';
    Form1.SoruLbl.Text (SoruLbl, '16. grupta bulunur, sarı renkli katı, kötü iletken ve kokulu bir elementtir. Hangi gruptadır?');
  } else if (RastgeleSayi == 2) {
    Grup = 'Soygaz';
    Form1.SoruLbl.Text (SoruLbl, 'Elektrik ve ısı iletkenliği yüksektir, 11. grupta bulunur. Hangi gruba aittir?');
  } else {
    Grup = 'Metal';
    Form1.SoruLbl.Text (SoruLbl, '15. grupta yarı iletken özellikleri gösterir, hem metal hem ametal özellikler taşır. Hangi gruba girer?');
  }
  SoruLbl.Visible = True;
}

void KontrolEt;
var
  SecilenKutu: String;
{
  SecilenKutu = TClProButton(Form1.ClSender).ClTagStr;
  
  if (SecilenKutu == AtikTipi) {
    Skor = Skor + 10;
    ShowMessage('Dogru! +10 puan');
  } else {
    HataSayisi = HataSayisi + 1;
    ShowMessage('Yanlis! Dogru kutu: ' + AtikTipi);
    if (HataSayisi >= 3) {
      ShowMessage('Oyun Bitti! Toplam Puan: ' + IntToStr(Skor));
      SureTimer.Enabled = False;
      Exit;
    }
  }
  
  SkorLbl.Text = 'Skor: ' + IntToStr(Skor) + ' Hata: ' + IntToStr(HataSayisi);
  YeniAtik;
}

{
  Form1 = TclForm.Create(self);
  Form1.SetFormColor('#e8f5e9', '#81c784', clGVertical);
  
  BaslikLbl = Form1.AddNewProLabel(Form1, 'BaslikLbl', 'ELEMENTLERİ SINIFLANDIRALIM');
  BaslikLbl.Align = alTop;
  BaslikLbl.Height = 50;
  BaslikLbl.ClProSettings.FontSize = 24;
  BaslikLbl.ClProSettings.FontColor = ClAlphaColor.ClHextoColor('#1b5e20');
  
  BaslikLbl.ClProSettings.FontHorzAlign = palCenter;
  BaslikLbl.SetclProSettings(BaslikLbl.ClProSettings);
  
  SureLbl = Form1.AddNewProLabel(Form1, 'SureLbl', 'Kalan Sure: 60 sn');
  SureLbl.Align = alTop;
  SureLbl.Height = 30;
  SureLbl.ClProSettings.FontSize = 18;
  SureLbl.ClProSettings.FontHorzAlign = palCenter;
  SureLbl.SetclProSettings(SureLbl.ClProSettings);
  
  SurePnl = Form1.AddNewProPanel(Form1, 'SurePnl');
  SurePnl.Align = alTop;
  SurePnl.Height = 10;
  SurePnl.Margins.Left = 20;
  SurePnl.Margins.Right = 20;
  SurePnl.ClProSettings.BackgroundColor = ClAlphaColor.ClHextoColor('#e0e0e0');
  SurePnl.SetclProSettings(SurePnl.ClProSettings);
  
  SureIcPnl = Form1.AddNewProPanel(SurePnl, 'SureIcPnl');
  SureIcPnl.Align = alLeft;
  SureIcPnl.Width = SurePnl.Width;
  SureIcPnl.Height = 10;
  SureIcPnl.ClProSettings.BackgroundColor = ClAlphaColor.ClHextoColor('#4caf50');
  SureIcPnl.SetclProSettings(SureIcPnl.ClProSettings);
  
  SkorLbl = Form1.AddNewProLabel(Form1, 'SkorLbl', 'Skor: 0 Hata: 0');
  SkorLbl.Align = alTop;
  SkorLbl.Height = 30;
  SkorLbl.ClProSettings.FontSize = 18;
  SkorLbl.ClProSettings.FontHorzAlign = palCenter;
  SkorLbl.SetclProSettings(SkorLbl.ClProSettings);
  
  SoruLbl = Form1.AddNewProLabel(Form1, 'SoruLbl');
  SoruLbl.Align = alTop;
  SoruLbl.Margins.Top = 20;
  SoruLbl.Width = 150;
  SoruLbl.Height = 150;
  SoruLbl.ClProSettings.PictureAutoFit = True;
  SoruLbl.SetclProSettings(SoruLbl.ClProSettings);
  
  YmetalBtn = Form1.AddNewProButton(Form1, 'YmetalBtn', 'Yarı Metal');
  YmetalBtn.Align = alBottom;
  YmetalBtn.Height = 60;
  YmetalBtn.Margins.Bottom = 10;
  YmetalBtn.ClProSettings.FontSize = 18;
  YmetalBtn.ClProSettings.BackgroundColor = ClAlphaColor.ClHextoColor('#2196f3');
  YmetalBtn.ClProSettings.FontColor = ClAlphaColor.clWhite;
  YmetalBtn.clTagStr = 'Yarı Metal';
  YmetalBtn.SetclProSettings(YmetalBtn.ClProSettings);
  
  AmetalBtn = Form1.AddNewProButton(Form1, 'AmetalBtn', 'Ametal');
  AmetalBtn.Align = alBottom;
  AmetalBtn.Height = 60;
  AmetalBtn.Margins.Bottom = 10;
  AmetalBtn.ClProSettings.FontSize = 18;
  AmetalBtn.ClProSettings.BackgroundColor = ClAlphaColor.ClHextoColor('#4caf50');
  AmetalBtn.ClProSettings.FontColor = ClAlphaColor.clWhite;
  AmetalBtn.clTagStr = 'Ametal';
  AmetalBtn.SetclProSettings(AmetalBtn.ClProSettings);
  
  SoygazBtn = Form1.AddNewProButton(Form1, 'SoygazBtn', 'Soygaz (Asal Gaz)');
  SoygazBtn.Align = alBottom;
  SoygazBtn.Height = 60;
  SoygazBtn.Margins.Bottom = 10;
  SoygazBtn.ClProSettings.FontSize = 18;
  SoygazBtn.ClProSettings.BackgroundColor = ClAlphaColor.ClHextoColor('#ff9800');
  SoygazBtn.ClProSettings.FontColor = ClAlphaColor.clWhite;
  SoygazBtn.clTagStr = 'Soygaz';
  SoygazBtn.SetclProSettings(SoygazBtn.ClProSettings);
  
  MetalBtn = Form1.AddNewProButton(Form1, 'MetalBtn', 'Metal');
  MetalBtn.Align = alBottom;
  MetalBtn.Height = 60;
  MetalBtn.Margins.Bottom = 10;
  MetalBtn.ClProSettings.FontSize = 18;
  MetalBtn.ClProSettings.BackgroundColor = ClAlphaColor.ClHextoColor('#f44336');
  MetalBtn.ClProSettings.FontColor = ClAlphaColor.clWhite;
  MetalBtn.clTagStr = 'Metal';
  MetalBtn.SetclProSettings(MetalBtn.ClProSettings);
  
  Form1.AddNewEvent(YmetalBtn, tbeOnClick, 'KontrolEt');
  Form1.AddNewEvent(AmetalBtn, tbeOnClick, 'KontrolEt');
  Form1.AddNewEvent(SoygazBtn, tbeOnClick, 'KontrolEt');
  Form1.AddNewEvent(MetalBtn, tbeOnClick, 'KontrolEt');
  
  SureTimer = Form1.AddNewTimer(Form1, 'SureTimer', 1000);
  SureTimer.Enabled = True;
  Form1.AddNewEvent(SureTimer, tbeOnTimer, 'SureGuncelle');
  
  KalanSure = 60;
  Skor = 0;
  HataSayisi = 0;
  YeniAtik;
  
  Form1.Run;
}



Cevaplar:
Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 30 Temmuz 2025 Saat 14:52
Merhaba Merve,

Prosedürü aşağıda yazdığım gibi çalıştırır mısın?

void YeniAtik;
var 
  RastgeleSayi: Integer;
{
  RastgeleSayi = Random(4);
  
  if (RastgeleSayi == 0) {
    Grup = 'Ametal';
    SoruLbl.Text = '18. grupta, renksiz, kokusuz, inert (tepkimeye girmeyen) bir gazdır. Hangi gruptadır?';
  } else if (RastgeleSayi == 1) {
    Grup = 'Yarı Metal';
    SoruLbl.Text = '16. grupta bulunur, sarı renkli katı, kötü iletken ve kokulu bir elementtir. Hangi gruptadır?';
  } else if (RastgeleSayi == 2) {
    Grup = 'Soygaz';
    SoruLbl.Text = 'Elektrik ve ısı iletkenliği yüksektir, 11. grupta bulunur. Hangi gruba aittir?';
  } else {
    Grup = 'Metal';
    SoruLbl.Text ='15. grupta yarı iletken özellikleri gösterir, hem metal hem ametal özellikler taşır. Hangi gruba girer?';
  }
  SoruLbl.Visible = True;
}
İyi çalışmalar.



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