Class içinde Collection kullanımı hk.

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,049
Excel Vers. ve Dili
Office 2013 İngilizce
Arkadaşlar iyi bayramlar.
Mutlu ,sağlıklı ve huzurlu bayramlar dilerim.

Ekli dosyada class (clsSiparis) ile çalışan uygulamayı web' de buldum, kendime göre uyarlamaya çalışıyorum.

Buradaki Collection olayının çalışma mantığını bir türlü çözemedim,
Bildiğim kadarıyla; Collection nesnelerine eklediğiniz her elemana, kolay erişim için bir de anahtar ekliyoruz ve bu sayede anahtar kullanarak istediğimiz elemanı çekebiliyoruz.

Ekli dosyada her bir Label Collection içine alınıyor, btnSiparisDetay butonuna tıklandığı zaman ilgili butonun bulunduğu satırdaki tüm nesne bilgilerini getirilebilmekte;

Öğrenmek istediğim burada kaçıncı satırda işlem yapıldığı nasıl anlaşılmakta? Collection içinden bu değerler nasıl çekiyor?

Desteğiniz için şimdiden Teşekkürler,

Kod:
Public WithEvents btnSiparisDetay     As MSForms.Label

Public acSip As clsSiparis
Public acCol As New Collection
Kod:
Set acSip = New clsSiparis
                
                Set acSip.SiparisId = SiparisId
                Set acSip.tdSiparisTarih = tdSiparisTarih
                Set acSip.tdSiparisVeren = tdSiparisVeren
                Set acSip.tdSiparisTedarikci = tdSiparisTedarikci
                Set acSip.tdSiparisAciklama = tdSiparisAciklama
                Set acSip.tdSiparisToplamAdet = tdSiparisToplamAdet
                
                Set acSip.btnSiparisDetay = btnSiparisDetay
                
                Set acSip.mFrame = mFrame
                Set acSip.myform = myform
                acCol.Add acSip
Kod:
Private Sub btnSiparisDetay_Click()
Dim tt As Integer
''On Error Resume Next

tt = CInt(btnSiparisDetay.Tag)

If Not IsNumeric(tt) Then Exit Sub

MsgBox tdSiparisAciklama, vbOKOnly, tdSiparisTedarikci

End Sub
 

Ekli dosyalar

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,345
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Tamer Bey;

VB/VBA' de Collection nesnesinde normal değerler saklanabildiği gibi, nesneler de saklanabilir. Eğer bir kayıt simulasyonu olarak kullanılacaksa bir nesnenin temel üyelerinden biri olan Property/Field üyesi kullanılarak yapılabilir. Ki, ekli dosyanızda da bu yapılmış. Ayrıca Collection yalnız bu amaçla da kullanılmaz. Scripting.FileSystemObject nesnesindeki FileS ve File özellikleri buna en somut, en bilinen örnektir.

Sorunuzda hangi ya da kaçıncı satır indexi olduğunu nasıl bildiğini merak ettiniz... Dikkat ederseniz, btnSiparisDetay_Click isimli metotda butonun Tag özelliğinden satır index numarasını almış. Bu index numrasını da Collection nesnesinde aratmış... olay bu.

Söz konusu butonlar da (aslında bir Label nesnesi) çalışma zamanı oluşturulmuş ve Recordset' in her dönüşünde yeni bir tane form üzerine çizmiş; Tag özelliğini de satır index numarasını vermiş.

Her ne kadar basit bir bir çalışma olsa da, ileri düzey programlama bilgisi gerektiren bir konu (çalışma zamanı control ekleme ve event yakalama, kayıt niteliğinde Class module kullanımı/Collection) olduğundan sizi yorabilir.

Eğer merak ettiğiniz Userform class module kod birleştirme... soru başlığı ile ilgisi ise, pek yakınından geçtiğini söyleyemem açıkçası.

.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,049
Excel Vers. ve Dili
Office 2013 İngilizce
Tamer Bey;

VB/VBA' de Collection nesnesinde normal değerler saklanabildiği gibi, nesneler de saklanabilir. Eğer bir kayıt simulasyonu olarak kullanılacaksa bir nesnenin temel üyelerinden biri olan Property/Field üyesi kullanılarak yapılabilir. Ki, ekli dosyanızda da bu yapılmış. Ayrıca Collection yalnız bu amaçla da kullanılmaz. Scripting.FileSystemObject nesnesindeki FileS ve File özellikleri buna en somut, en bilinen örnektir.

Sorunuzda hangi ya da kaçıncı satır indexi olduğunu nasıl bildiğini merak ettiniz... Dikkat ederseniz, btnSiparisDetay_Click isimli metotda butonun Tag özelliğinden satır index numarasını almış. Bu index numrasını da Collection nesnesinde aratmış... olay bu.

Söz konusu butonlar da (aslında bir Label nesnesi) çalışma zamanı oluşturulmuş ve Recordset' in her dönüşünde yeni bir tane form üzerine çizmiş; Tag özelliğini de satır index numarasını vermiş.

Her ne kadar basit bir bir çalışma olsa da, ileri düzey programlama bilgisi gerektiren bir konu (çalışma zamanı control ekleme ve event yakalama, kayıt niteliğinde Class module kullanımı/Collection) olduğundan sizi yorabilir.

Eğer merak ettiğiniz Userform class module kod birleştirme... soru başlığı ile ilgisi ise, pek yakınından geçtiğini söyleyemem açıkçası.

.
Çok teşekkür ederim Zeki Hocam,
emeğinize sağlık!
 
Katılım
5 Kasım 2006
Mesajlar
592
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
İyi Bayramlar.
Konu ile alakası yok ama dictionary ve class ortak kullanımını inceleyebilirsiniz dictionary de exists ile varmı olayı var.

 
Üst