Sayfayı Yazdır | Pencereyi Kapat

HATA

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=1495
Tarih: 09 Mayıs 2026 Saat 13:58
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: HATA
Mesajı Yazan: Canan Çakar
Konu: HATA
Mesaj Tarihi: 09 Mayıs 2026 Saat 10:57

var
  MainForm: TclForm;
  MainScroll: TclVertScrollBox;

  PnlHeader, PnlBoard, PnlLeft, PnlRight, PnlBottom: TclProPanel;
  LblTitle, LblSubTitle, LblInfo, LblScore: TclProLabel;

  BtnReset: TclProButton;

  ElemBtns, SymBtns: TclArrayObject;
  ElemNames, SymTexts: TclArrayString;
  MatchMap, ElemMatched, SymMatched: TclArrayInteger;

  SelectedElemIdx, SelectedSymIdx, Score: Integer;

const
  C_Bg = '#0F172A';
  C_Panel = '#1E293B';
  C_Border = '#334155';
  C_Text = '#E2E8F0';
  C_Muted = '#94A3B8';
  C_Green = '#22C55E';
  C_Red = '#EF4444';
  C_Yellow = '#FACC15';
  C_Blue = '#3B82F6';

void SetBtnStyle(Btn: TclProButton; BgHex, BorderHex, FontHex: String);
{
  Btn.clProSettings.BackgroundColor = clAlphaColor.clHexToColor(BgHex);
  Btn.clProSettings.BorderColor = clAlphaColor.clHexToColor(BorderHex);
  Btn.clProSettings.BorderWidth = 1;
  Btn.clProSettings.FontColor = clAlphaColor.clHexToColor(FontHex);
  Btn.clProSettings.RoundWidth = 12;
  Btn.clProSettings.RoundHeight = 12;
  Btn.clProSettings.FontSize = 12;
  Btn.SetclProSettings(Btn.clProSettings);
}

void RefreshScore;
{
  LblScore.Text = 'Skor: ' + IntToStr(Score) + ' / 6';
}

void ClearSelections;
var
  i: Integer;
  B: TclProButton;
{
  SelectedElemIdx = -1;
  SelectedSymIdx = -1;

  for i = 0 to 5 {
    B = TclProButton(ElemBtns.GetItem(i));
    if (ElemMatched.GetItem(i) == 1)
      SetBtnStyle(B, '#14532D', '#166534', C_Text)
    else
      SetBtnStyle(B, C_Panel, C_Border, C_Text);

    B = TclProButton(SymBtns.GetItem(i));
    if (SymMatched.GetItem(i) == 1)
      SetBtnStyle(B, '#14532D', '#166534', C_Text)
    else
      SetBtnStyle(B, C_Panel, C_Border, C_Text);
  }
}

void CheckMatch;
var
  ElemExpected, i: Integer;
  ElemBtn, SymBtn: TclProButton;
{
  if ((SelectedElemIdx < 0) || (SelectedSymIdx < 0)) Exit;

  ElemExpected = MatchMap.GetItem(SelectedElemIdx);
  ElemBtn = TclProButton(ElemBtns.GetItem(SelectedElemIdx));
  SymBtn = TclProButton(SymBtns.GetItem(SelectedSymIdx));

  if (ElemExpected == SelectedSymIdx)
  {
    ElemMatched.SetItem(SelectedElemIdx, 1);
    SymMatched.SetItem(SelectedSymIdx, 1);

    SetBtnStyle(ElemBtn, '#14532D', '#16A34A', C_Text);
    SetBtnStyle(SymBtn, '#14532D', '#16A34A', C_Text);

    Score = Score + 1;
    RefreshScore;

    if (Score == 6)
      LblInfo.Text = 'Tebrikler. Tum eslestirmeleri dogru yaptin.'
    else
      LblInfo.Text = 'Dogru eslesme. Devam et.';
  }
  else
  {
    SetBtnStyle(ElemBtn, '#7F1D1D', '#B91C1C', C_Text);
    SetBtnStyle(SymBtn, '#7F1D1D', '#B91C1C', C_Text);
    LblInfo.Text = 'Bu ikili dogru degil. Tekrar dene.';

    for i = 0 to 5 {
      if (i <> SelectedElemIdx) {
        if (ElemMatched.GetItem(i) == 1)
          SetBtnStyle(TclProButton(ElemBtns.GetItem(i)), '#14532D', '#166534', C_Text)
        else
          SetBtnStyle(TclProButton(ElemBtns.GetItem(i)), C_Panel, C_Border, C_Text);
      }
      if (i <> SelectedSymIdx) {
        if (SymMatched.GetItem(i) == 1)
          SetBtnStyle(TclProButton(SymBtns.GetItem(i)), '#14532D', '#166534', C_Text)
        else
          SetBtnStyle(TclProButton(SymBtns.GetItem(i)), C_Panel, C_Border, C_Text);
      }
    }
  }

  SelectedElemIdx = -1;
  SelectedSymIdx = -1;
}

