Sınıflarda override property kullanmak mümkün mü?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
aseka

Sınıflarda override property kullanmak mümkün mü?

Mesaj gönderen aseka »

--
En son aseka tarafından 18 Mar 2008 09:06 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
selimr
Üye
Mesajlar: 556
Kayıt: 16 Eki 2003 02:07

Mesaj gönderen selimr »

beyaz renge boyama olayını SetGenislik proceduru yerine paint de yaparsan her değişiklikte boyama gerçekleşir sanırım..
aseka

Mesaj gönderen aseka »

--
En son aseka tarafından 18 Mar 2008 09:07 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
selimr
Üye
Mesajlar: 556
Kayıt: 16 Eki 2003 02:07

Mesaj gönderen selimr »

aslında diğer işlemleride paint olayında yapabilirsin diye düşünüyorum çünkü her değişiklik olduğunda boyama yeniden yapılacak ve bu arada senin diğer işlemlerinde yapılmış olacak..

illede sadece boyutlar değiştiğinde bu işlemleri yapmasını istiyorsan resize olayını kullanabilirsin diye düşünüyorum..
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Mesaj gönderen undefined »

Property override gibi birşeye hiç rastlamadım. Fakat getter ve setter fonksiyonları atasınıfta virtual tanımlanmışsa, bunları override edip istediğiniz amaca ulaşabilirsiniz.
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

"property Width: Integer read GetWidth write SetWidth;" şeklinde tanımlayın.

Kod: Tümünü seç

function BilesenAdi.GetWidth: Integer;
begin
  Result := inherited Width;
end;

procedure BilesenAdi.SetWidth(Value: Integer);
begin
  inherited Width := Value;
  //+ beyaza boyama fonksiyonu
end;
Kolay gelsin...
aseka

Teşekkür ederim...

Mesaj gönderen aseka »

--
En son aseka tarafından 18 Mar 2008 09:08 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Aslında bu çözüm gayet iyi bir çözüm. TImage için bir override operasyonu ile tüm mesele hallolabilir. Sadece paint metodunun override olması yeterli başka hiç bir tanıma gerek yok.

Kod: Tümünü seç

TWallPaper=class(TImage)
public
  procedure Paint; override;
end;

procedure TWallPaper.Paint;
begin
  inherited Paint;
  //Boyama kodları
end;
bu şekilde tasarlarsan sadece Width değil diğer tüm özellik değişimlerinden tetiklenecektir. Bir zamanlar bu şekilde tasarlayarak duvar kağıdı bileşeni yazmıştım.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevapla