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. |
Bileşen bulunamadı hatası |
Yanıt Yaz |
Yazar | |
NadireNurSaglam
Yeni Üye Kayıt Tarihi: 08 Ağustos 2024 Durum: Aktif Değil Puanlar: 37 |
Mesaj Seçenekleri
Yanıt Yaz
Alıntı NadireNurSaglam
Bu mesaj kurallara aykırıysa buradan yöneticileri bilgilendirebilirsiniz.
Gönderim Zamanı: 15 Ağustos 2024 Saat 13:29 |
Merhaba. oyunForm sayfam ilk açıldığında kelimeProLabel bileşeni ekrana gelmesi ve bu sayfa yenilendiği zaman aynı bileşenin boş bir şekilde ekranda aynı yere gelmesi için aşağıdaki kodu yazdım. Eğer ;
yedeklabel = oyunForm.clFindComponent('kelimeProLabel'); if (yedeklabel <> nil) { yedeklabel.Text = karisikKelime; }
bu kısmı yazmadan direk kelimeProLabel ı tanımlarsam bileşen ekrana gelmiyor. Ama bu kısmı yazdıktan sonra da ekran açıldığında mesaj kutusunda 'Bileşen bulunamadı' yazıyor ve kutuyu kapattıktan sonra istediğim şekilde bileşen geliyor. Sayfa yenilendiği zaman yine istediğim şekilde bileşen aynı yere geliyor. Ekrana gelen bu 'Bileşen bulunamadı' hatasını nasıl çözerim? Teşekkürler. ------------------------------------------------------------------------------ var MyForm,baslaForm,oyunForm: TclForm; arkaPlanImg: TCLImage; baslaButon,nasiloynanirButon,fruitsButon,animalsButon,colorsButon,jobsButon,tahminEtProButton : TClProButton; fruitsList,animalsList,colorsList,jobsList: TclStringList; kelimeProLabel, kategoriProLabel,karistirilmisProLabel,tahminetProLabel: TClProLabel; tahminProEdit: TclProEdit; karisikKelime: String; i: Integer; yedeklabel : TClProLabel; orijinalKelime: String; canSayisi: Integer; selectedList: TclStringList; kelimeIndex: Integer; function harfleriKaristir(List:TclStringList); var i,j, k, RandomIndex: Integer; harfListesi, alfabe, randomHarfler: TclStringList; TempChar: String; { alfabe = Clomosy.StringListNew; alfabe.Add('a'); alfabe.Add('b'); alfabe.Add('c'); alfabe.Add('d'); alfabe.Add('e'); alfabe.Add('f'); alfabe.Add('g'); alfabe.Add('h'); alfabe.Add('i'); alfabe.Add('j'); alfabe.Add('k'); alfabe.Add('l'); alfabe.Add('m'); alfabe.Add('o'); alfabe.Add('p'); alfabe.Add('q'); alfabe.Add('r'); alfabe.Add('s'); alfabe.Add('t'); alfabe.Add('u'); alfabe.Add('v'); alfabe.Add('w'); alfabe.Add('x'); alfabe.Add('y'); alfabe.Add('z'); if (kelimeIndex < List.Count) { orijinalKelime = List[kelimeIndex]; harfListesi = Clomosy.StringListNew; harfListesi.Capacity = Length(List[kelimeIndex]) + 3; for j = 1 to Length(orijinalKelime) { harfListesi.Add(Copy(orijinalKelime, j, 1)); } // Rasgele 3 harf ekleme randomHarfler = Clomosy.StringListNew; for j = 1 to 3 { RandomIndex = Round(Random(alfabe.Count - 1)); randomHarfler.Add(alfabe[RandomIndex]); } for j = 0 to randomHarfler.Count - 1 { harfListesi.Add(randomHarfler[j]); } // Karıştırma for k = 0 to harfListesi.Count - 1 { RandomIndex = Round(Random(harfListesi.Count - 1)); TempChar = harfListesi[k]; harfListesi[k] = harfListesi[RandomIndex]; harfListesi[RandomIndex] = TempChar; } // Karışık kelimeyi oluştur karisikKelime = ''; for k = 0 to harfListesi.Count - 1 { karisikKelime = karisikKelime + harfListesi[k]; } yedeklabel = oyunForm.clFindComponent('kelimeProLabel'); if (yedeklabel <> nil) { yedeklabel.Text = karisikKelime; } else { kelimeProLabel = oyunForm.AddNewProLabel(oyunForm, 'kelimeProLabel', karisikKelime); clComponent.SetupComponent(kelimeProLabel, '{ "Align": "Center", "MarginBottom": 350, "Width": 340, "Height": 60, "TextSize": 25, "TextHorizontalAlign": "Center", "TextVerticalAlign": "Center", "TextBold": "Yes", "BackgroundColor": "#fefbec", "RoundHeight": 8, "RoundWidth": 8, "BorderColor": "#94ae89", "BorderWidth": 2 }'); } } } void KategoriSecimi; { oyunForm = TCLForm.Create(Self); oyunForm.SetFormBGImage('https://i.imgur.com/0ozkr4m.png'); karistirilmisProLabel = oyunForm.AddNewProLabel(oyunForm,'karistirilmisProLabel','KELİMENİN KARIŞTIRILMIŞ HALİ:'); clComponent.SetupComponent(karistirilmisProLabel,'{ "Align":"Center", "MarginBottom" : 550, "Width":400, "Height" :300, "TextSize" : 25, "TextVerticalAlign": "Center", "TextHorizontalAlign" :"Center", "TextBold": "Yes" }') tahminetProLabel = oyunForm.AddNewProLabel(oyunForm,'tahminetProLabel','TAHMİN ET:'); clComponent.SetupComponent(tahminetProLabel,'{ "Align":"Center", "MarginBottom" : 120, "Width":400, "Height" :300, "TextSize" : 25, "TextVerticalAlign": "Center", "TextHorizontalAlign" :"Center", "TextBold": "Yes" }') tahminProEdit = oyunForm.AddNewProEdit(oyunForm, 'tahminProEdit', 'Tahminini Gir...'); clComponent.SetupComponent(tahminProEdit,'{ "Align" : "Center", "MarginTop":80, "Width":340, "Height":60, "TextSize" :25, "TextHorizontalAlign " : "Center", "TextVerticalAlign" : "Center", "TextBold":"Yes", "BackgroundColor":"#fefbec", "RoundHeight":8, "RoundWidth":8, "BorderColor":"#94ae89", "BorderWidth":2 }') tahminProEdit.clTypeOfField = taString; //Sadece metin girişi tahminEtProButton = oyunForm.AddNewProButton(oyunForm, 'tahminEtProButton', 'KONTROL ET'); clComponent.SetupComponent(tahminEtProButton, '{ "Align" : "Center", "TextSize":15, "MarginTop" : 320, "MarginLeft":200, "Width" : 200, "Height" : 50, "RoundHeight" : 8, "RoundWidth" : 8, "BackgroundColor":"#fefbec", "BorderColor":"#94ae89", "BorderWidth" : 2 }'); oyunForm.AddNewEvent(tahminEtProButton,tbeOnClick,'tahminEtButonClick'); oyunForm.Run; } void fruitsButonClick; { fruitsList = Clomosy.StringListNew; fruitsList.Capacity = 10; fruitsList.Add('apple'); fruitsList.Add('banana'); fruitsList.Add('orange'); fruitsList.Add('mango'); fruitsList.Add('watermelon'); fruitsList.Add('cherry'); fruitsList.Add('lemon'); fruitsList.Add('strawberry'); fruitsList.Add('grape'); fruitsList.Add('pineapple'); kelimeIndex = 0; selectedList = fruitsList; KategoriSecimi; harfleriKaristir(selectedList); } void animalsButonClick; { animalsList = Clomosy.StringListNew; animalsList.Capacity = 10; animalsList.Add('cat'); animalsList.Add('dog'); animalsList.Add('elephant'); animalsList.Add('tiger'); animalsList.Add('lion'); animalsList.Add('giraffe'); animalsList.Add('zebra'); animalsList.Add('monkey'); animalsList.Add('bear'); animalsList.Add('dolphin'); kelimeIndex = 0; selectedList = animalsList; KategoriSecimi; harfleriKaristir(selectedList); } void colorsButonClick; { colorsList = Clomosy.StringListNew; colorsList.Capacity = 10; colorsList.Add('red'); colorsList.Add('blue'); colorsList.Add('green'); colorsList.Add('yellow'); colorsList.Add('black'); colorsList.Add('white'); colorsList.Add('pink'); colorsList.Add('orange'); colorsList.Add('purple'); colorsList.Add('brown'); kelimeIndex = 0; selectedList = colorsList; KategoriSecimi; harfleriKaristir(selectedList); } void jobsButonClick; { jobsList = Clomosy.StringListNew; jobsList.Capacity = 10; jobsList.Add('doctor'); jobsList.Add('teacher'); jobsList.Add('engineer'); jobsList.Add('nurse'); jobsList.Add('lawyer'); jobsList.Add('architect'); jobsList.Add('chef'); jobsList.Add('artist'); jobsList.Add('police'); jobsList.Add('journalist'); kelimeIndex = 0; selectedList = jobsList; KategoriSecimi; harfleriKaristir(selectedList); } void baslaButonClick; { canSayisi = 3; baslaForm = TCLForm.Create(Self); baslaForm.SetFormBGImage('https://i.imgur.com/QdZNWrx.png'); kategoriProLabel = baslaForm.AddNewProLabel(baslaForm,'kategoriProLabel','HADİ BİR KATEGORİ SEÇ VE TAHMİN ETMEYE BAŞLA!'); clComponent.SetupComponent(kategoriProLabel,'{ "Align":"Center", "MarginBottom" : 520, "Width":400, "Height" :300, "TextSize" : 25, "TextVerticalAlign": "Center", "TextHorizontalAlign" :"Center", "TextBold": "Yes" }') fruitsButon = baslaForm.AddNewProButton(baslaForm, 'fruitsButon', 'Fruits'); clComponent.SetupComponent(fruitsButon, '{ "Align" : "Center", "TextSize":20, "MarginBottom" : 150, "MarginRight":200, "Width" : 170, "Height" : 170, "RoundHeight" : 8, "RoundWidth" : 8, "Bordercolor" : "#8eaaad", "BackgroundColor":"#fefbec", "BorderWidth" : 2 }'); baslaForm.AddNewEvent(fruitsButon,tbeOnClick,'fruitsButonClick'); //------------------------------------------------------------------------------- animalsButon = baslaForm.AddNewProButton(baslaForm, 'animalsButon', 'Animals'); clComponent.SetupComponent(animalsButon, '{ "Align" : "Center", "TextSize":20, "MarginBottom" : 150, "MarginLeft":200, "Width" : 170, "Height" : 170, "RoundHeight" : 8, "RoundWidth" : 8, "Bordercolor" : "#8eaaad", "BackgroundColor":"#fefbec", "BorderWidth" : 2 }'); baslaForm.AddNewEvent(animalsButon,tbeOnClick,'animalsButonClick'); //-------------------------------------------------------------------------- colorsButon = baslaForm.AddNewProButton(baslaForm, 'colorsButon', 'Colors'); clComponent.SetupComponent(colorsButon, '{ "Align" : "Center", "TextSize":20, "MarginTop" : 250, "MarginRight":200, "Width" : 170, "Height" : 170, "RoundHeight" : 8, "RoundWidth" : 8, "Bordercolor" : "#8eaaad", "BackgroundColor":"#fefbec", "BorderWidth" : 2 }'); baslaForm.AddNewEvent(colorsButon,tbeOnClick,'colorsButonClick'); //-------------------------------------------------------------------- jobsButon = baslaForm.AddNewProButton(baslaForm, 'jobsButon', 'Jobs'); clComponent.SetupComponent(jobsButon, '{ "Align" : "Center", "TextSize":20, "MarginTop" : 250, "MarginLeft":200, "Width" : 170, "Height" : 170, "RoundHeight" : 8, "RoundWidth" : 8, "Bordercolor" : "#8eaaad", "BackgroundColor":"#fefbec", "BorderWidth" : 2 }'); baslaForm.AddNewEvent(jobsButon,tbeOnClick,'jobsButonClick'); //------------------------------------------------------------- baslaForm.Run; } void kalanHak; { if (canSayisi > 0) { Dec(canSayisi); if (canSayisi == 2) { ShowMessage('Yanlış tahmin! Kalan can sayın: '+ IntToStr(canSayisi)); } else if (canSayisi == 1) { ShowMessage('Yanlış tahmin! Kalan can sayın: '+ IntToStr(canSayisi)); } else if (canSayisi == 0) { ShowMessage('Oyun bitti! Geriye hiç canın kalmadı :( Doğru kelime: '+ orijinalKelime+' Hadi Tekrar Oyna!'); oyunForm.BtnGoBackClick(self); } } } void tahminEtButonClick; var tahminEdilenKelime: String; karsilastir: Integer; { tahminEdilenKelime= LowerCase(tahminProEdit.Text); karsilastir= AnsiCompareText(tahminEdilenKelime,LowerCase(orijinalKelime)); if (karsilastir == 0) { ShowMessage('Doğru bildin! Hadi diğer kelimeye geç!'); kelimeIndex = kelimeIndex + 1; // Bir sonraki kelimeye geç if (kelimeIndex < selectedList.Count) { harfleriKaristir(selectedList); // Yeni kelimeyi karıştır ve göster } else { ShowMessage('Tebrikler! Tüm kelimeleri doğru tahmin ettiniz! Hadi bir kategori daha seç ve kelimeleri bulmaya devam et!'); oyunForm.BtnGoBackClick(Self); // Ana menüye dön } } else { kalanHak; } tahminProEdit.Text = ''; } void nasiloynanirButonClick; { ShowMessage('Guess What oyununa hoş geldiniz! Bu oyunda, karışık halde verilen harflerden anlamlı bir kelime oluşturmanız beklenmektedir. Oyunun amacı, verilen harfleri kullanarak doğru kelimeyi bulmaktır. Seçilen kategori ile ilgili gelen kelimenin harfleri karışık gelir. Ayrıca kelimeye ait olmayan harfler de bu karışık harflerin arasında yer alır. Haydi Başla butonuna tıkla, ardından bir kategori seç ve eğlenmeye başla!'); } { MyForm = TCLForm.Create(Self); MyForm.SetFormBGImage('https://i.imgur.com/rLwQoPD.png'); baslaButon = MyForm.AddNewProButton(MyForm, 'baslaButon', 'BAŞLA'); clComponent.SetupComponent(baslaButon, '{ "Align" : "Center", "TextSize":25, "MarginBottom" : 135, "Width" : 250, "Height" : 70, "RoundHeight" : 5, "RoundWidth" : 5, "Bordercolor" : "#8eaaad", "BorderWidth" : 2 }'); MyForm.AddNewEvent(baslaButon,tbeOnClick,'baslaButonClick'); nasiloynanirButon = MyForm.AddNewProButton(MyForm, 'nasiloynanirButon', 'NASIL OYNANIR?'); clComponent.SetupComponent(nasiloynanirButon, '{ "Align" : "Center", "TextSize":25, "MarginTop" : 40, "Width" : 250, "Height" : 70, "RoundHeight" : 5, "RoundWidth" : 5, "Bordercolor" : "#8eaaad", "BorderWidth" : 2 }'); MyForm.AddNewEvent(nasiloynanirButon,tbeOnClick,'nasiloynanirButonClick'); MyForm.Run; } |
|
cagataycantay
Yeni Üye Kayıt Tarihi: 16 Mayıs 2024 Konum: Adana Durum: Aktif Değil Puanlar: 54 |
Mesaj Seçenekleri
Yanıt Yaz
Alıntı cagataycantay
Bu mesaj kurallara aykırıysa buradan yöneticileri bilgilendirebilirsiniz.
|
Merhaba Nadire Nur,
kelimeProLabel bileşenini türetmeden kullanmaya çalıştığın için bu hatayı alıyorsun. Kodunun düzeltilmiş hali aşağıdaki gibidir. harfleriKaristir Fonksiyonunu aşağıdaki gibi güncelleyebilirsin. ------------------------------------------------------------------------------------------------- function harfleriKaristir(List:TclStringList); var i,j, k, RandomIndex: Integer; harfListesi, alfabe, randomHarfler: TclStringList; TempChar: String; { alfabe = Clomosy.StringListNew; alfabe.Add('a'); alfabe.Add('b'); alfabe.Add('c'); alfabe.Add('d'); alfabe.Add('e'); alfabe.Add('f'); alfabe.Add('g'); alfabe.Add('h'); alfabe.Add('i'); alfabe.Add('j'); alfabe.Add('k'); alfabe.Add('l'); alfabe.Add('m'); alfabe.Add('o'); alfabe.Add('p'); alfabe.Add('q'); alfabe.Add('r'); alfabe.Add('s'); alfabe.Add('t'); alfabe.Add('u'); alfabe.Add('v'); alfabe.Add('w'); alfabe.Add('x'); alfabe.Add('y'); alfabe.Add('z'); if (kelimeIndex < List.Count) { orijinalKelime = List[kelimeIndex]; harfListesi = Clomosy.StringListNew; harfListesi.Capacity = Length(List[kelimeIndex]) + 3; for j = 1 to Length(orijinalKelime) { harfListesi.Add(Copy(orijinalKelime, j, 1)); } // Rasgele 3 harf ekleme randomHarfler = Clomosy.StringListNew; for j = 1 to 3 { RandomIndex = Round(Random(alfabe.Count - 1)); randomHarfler.Add(alfabe[RandomIndex]); } for j = 0 to randomHarfler.Count - 1 { harfListesi.Add(randomHarfler[j]); } // Karıştırma for k = 0 to harfListesi.Count - 1 { RandomIndex = Round(Random(harfListesi.Count - 1)); TempChar = harfListesi[k]; harfListesi[k] = harfListesi[RandomIndex]; harfListesi[RandomIndex] = TempChar; } // Karışık kelimeyi oluştur karisikKelime = ''; for k = 0 to harfListesi.Count - 1 { karisikKelime = karisikKelime + harfListesi[k]; } kelimeProLabel = oyunForm.AddNewProLabel(oyunForm, 'kelimeProLabel', karisikKelime); clComponent.SetupComponent(kelimeProLabel, '{ "Align": "Center", "MarginBottom": 350, "Width": 340, "Height": 60, "TextSize": 25, "TextHorizontalAlign": "Center", "TextVerticalAlign": "Center", "TextBold": "Yes", "BackgroundColor": "#fefbec", "RoundHeight": 8, "RoundWidth": 8, "BorderColor": "#94ae89", "BorderWidth": 2 }'); kelimeProLabel.Text = karisikKelime; } } |
|
NadireNurSaglam
Yeni Üye Kayıt Tarihi: 08 Ağustos 2024 Durum: Aktif Değil Puanlar: 37 |
Mesaj Seçenekleri
Yanıt Yaz
Alıntı NadireNurSaglam
Bu mesaj kurallara aykırıysa buradan yöneticileri bilgilendirebilirsiniz.
|
Merhaba.
Kodu bu şekilde düzenlediğimde ise formun ilk açılışında sıkıntı olmuyor ama form 2. defa açıldığında yani listedeki bir sonraki kelimeye geçip form yenilendiğinde kelimeProLabel = oyunForm.AddNewProLabel(oyunForm, 'kelimeProLabel', karisikKelime); yukarıdaki satırda aşağıdaki hatayı alıyorum: RUNTİME ERROR A component named kelimeProLabeI already exists when evaluating instruction CallProc Stack content is: [Integer:331807424,Integer:O,UnicodeString:cat,O.,.]. Source position: 94,88 Position: 94, 88. |
|
cagataycantay
Yeni Üye Kayıt Tarihi: 16 Mayıs 2024 Konum: Adana Durum: Aktif Değil Puanlar: 54 |
Mesaj Seçenekleri
Yanıt Yaz
Alıntı cagataycantay
Bu mesaj kurallara aykırıysa buradan yöneticileri bilgilendirebilirsiniz.
|
Çünkü her yeni kelime de kelimeProLabel bileşenini yeniden oluşturuyor, bir if bloğu ekleyerek ilk kelime de oluşturup diğer kelimeler için index artınca sadece text içeriğini değiştirerek bu hatayı çözebiliriz. Fonksiyonun düzeltilmiş hali: ------------------------------------------------------------------------------------------- function harfleriKaristir(List:TclStringList); var i,j, k, RandomIndex: Integer; harfListesi, alfabe, randomHarfler: TclStringList; TempChar: String; { alfabe = Clomosy.StringListNew; alfabe.Add('a'); alfabe.Add('b'); alfabe.Add('c'); alfabe.Add('d'); alfabe.Add('e'); alfabe.Add('f'); alfabe.Add('g'); alfabe.Add('h'); alfabe.Add('i'); alfabe.Add('j'); alfabe.Add('k'); alfabe.Add('l'); alfabe.Add('m'); alfabe.Add('o'); alfabe.Add('p'); alfabe.Add('q'); alfabe.Add('r'); alfabe.Add('s'); alfabe.Add('t'); alfabe.Add('u'); alfabe.Add('v'); alfabe.Add('w'); alfabe.Add('x'); alfabe.Add('y'); alfabe.Add('z'); if (kelimeIndex < List.Count) { orijinalKelime = List[kelimeIndex]; harfListesi = Clomosy.StringListNew; harfListesi.Capacity = Length(List[kelimeIndex]) + 3; for j = 1 to Length(orijinalKelime) { harfListesi.Add(Copy(orijinalKelime, j, 1)); } // Rasgele 3 harf ekleme randomHarfler = Clomosy.StringListNew; for j = 1 to 3 { RandomIndex = Round(Random(alfabe.Count - 1)); randomHarfler.Add(alfabe[RandomIndex]); } for j = 0 to randomHarfler.Count - 1 { harfListesi.Add(randomHarfler[j]); } // Karıştırma for k = 0 to harfListesi.Count - 1 { RandomIndex = Round(Random(harfListesi.Count - 1)); TempChar = harfListesi[k]; harfListesi[k] = harfListesi[RandomIndex]; harfListesi[RandomIndex] = TempChar; } // Karışık kelimeyi oluştur karisikKelime = ''; for k = 0 to harfListesi.Count - 1 { karisikKelime = karisikKelime + harfListesi[k]; } if(kelimeIndex == 0) { kelimeProLabel = oyunForm.AddNewProLabel(oyunForm, 'kelimeProLabel', karisikKelime); clComponent.SetupComponent(kelimeProLabel, '{ "Align": "Center", "MarginBottom": 350, "Width": 340, "Height": 60, "TextSize": 25, "TextHorizontalAlign": "Center", "TextVerticalAlign": "Center", "TextBold": "Yes", "BackgroundColor": "#fefbec", "RoundHeight": 8, "RoundWidth": 8, "BorderColor": "#94ae89", "BorderWidth": 2 }'); kelimeProLabel.Text = karisikKelime; } else kelimeProLabel.Text = karisikKelime; } }
|
|
Yanıt Yaz | |
Tweet |
Forum Atla | Forum İzinleri Kapalı Foruma Yeni Konu Gönderme Kapalı Forumdaki Konulara Cevap Yazma Kapalı Forumda Cevapları Silme Kapalı Forumdaki Cevapları Düzenleme Kapalı Forumda Anket Açma Kapalı Forumda Anketlerde Oy Kullanma |