void OnElemClick;
var
  Btn: TclProButton;
  i: Integer;
{
  Btn = TclProButton(MainForm.clSender);
  i = Btn.clTagInt;

  if (ElemMatched.GetItem(i) == 1) Exit;

  SelectedElemIdx = i;
  SetBtnStyle(Btn, '#1D4ED8', '#3B82F6', C_Text);
  LblInfo.Text = 'Simdi sag taraftan sembol sec.';

  if (SelectedSymIdx >= 0) CheckMatch;
}

void OnSymClick;
var
  Btn: TclProButton;
  i: Integer;
{
  Btn = TclProButton(MainForm.clSender);
  i = Btn.clTagInt;

  if (SymMatched.GetItem(i) == 1) Exit;

  SelectedSymIdx = i;
  SetBtnStyle(Btn, '#1D4ED8', '#3B82F6', C_Text);
  LblInfo.Text = 'Simdi sol taraftan eleman sec.';

  if (SelectedElemIdx >= 0) CheckMatch;
}

void ResetGame;
var
  i: Integer;
{
  Score = 0;
  SelectedElemIdx = -1;
  SelectedSymIdx = -1;

  for i = 0 to 5 {
    ElemMatched.SetItem(i, 0);
    SymMatched.SetItem(i, 0);
  }

  LblInfo.Text = 'Soldan eleman, sagdan sembol secerek eslestir.';
  RefreshScore;
  ClearSelections;
}

void SetupData;
{
  ElemNames = TclArrayString.Create;
  SymTexts = TclArrayString.Create;
  MatchMap = TclArrayInteger.Create;
  ElemMatched = TclArrayInteger.Create;
  SymMatched = TclArrayInteger.Create;

  ElemNames.Add('Pil');
  ElemNames.Add('Ampul');
  ElemNames.Add('Anahtar');
  ElemNames.Add('Direnc');
  ElemNames.Add('Kablo');
  ElemNames.Add('Zil');

  SymTexts.Add('+ | | -');
  SymTexts.Add('(X)');
  SymTexts.Add('-o/ o-');
  SymTexts.Add('-/\/\/-');
  SymTexts.Add('--------');
  SymTexts.Add('-( )-');

  MatchMap.Add(0);
  MatchMap.Add(1);
  MatchMap.Add(2);
  MatchMap.Add(3);
  MatchMap.Add(4);
  MatchMap.Add(5);

  ElemMatched.Add(0); ElemMatched.Add(0); ElemMatched.Add(0);
  ElemMatched.Add(0); ElemMatched.Add(0); ElemMatched.Add(0);

  SymMatched.Add(0); SymMatched.Add(0); SymMatched.Add(0);
  SymMatched.Add(0); SymMatched.Add(0); SymMatched.Add(0);

  ElemBtns = TclArrayObject.Create;
  SymBtns = TclArrayObject.Create;
}

void SetupUI;
var
  i, TopPos: Integer;
  BtnE, BtnS: TclProButton;
{
  MainForm = TclForm.Create(Self);
  MainForm.SetFormColor(C_Bg, C_Bg, clGCross);

  MainScroll = MainForm.AddNewVertScrollBox(MainForm, 'MainScroll');
  MainScroll.Align = alClient;

  PnlHeader = MainForm.AddNewProPanel(MainScroll, 'PnlHeader');
  PnlHeader.Align = alTop; PnlHeader.Height = 90;
  PnlHeader.clProSettings.IsTransparent = True;
  PnlHeader.SetclProSettings(PnlHeader.clProSettings);

  LblTitle = MainForm.AddNewProLabel(PnlHeader, 'LblTitle', 'Basit Elektrik Devre Elemanlari');
  LblTitle.Align = alTop; LblTitle.Height = 40; LblTitle.Margins.Top = 16;
  LblTitle.clProSettings.FontSize = 22; LblTitle.clProSettings.FontHorzAlign = palCenter;
  LblTitle.clProSettings.TextSettings.Font.Style = [fsBold];
  LblTitle.clProSettings.FontColor = clAlphaColor.clHexToColor(C_Yellow);
  LblTitle.SetclProSettings(LblTitle.clProSettings);

  LblSubTitle = MainForm.AddNewProLabel(PnlHeader, 'LblSubTitle', 'Eleman - Sembol Eslestirme');
  LblSubTitle.Align = alTop; LblSubTitle.Height = 20;
  LblSubTitle.clProSettings.FontSize = 12; LblSubTitle.clProSettings.FontHorzAlign = palCenter;
  LblSubTitle.clProSettings.FontColor = clAlphaColor.clHexToColor(C_Muted);
  LblSubTitle.SetclProSettings(LblSubTitle.clProSettings);

  PnlBoard = MainForm.AddNewProPanel(MainScroll, 'PnlBoard');
  PnlBoard.Align = alTop; PnlBoard.Height = 420;
  PnlBoard.Margins.Left = 10; PnlBoard.Margins.Right = 10; PnlBoard.Margins.Top = 10;
  PnlBoard.clProSettings.BackgroundColor = clAlphaColor.clHexToColor(C_Panel);
  PnlBoard.clProSettings.BorderColor = clAlphaColor.clHexToColor(C_Border);
  PnlBoard.clProSettings.BorderWidth = 1;
  PnlBoard.clProSettings.RoundWidth = 16; PnlBoard.clProSettings.RoundHeight = 16;
  PnlBoard.SetclProSettings(PnlBoard.clProSettings);

  PnlLeft = MainForm.AddNewProPanel(PnlBoard, 'PnlLeft');
  PnlLeft.Align = alLeft; PnlLeft.Width = (MainForm.clWidth div 2) - 20;
  PnlLeft.clProSettings.IsTransparent = True;
  PnlLeft.SetclProSettings(PnlLeft.clProSettings);

  PnlRight = MainForm.AddNewProPanel(PnlBoard, 'PnlRight');
  PnlRight.Align = alRight; PnlRight.Width = (MainForm.clWidth div 2) - 20;
  PnlRight.clProSettings.IsTransparent = True;
  PnlRight.SetclProSettings(PnlRight.clProSettings);

  for i = 0 to 5 {
    TopPos = 12 + (i * 64);

    BtnE = MainForm.AddNewProButton(PnlLeft, 'BtnElem_' + IntToStr(i), ElemNames.GetItem(i));
    BtnE.Align = alNone; BtnE.Left = 10; BtnE.Top = TopPos; BtnE.Width = PnlLeft.Width - 20; BtnE.Height = 54;
    BtnE.clTagInt = i;
    SetBtnStyle(BtnE, C_Panel, C_Border, C_Text);
    MainForm.AddNewEvent(BtnE, tbeOnClick, 'OnElemClick');
    ElemBtns.Add(BtnE);

    BtnS = MainForm.AddNewProButton(PnlRight, 'BtnSym_' + IntToStr(i), SymTexts.GetItem(i));
    BtnS.Align = alNone; BtnS.Left = 10; BtnS.Top = TopPos; BtnS.Width = PnlRight.Width - 20; BtnS.Height = 54;
    BtnS.clTagInt = i;
    SetBtnStyle(BtnS, C_Panel, C_Border, C_Text);
    MainForm.AddNewEvent(BtnS, tbeOnClick, 'OnSymClick');
    SymBtns.Add(BtnS);
  }

  PnlBottom = MainForm.AddNewProPanel(MainScroll, 'PnlBottom');
  PnlBottom.Align = alTop; PnlBottom.Height = 130;
  PnlBottom.Margins.Left = 10; PnlBottom.Margins.Right = 10; PnlBottom.Margins.Top = 10; PnlBottom.Margins.Bottom = 10;
  PnlBottom.clProSettings.BackgroundColor = clAlphaColor.clHexToColor(C_Panel);
  PnlBottom.clProSettings.BorderColor = clAlphaColor.clHexToColor(C_Border);
  PnlBottom.clProSettings.BorderWidth = 1;
  PnlBottom.clProSettings.RoundWidth = 16; PnlBottom.clProSettings.RoundHeight = 16;
  PnlBottom.SetclProSettings(PnlBottom.clProSettings);

  LblInfo = MainForm.AddNewProLabel(PnlBottom, 'LblInfo', 'Soldan eleman, sagdan sembol secerek eslestir.');
  LblInfo.Align = alTop; LblInfo.Height = 40; LblInfo.Margins.Top = 10; LblInfo.Margins.Left = 10; LblInfo.Margins.Right = 10;
  LblInfo.clProSettings.FontColor = clAlphaColor.clHexToColor(C_Text);
  LblInfo.clProSettings.FontSize = 12; LblInfo.clProSettings.FontHorzAlign = palCenter;
  LblInfo.SetclProSettings(LblInfo.clProSettings);

  LblScore = MainForm.AddNewProLabel(PnlBottom, 'LblScore', 'Skor: 0 / 6');
  LblScore.Align = alTop; LblScore.Height = 28;
  LblScore.clProSettings.FontColor = clAlphaColor.clHexToColor(C_Blue);
  LblScore.clProSettings.FontSize = 14; LblScore.clProSettings.TextSettings.Font.Style = [fsBold];
  LblScore.clProSettings.FontHorzAlign = palCenter;
  LblScore.SetclProSettings(LblScore.clProSettings);

  BtnReset = MainForm.AddNewProButton(PnlBottom, 'BtnReset', 'Sifirla');
  BtnReset.Align = alBottom; BtnReset.Height = 42; BtnReset.Margins.Left = 30; BtnReset.Margins.Right = 30; BtnReset.Margins.Bottom = 12;
  SetBtnStyle(BtnReset, '#334155', '#475569', C_Text);
  MainForm.AddNewEvent(BtnReset, tbeOnClick, 'ResetGame');

  ResetGame;

  MainForm.Run;
}

{
  SetupData;
  SetupUI;
}

BURADAKİ HATAYI BULAMIYORUM

https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">



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