Sayfayı Yazdır | Pencereyi Kapat

Sınıf atama

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=1540
Tarih: 21 Ağustos 2026 Saat 03:04
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: Sınıf atama
Mesajı Yazan: Nuran Özdemir
Konu: Sınıf atama
Mesaj Tarihi: 14 Mayıs 2026 Saat 22:44
8.sınıf müfredatında bulunan periyodik tablo konusundaki ilk 18 element ile ilgili sanal laboratuvar uygulaması hazırlamak istiyorum.Aynı zamada uygulama elementleri metal, ametal,soygaz olarak sınıflandıracak şekilde tasarlanmış olmalıdır.Bu uygulamanın çalışması için gerekli kodu yazmaya çalıştım ancak hata verdi.Hata nereden kaynaklanıyor olabilir.Yardımcı olabilir misiniz?

var
  AnaForm: TclForm;
  UstPanel, DetayPanel: TclProPanel;
  ElementListe: TClProListView;
  BilgiEtiketi: TclProLabel;
  // Veri yapıları için TclArray kullanımı (Kitap Bölüm 7'ye uygun)
  ElementAdlari, ElementSiniflari, ElementBilgileri: TclArray;

procedure ElementSecildi;
begin
  // Seçilen elementin detaylarını alt panelde göster
  BilgiEtiketi.Text := '📌 Element: ' + ElementAdlari.ItemValue(ElementListe.ItemIndex) + #13 +
                       '🧪 Sınıf: ' + ElementSiniflari.ItemValue(ElementListe.ItemIndex) + #13 +
                       '📝 Özellik: ' + ElementBilgileri.ItemValue(ElementListe.ItemIndex);
  DetayPanel.Visible := True;
end;

begin
  [span_0](start_span)// Form Oluşturma (Kitap Kod 75 referans alındı)[span_0](end_span)
  AnaForm := TclForm.Create(Self);
  AnaForm.SetFormColor('#2C3E50', '#4CA1AF', clGVertical); [span_1](start_span)// Kitap Tablo 14'e uygun geçiş[span_1](end_span)

  [span_2](start_span)// Verilerin Hazırlanması (TclArray kullanımı)[span_2](end_span)
  ElementAdlari := ClsetupArray;
  ElementAdlari.Add('Hidrojen (H)'); ElementAdlari.Add('Helyum (He)');
  ElementAdlari.Add('Lityum (Li)'); ElementAdlari.Add('Berilyum (Be)');

  ElementSiniflari := ClsetupArray;
  ElementSiniflari.Add('Ametal'); ElementSiniflari.Add('Soygaz');
  ElementSiniflari.Add('Metal'); ElementSiniflari.Add('Metal');

  ElementBilgileri := ClsetupArray;
  ElementBilgileri.Add('Evrenin en hafif ve en bol elementidir.');
  ElementBilgileri.Add('Güneş ve yıldızların temel enerji kaynağıdır.');
  ElementBilgileri.Add('En hafif metaldir, şarj edilebilir pillerde kullanılır.');
  ElementBilgileri.Add('Hafif ve serttir, uzay teknolojilerinde tercih edilir.');

  // Başlık Paneli
  UstPanel := AnaForm.AddNewProPanel(AnaForm, 'UstPanel');
  UstPanel.Align := alTop;
  UstPanel.Height := 50;
  UstPanel.Color := clAlphaColor.clHexToColor('#34495E');

  // Liste Bileşeni (ProListView)
  ElementListe := AnaForm.AddNewProListView(AnaForm, 'ElementListe');
  ElementListe.Align := alClient;
  ElementListe.Margins.Top := 5;
  ElementListe.Margins.Bottom := 5;
  
  [span_3](start_span)// Detay Paneli (Bilgi Ekranı)[span_3](end_span)
  DetayPanel := AnaForm.AddNewProPanel(AnaForm, 'DetayPanel');
  DetayPanel.Align := alBottom;
  DetayPanel.Height := 180;
  DetayPanel.Visible := False; [span_4](start_span)// Başlangıçta gizli[span_4](end_span)
  DetayPanel.Color := clAlphaColor.clHexToColor('#ECF0F1');

  [span_5](start_span)// Bilgi Etiketi (TclProLabel)[span_5](end_span)
  BilgiEtiketi := AnaForm.AddNewProLabel(DetayPanel, 'BilgiEtiketi', 'İncelemek için bir element seçin.');
  BilgiEtiketi.Align := alClient;
  BilgiEtiketi.Margins.Left := 20;
  BilgiEtiketi.Margins.Top := 20;
  BilgiEtiketi.TextSettings.Font.Size := 15;
  BilgiEtiketi.TextSettings.Font.Color := clAlphaColor.clHexToColor('#2C3E50');

  [span_6](start_span)// Listeyi Verilerle Doldur ve Olayı Bağla (Bölüm 12 referansı)[span_6](end_span)
  ElementListe.Properties.Items := ElementAdlari;
  AnaForm.AddNewEvent(ElementListe, tbeOnItemClick, 'ElementSecildi');

  [span_7](start_span)// Uygulamayı Çalıştır[span_7](end_span)
  AnaForm.Run;
