Sayfayı Yazdır | Pencereyi Kapat

if olasılığının karşılanmaması

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=588
Tarih: 23 Ocak 2025 Saat 15:42
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: if olasılığının karşılanmaması
Mesajı Yazan: umutbilici
Konu: if olasılığının karşılanmaması
Mesaj Tarihi: 07 Mayıs 2024 Saat 21:26
butona basılıncaa resmin animasyonlu şekilde büyümesini ve resmi aynı zamanda ortalamasını istediğim kod, resmin büyüklüğü en fazla 200 olması lazım ama 200 olduktan sonra sola gitmeye(sanırsam else altında olan clAnimateFloat(resim1,'Position.X',resim1.Position.X - deger / 2,2,1,0); kodu çalışıyor) devam ediyor yardımcı olur musunuz? (deger: 20)

void buyultme
var
sagdanposx,alttanposy,aradeger,aradegeren:Integer
{
sagdanposx=resim1.Position.X+resim1.Width
alttanposy=resim1.Position.Y+resim1.Height
  if(((deger>200-resim1.Height) && (200-resim1.Height>0)) || ((deger>200-resim1.Width) && (200-resim1.Width>0)) ) 
  {
   aradegerboy=200-resim1.Height
   aradegeren=200-resim1.Width
   clAnimateFloat(resim1,'Height',200,2,1,0);
   clAnimateFloat(resim1,'Position.X',resim1.Position.X - aradegeren / 2,2,1,0);
   clAnimateFloat(resim1,'Position.Y',resim1.Position.y - aradegerboy / 2,2,1,0);
    //resim1.Height=200
    //resim1.Width=200
    //resim1.Position.X=resim1.Position.X - aradegeren / 2
    //resim1.Position.Y=resim1.Position.Y - aradegerboy / 2
    //ShowMessage(resim1.Height);
    
  }
  else if((resim1.Height+deger>200) || (resim1.Width+deger>200))
  {
    ShowMessage('Büyütme Sınırına Ulaştınız!');
    //ShowMessage(resim1.Height); //KONTROL
  }
  else if((resim1.Position.X<deger) || (sagdanposx+20>resimpanel.Width))
  {
    ShowMessage('Sınırları Aşamazsınız!');
  }
  else if((resim1.Position.Y<deger) || (alttanposy+20>resimpanel.Height))
  {
    ShowMessage('Sınırları Aşamazsınız!');
  }
  else
  {
    clAnimateFloat(resim1,'Height',resim1.Height+deger,2,1,0);
    //resim1.Height=resim1.Height+deger
    clAnimateFloat(resim1,'Width',resim1.Width+deger,2,1,0);
    //resim1.Width=resim1.Width+deger
    clAnimateFloat(resim1,'Position.X',resim1.Position.X - deger / 2,2,1,0);
    //resim1.Position.X=resim1.Position.X - deger / 2
    clAnimateFloat(resim1,'Position.Y',resim1.Position.Y - deger / 2,2,1,0);
    //resim1.Position.Y=resim1.Position.Y - deger / 2
    //ShowMessage(resim1.Height); //KONTROL
  }
}



Cevaplar:
Mesajı Yazan: BilalCndn
Mesaj Tarihi: 08 Mayıs 2024 Saat 11:56
Merhaba Umut,

Kodu inceledim. Resmin boyutu 180(200-deger)e ulaşasıya kadar butona her tıkladığında 'else' kod bloğu çalışıyor. 180nin üzerine çıktığında ise en üstteki 'if' kısmı çalışıyor. Burada görselin yüksekliği 200 oluyor fakat görselin genişliği son değerinde sabit kalıyor. Bu sebeple butona her tıkladığında tekrar tekrar bu 'if' çalışıyor ve görselin boyutu değişmeden sadece konumu değişiyor. Yapman gereken değişiklik aşağıdaki gibidir.

if(((deger>200-resim1.Height) && (200-resim1.Height>0)) || ((deger>200-resim1.Width) && (200-resim1.Width>0)) ) 
  {
   aradegerboy=200-resim1.Height;
   aradegeren=200-resim1.Width;
   clAnimateFloat(resim1,'Height',200,2,1,0);
   clAnimateFloat(resim1,'Width',200,2,1,0); //Eklediğim satır
   ShowMessage('Genişlik: ' + FloatToStr(resim1.Width) + ' Yükseklik: ' + FloatToStr(resim1.Height)); //Kontrol 
   clAnimateFloat(resim1,'Position.X',resim1.Position.X - aradegeren / 2,2,1,0);
   clAnimateFloat(resim1,'Position.Y',resim1.Position.y - aradegerboy / 2,2,1,0);
    //resim1.Height=200
    //resim1.Width=200
    //resim1.Position.X=resim1.Position.X - aradegeren / 2
    //resim1.Position.Y=resim1.Position.Y - aradegerboy / 2
    //ShowMessage(resim1.Height);
    
  }

Sorununun çözüme ulaşıp ulaşmadığı ile ilgili geri dönüşünü bekliyorum.
İyi çalışmalar diliyorum.


Mesajı Yazan: umutbilici
Mesaj Tarihi: 08 Mayıs 2024 Saat 18:20
teşekkür ederim ben sola doğru hareket ettiği için clAnimateFloat(resim1,'Position.X',resim1.Position.X - aradegeren / 2,2,1,0);koduyla alakalı bi sıkıntı olduğunu düşünmüştüm ona hiç dikkat etmemiştim



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