Delphi Can

Orjinalini görmek için tıklayınız: Create Edilen Clasları bulup kontrollu free etmek
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Merhaba,
Uygulamamda bir listem ve page kontrolum var ve sağ tık ile yeni sekme açıyorum içerisine classımı create ediyorum bu şekilde 2,3 sekme açıyorum. (bunlar uzak masaustu baglantısı) açtıktan sonra mesela sadece 2 page kapatınca 2. page için create edilen classımın eventlerini (connect ,disconnect gibi) yakalamak, ve o classı da free etmek istiyorum anlatabildim mi bilmiyorum.

Bunları nasıl yakalayabilirim ? bu classtan kaç tane create edilmiş hangidi bu page için create edileni,
(17-09-2016, Saat: 15:03)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.anlatabildim mi bilmiyorum.
Gerçekten anlatımda biraz sıkıntı var gibi Sad

Ben anladığım kadarıyla cevap vermeye çalışayım, umarım yanlış anlamamışımdır :
Problemin çözümü için birçok yöntem bulunabilir. Benim ilk aklıma gelden TDictionary oldu. Örneğin:
Dictionary: TDictionary<String, TSeninCreateEttiginClass>;
şeklindeki bir değişken olduğunu düşünelim. Sen her yeni sekme açtığında bu sözlüğe (Dictionary) o sekmenin ismiyle birlikte yeni oluşturduğun sınıfı eklersin.
YeniSinif := TSeninCreateEttiginClass.Create;
// bla bla
// ...
Dictionary.Add('YeniSekmeninIsmi', YeniSinif);
Sekme kapatılırken TDictionary içinde kapatılan sekmenin ismiyle arama yapıp ilgili YeniSinif'ını bulabilirsin(ContainsKey, TryGetValue)


Sınıfın event'lerini yakalama mevzusuna gelince:
Event tanımı içinde parametrelerden birisini TSeninCreateEttiginClass yapıp, class içinde değer verirken Self kullanırsan daha sonra bu event tetiklendiğinde kime ait olduğunu anlarsın.

Bu sefer de ben umarım anlatabilmişimdir Big Grin

Aklıma gelen bir başka yöntem de Tuğrul Bey'in daha önce tavsiye ettiği Tag özelliğini kullanmak. Yeni oluşturulan sekmenin Tag'ı içinde yeni oluşturulan class'ın pointer'ını saklayabilirsin.
Demek ki doğru anlata bilmişim, Cevap gayet anlaşılır oldu Wink
TDictionary olayını kullanmamştım daha önce bir deneyim bakalım.