end;



Cevaplar:
Mesajı Yazan: kayra.55
Mesaj Tarihi: 18 Mayıs 2026 Saat 11:45

https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447" integrity="sha512-57MDmcccJXYtNnH+ZiBwzC4jb2rvgVCEokYN+L/nLlmO8rfYT/gIpW2A569iJ/3b+0UEasghjuZH/ma3wIs/EQ==" 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">


Mesajı Yazan: kayra.55
Mesaj Tarihi: 18 Mayıs 2026 Saat 11:46
 Merhaba Nuran kodunu inceledim ve hatalarını düzelttim hatasız olan kodun aşağıda bulunmaktadır iyi çalışmalar dilerim
var
  AnaForm: TclForm;
  UstPanel, TabloPaneli, SolKolon, SagKolon, DetayPanel, RenkPaneli: TclProPanel;
  BaslikEtiketi, SembolEtiketi, SinifEtiketi, BilgiEtiketi: TclProLabel;
  ElementAdlari, ElementSiniflari, ElementBilgileri: TclArrayString;

// --- ANA GÖSTERİM PROSEDÜRÜ ---
void Sec(Index: Integer);
var
  sinifBilgisi: String;
{
  sinifBilgisi = ElementSiniflari.GetItem(Index);
  
  SembolEtiketi.Text = ElementAdlari.GetItem(Index);
  SinifEtiketi.Text = '🧪 Sınıfı: ' + sinifBilgisi;
  BilgiEtiketi.Text = '📝 Bilgi: ' + ElementBilgileri.GetItem(Index);
  
  RenkPaneli.clProSettings.BorderColor = clAlphaColor.clHexToColor('#FFFFFF');
  RenkPaneli.clProSettings.BorderWidth = 2;
  RenkPaneli.clProSettings.IsRound = True;
  RenkPaneli.clProSettings.RoundHeight = 15;
  RenkPaneli.clProSettings.RoundWidth = 15;

  // Renkler sadece detay panelinde ortaya çıkacak
  if (sinifBilgisi == 'Ametal') { RenkPaneli.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#D4AC0D'); } // Koyu Sarı
  else if (sinifBilgisi == 'Metal') { RenkPaneli.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#2980B9'); } // Koyu Mavi
  else if (sinifBilgisi == 'Soygaz') { RenkPaneli.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#8E44AD'); } // Koyu Mor
  else if (sinifBilgisi == 'Yarı Metal') { RenkPaneli.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#27AE60'); } // Koyu Yeşil
  
  RenkPaneli.SetclProSettings(RenkPaneli.clProSettings);
  DetayPanel.Visible = True;
}

// --- 18 BUTON İÇİN GÜVENLİ OLAY TETİKLEYİCİLERİ ---
void Sec0; { Sec(0); }   void Sec1; { Sec(1); }   void Sec2; { Sec(2); }
void Sec3; { Sec(3); }   void Sec4; { Sec(4); }   void Sec5; { Sec(5); }
void Sec6; { Sec(6); }   void Sec7; { Sec(7); }   void Sec8; { Sec(8); }
void Sec9; { Sec(9); }   void Sec10; { Sec(10); } void Sec11; { Sec(11); }
void Sec12; { Sec(12); } void Sec13; { Sec(13); } void Sec14; { Sec(14); }
void Sec15; { Sec(15); } void Sec16; { Sec(16); } void Sec17; { Sec(17); }

// --- BUTON OLUŞTURMA YARDIMCISI (RENK PARAMETRESİ KALDIRILDI) ---
void ButonEkle(KolonSecim: Integer; AName, AText, AEvent: String);
var
  Btn: TclProButton;
{
  if (KolonSecim == 1) { Btn = AnaForm.AddNewProButton(SolKolon, AName, AText); }
  else { Btn = AnaForm.AddNewProButton(SagKolon, AName, AText); }
  
  Btn.Align = alTop;
  Btn.Height = 35;
  Btn.Margins.Top = 2; Btn.Margins.Bottom = 2; Btn.Margins.Left = 5; Btn.Margins.Right = 5;
  
  // Tüm butonlar tek tip, sade ve şık bir renge büründü
  Btn.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#34495E'); 
  Btn.clProSettings.FontColor = clAlphaColor.clHexToColor('#FFFFFF'); 
  Btn.clProSettings.IsRound = True;
  Btn.clProSettings.RoundHeight = 8; Btn.clProSettings.RoundWidth = 8;
  Btn.SetclProSettings(Btn.clProSettings);
  
  AnaForm.AddNewEvent(Btn, tbeOnClick, AEvent);
}

{
  AnaForm = TclForm.Create(Self);
  AnaForm.SetFormColor('#1E2A38', '#2C3E50', clGVertical); // Daha yumuşak bir arka plan geçişi

  ElementAdlari = TclArrayString.Create;
  ElementAdlari.Add('1. Hidrojen (H)'); ElementAdlari.Add('2. Helyum (He)'); ElementAdlari.Add('3. Lityum (Li)');
  ElementAdlari.Add('4. Berilyum (Be)'); ElementAdlari.Add('5. Bor (B)'); ElementAdlari.Add('6. Karbon (C)');
  ElementAdlari.Add('7. Azot (N)'); ElementAdlari.Add('8. Oksijen (O)'); ElementAdlari.Add('9. Flor (F)');
  ElementAdlari.Add('10. Neon (Ne)'); ElementAdlari.Add('11. Sodyum (Na)'); ElementAdlari.Add('12. Magnezyum (Mg)');
  ElementAdlari.Add('13. Alüminyum (Al)'); ElementAdlari.Add('14. Silisyum (Si)'); ElementAdlari.Add('15. Fosfor (P)');
  ElementAdlari.Add('16. Kükürt (S)'); ElementAdlari.Add('17. Klor (Cl)'); ElementAdlari.Add('18. Argon (Ar)');

  ElementSiniflari = TclArrayString.Create;
  ElementSiniflari.Add('Ametal'); ElementSiniflari.Add('Soygaz'); ElementSiniflari.Add('Metal');
  ElementSiniflari.Add('Metal'); ElementSiniflari.Add('Yarı Metal'); ElementSiniflari.Add('Ametal');
  ElementSiniflari.Add('Ametal'); ElementSiniflari.Add('Ametal'); ElementSiniflari.Add('Ametal');
  ElementSiniflari.Add('Soygaz'); ElementSiniflari.Add('Metal'); ElementSiniflari.Add('Metal');
  ElementSiniflari.Add('Metal'); ElementSiniflari.Add('Yarı Metal'); ElementSiniflari.Add('Ametal');
  ElementSiniflari.Add('Ametal'); ElementSiniflari.Add('Ametal'); ElementSiniflari.Add('Soygaz');

  ElementBilgileri = TclArrayString.Create;
  ElementBilgileri.Add('Evrenin en hafif ve en bol elementidir. 1A grubundadır ama METAL DEĞİLDİR!');
  ElementBilgileri.Add('Balonlarda kullanılır, yanıcı değildir. Değerlik elektronu 2 olmasına rağmen 8A grubundadır!');
  ElementBilgileri.Add('Cep telefonu pillerinin vazgeçilmez hafif metalidir.');
  ElementBilgileri.Add('Uzay araçlarında ve uçaklarda hafifliği sebebiyle kullanılır.');
  ElementBilgileri.Add('Türkiye rezervinde dünya birincisidir. Isıya dayanıklı cam yapımında kullanılır.');
  ElementBilgileri.Add('Canlıların temel taşıdır. Kömür, grafit ve elmasın ana maddesidir.');
  ElementBilgileri.Add('Soluduğumuz havanın %78''ini oluşturur. Gübre yapımında kullanılır.');
  ElementBilgileri.Add('Havanın %21''ini oluşturur. Solunum ve yanma olayları için şarttır.');
  ElementBilgileri.Add('Diş macunlarının yapısında bulunur, çürümeyi önler. En reaktif ametaldir.');
  ElementBilgileri.Add('Renkli ışıklı tabelalarda (neon lambalar) bolca kullanılır.');
  ElementBilgileri.Add('Sofra tuzunun (NaCl) yapısında bulunur. Suda patlayarak tepkime verir.');
  ElementBilgileri.Add('Hafif alaşımlarda ve fotoğraf flaşlarında kullanılır.');
  ElementBilgileri.Add('İçecek kutularında ve mutfak folyolarında kullanılan yaygın metaldir.');
  ElementBilgileri.Add('Kumun ve akıllı telefon çiplerinin/işlemcilerinin ana maddesidir.');
  ElementBilgileri.Add('DNA''nın yapısında ve kibrit uçlarında bulunur.');
  ElementBilgileri.Add('Sarı renklidir. Barut ve tarım ilaçları yapımında kullanılır.');
  ElementBilgileri.Add('Havuz sularının ve dezenfeksiyon ürünlerinin temelidir.');
  ElementBilgileri.Add('Ampullerin içinde ve kaynak işlemlerinde koruyucu gaz olarak kullanılır.');

  UstPanel = AnaForm.AddNewProPanel(AnaForm, 'UstPanel');
  UstPanel.Align = alTop;
  UstPanel.Height = 50;
  
  BaslikEtiketi = AnaForm.AddNewProLabel(UstPanel, 'BaslikEtiketi', '🔬 İlk 18 Element Dashboard');
  BaslikEtiketi.Align = alCenter;
  BaslikEtiketi.clProSettings.FontSize = 16;
  BaslikEtiketi.clProSettings.FontColor = clAlphaColor.clHexToColor('#FFFFFF');
  BaslikEtiketi.clProSettings.FontVertAlign = palCenter;
  BaslikEtiketi.SetclProSettings(BaslikEtiketi.clProSettings);

  TabloPaneli = AnaForm.AddNewProPanel(AnaForm, 'TabloPaneli');
  TabloPaneli.Align = alTop;
  TabloPaneli.Height = 360; 
  
  SolKolon = AnaForm.AddNewProPanel(TabloPaneli, 'SolKolon');
  SolKolon.Align = alLeft;
  SolKolon.Width = 180; 

  SagKolon = AnaForm.AddNewProPanel(TabloPaneli, 'SagKolon');
  SagKolon.Align = alClient; 

  // Renk karmaşası bitti, tüm butonlar standart eklendi
  ButonEkle(1, 'Btn0', '1. H (Hidrojen)', 'Sec0');
  ButonEkle(1, 'Btn1', '2. He (Helyum)', 'Sec1');
  ButonEkle(1, 'Btn2', '3. Li (Lityum)', 'Sec2');
  ButonEkle(1, 'Btn3', '4. Be (Berilyum)', 'Sec3');
  ButonEkle(1, 'Btn4', '5. B (Bor)', 'Sec4');
  ButonEkle(1, 'Btn5', '6. C (Karbon)', 'Sec5');
  ButonEkle(1, 'Btn6', '7. N (Azot)', 'Sec6');
  ButonEkle(1, 'Btn7', '8. O (Oksijen)', 'Sec7');
  ButonEkle(1, 'Btn8', '9. F (Flor)', 'Sec8');

  ButonEkle(2, 'Btn9', '10. Ne (Neon)', 'Sec9');
  ButonEkle(2, 'Btn10', '11. Na (Sodyum)', 'Sec10');
  ButonEkle(2, 'Btn11', '12. Mg (Magnezyum)', 'Sec11');
  ButonEkle(2, 'Btn12', '13. Al (Alüminyum)', 'Sec12');
  ButonEkle(2, 'Btn13', '14. Si (Silisyum)', 'Sec13');
  ButonEkle(2, 'Btn14', '15. P (Fosfor)', 'Sec14');
  ButonEkle(2, 'Btn15', '16. S (Kükürt)', 'Sec15');
  ButonEkle(2, 'Btn16', '17. Cl (Klor)', 'Sec16');
  ButonEkle(2, 'Btn17', '18. Ar (Argon)', 'Sec17');

  DetayPanel = AnaForm.AddNewProPanel(AnaForm, 'DetayPanel');
  DetayPanel.Align = alClient;
  DetayPanel.Margins.Top = 10; DetayPanel.Margins.Bottom = 10;
  DetayPanel.Margins.Left = 10; DetayPanel.Margins.Right = 10;
  DetayPanel.Visible = False; 

  RenkPaneli = AnaForm.AddNewProPanel(DetayPanel, 'RenkPaneli');
  RenkPaneli.Align = alClient;
  
  SembolEtiketi = AnaForm.AddNewProLabel(RenkPaneli, 'SembolEtiketi', '');
  SembolEtiketi.Align = alTop;
  SembolEtiketi.Height = 40;
  SembolEtiketi.clProSettings.FontSize = 20;
  SembolEtiketi.clProSettings.FontColor = clAlphaColor.clHexToColor('#FFFFFF');
  SembolEtiketi.SetclProSettings(SembolEtiketi.clProSettings);

  SinifEtiketi = AnaForm.AddNewProLabel(RenkPaneli, 'SinifEtiketi', '');
  SinifEtiketi.Align = alTop;
  SinifEtiketi.Height = 35;
  SinifEtiketi.clProSettings.FontSize = 16;
  SinifEtiketi.clProSettings.FontColor = clAlphaColor.clHexToColor('#FFFFFF');
  SinifEtiketi.SetclProSettings(SinifEtiketi.clProSettings);

  BilgiEtiketi = AnaForm.AddNewProLabel(RenkPaneli, 'BilgiEtiketi', '');
  BilgiEtiketi.Align = alClient;
  BilgiEtiketi.Margins.Top = 10; BilgiEtiketi.Margins.Left = 10; BilgiEtiketi.Margins.Right = 10;
  BilgiEtiketi.clProSettings.FontSize = 14;
  BilgiEtiketi.clProSettings.FontColor = clAlphaColor.clHexToColor('#FFFFFF');
  BilgiEtiketi.SetclProSettings(BilgiEtiketi.clProSettings);

  AnaForm.Run;
}
https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447" integrity="sha512-57MDmcccJXYtNnH+ZiBwzC4jb2rvgVCEokYN+L/nLlmO8rfYT/gIpW2A569iJ/3b+0UEasghjuZH/ma3wIs/EQ==" 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