Treeview Kullanımı
#1
genelde herkesin kullanmak istediği tablodan gelen verilerle treeviev olduğu için öncelikle bu tür uygulamalarda kesinlikle bir üste ki nod ile onun altındki nodun birbiri ile ilişliklendirilmesi gerekiyor

yani ekleyeceğim örnekten bahsedersek
brans tablosundaki id alanı ile isim tablosundaki id alanı birleşik ondan dolayı biz nodları alırken bu idleere bakarak nodları alıyoruz

yani ilk kodumuz birinci nodu yaptı Sosyalbilgiler bunun idsi 1 sonra alt nodu yapacak kodu çalıtırıyor ama burda neye dikkat ediyor isim tablosundaki id alanı 1 olanları süzüyor ve onlardan sosyal bilgiler altına isimleri nod olarak ekilyor bunu yaparkende her nodda bu sefer hobi tablosunu açıyor ve ordaki verileri isimid alanına göre süzüyor ve kişinin hobilerini getiriyor
sonuç şöyle bir şey oluyor

Sosyal Bilgiler

Ahmet
Kayak
Yüzme
bu işlemi her kişide yineliyor taki sosyal bilgilere ait isimler bitene kadar sonra türkçeye geçiyor ve ondaa aynı işlemleri yapıyor

bu şeiklde alt nodun alt nodu onun nodu onun nodu diyerek bir çok alt ata nodlar eklenebilir




bundan sonra kodlar üzerinde anlatalım öncelikle formunuza üzerine bir adet imagelist ekleyin bu bize treevievde tıklayınca kapanınca görünecek icon lar için lazım imageliste ise sağ tuş özellikler diğer özel tıklayın gelen ekranda ilk ekran iconların boyutu ile ilgil boş bırakın ikinci sekme icon ekleyeceğiniz sekme ordaki insert tuşuna tıklayarak iconları ekleyebilirsiniz sıralarına dikkat edin çünkü bu sırayı treeview kodunda kullancağız
ve tabiki bir de treewiev ekleyeceksiniz tabloları tarif etmiyorum ancak isimleri ve hangi alanlar ile bağlandıklarını söyleceğim

brans tablosu id alanı
isim tablosu id alanı ile bağlı
hobi tablosu id alanı
isim tablosu isimid alanı ile bağlı

Visual Basic
  1. Private Sub Form_Load()
  2.  
  3. 'öncelikle burda treeview i siliyoruz
  4. 'bu genellikle kişiye özell trreeview ler yapıldığında işe yarar yani
  5. 'formu kullanan kişiye özel bir treeview geliyorsa önceki kişiye ait
  6. 'treeview verilerini silmek için
  7. 'neyse biz yinede garanti olsun diye koyduk
  8. TreeView1.Nodes.Clear
  9. 'burda treeview yaapan fonsiyonu çağırıyoruz ve treeviewimizn adını fonksiyona gönderiyoruz
  10. Call treeyap(TreeView1)
  11. End Sub




bu treeview yapan fonksiyon
burdaki Tv değişkeni biz çağırıken treeviewvimizn ismin gönderdiğimiz değişken
Private Sub treeyap(Tv)
burda imagelist için bir control değişkeni yapıyoruz
Dim imgList As Control
burda imagelist değişkenini set ederk bunun form üzerindeki imagelistimiz olduğunu söylüyoruz
Set imgList = Me!ImageList0
burda treeviewmiizn yukarda değişkene atadığımız imagelisti kullanmasını iconları ordan getirmesini söylüyoruz
Tv.ImageList = imgList.Object
burda dao nesnesi yapıypruz ki tabloda verileri getireceğiz ayrıca bir tereekey değişkeni yapıyoruzki buna her bir farklı bir string veri atayarak nodların birbirine karışmasını engelleyeceğiz
Dim Rst As DAO.Recordset, treekey As String

burda strSQL değişkenine sorgumuz yazdık ki bunu rst rcorset nesnesi ile açacağız
strSQL = "Select * FROM brans "
işte burda rst nesnesini set ederk bunun currentdb yani içinde bulunduğumuz veritabanında bir tablonun brans tablsosunun sorgu ile açılmasını istiyoruz
Set Rst = CurrentDb.OpenRecordset(strSQL)
açılan tablonun yukardan aşağı doğru birer birer gidileceğini belirtiyoruz
While Rst.EOF = False
işte burda nodlarda kullanacağımız ve her nodu diğerinden ayıracak keyi üretiyoruz bunu tablodaki brans alanındaki verinin önüne PA kelimesi koyarak yapıyoruz
treekey = "PA" & Rst("bransi")

burada treeviewvimize nodları eklemesinii söylüyoruz nasıl her kayıtta bir nod yani sosyal bilgileri yerleştirmesini treekey alanınada bizim yukarda belirlediğimzi PASosyal Bilgiler olacak şekilde ayrıca burada gördünüz 1,2 rakamı imagelistteki 1 birinci icon 2 ise alt nod açıldıktan sora görünecek icon şayet sadece 1 olsa idi direkt her nodun önüne birinci icon gelecekti ve tıkladıktan sonrada aynı icon kalacktı
Tv.Nodes.Add(, , treekey, Rst("bransi"), 1, 2).Expanded = False
burada burada yaptığımız her nodun altına yapacağımız nodu getiriyoruz yani sosyal bilgilerin altına branşı sosyal bilgiler olan kişileri getiriyoruz burada dikkat edilemesi gereken rst(“id”) ile biz alt nodu alacağımız isim tablosunu süzeceğiz treekey ilede isim tablosundan getirdiğimiz isimlerin bu nodun alt nodu olduğunu belirteceğiz
alttreeyap Rst("id"), treekey
burada sosyal bilgileri yerleştirdikten sonra diğer kayda yani Türkçeye geç diyoruz ondan sonrada matematiğe sonraki kayıt sonraki kayıt
Rst.MoveNext
burada while döngüzünü kayıtlar bitince bitiryoruz
Wend
buradada rst ye atatıdığımız tabloyo kapatıyoruz
Rst.Close
Set Rst = Nothing
End Sub



buda bizim üst nodlara alacağımız alt nodları yapma fonksiyonu hemen hemen kod üstteki kod ile aynı burada sadece isimler tablosunu açıyoruz
burada alttreeidsi As Integer, altid As String diye sayı ve string alanı belirledik ve onlara yukardaki fonksiyonda bu fonksiyonda kullanmak üzere değerler atadık
Function alttreeyap(alttreeidsi As Integer, altid As String)
Dim Rst As DAO.Recordset, altreeid As String
İşte burada yukardaki fonksiyondan aldığımız brans tablosundaki kaytıtın id ile isim tablosunu süzdürüyoruz ki bize sadece yukardaki fonksiyonda hangi bransı nod olarak ekledi ise ona ait idye göre biz o nodun altına imleri ekleyelim
Set Rst = CurrentDb.OpenRecordset("Select * From isim where id=" & alttreeidsi)
While Rst.EOF = False
Buradada bu nodlarda kullanmak üzere bir key alanı belirliyoruz
altreeid = "H1" & Rst("adısoyadi")
işte burada altid ile aldığımız üst nodun keyini buna alt key olarak ekliyoruz ki bunun sosyal bilerin alt nodu olduğu bilinsin altreeid ise bu nodun farklı bir nod olduğu nu diğerleri ile karışmasını engelleyecek ve bize bu nodada bir alt nod ekleyecek isek ozaman işe yarayacak ki biz zaten bu nodada hobi nodu ekleceğiz ha buradaki 3 imagelisteeki üçüncü icon ayrıca buradaki expand ise bu nodun açıkmı kapalımı olacağını gösteriri true ise açık false ise kapalı
TreeView1.Nodes.Add(altid, 4, altreeid, Rst("adısoyadi"), 3).Expanded = False

Burada ise bu alt nod un alt nodunu yapacak alt nodu çağırıyoruz tabi hobi tablosunu isimid alanına göre süzerek getirmesi için buradaki her kayıtta rst(“isimid”) atamasını ve ayrıca yapılacak altnodun bu altnodun altnodu olduğunu belirtmek içinde altreeid alanını oraya gönderiyoruz
alttreenintreesiyap Rst("isimid"), altreeid
Rst.MoveNext
Wend
Rst.Close
Set Rst = Nothing
End Function



Buda altnodun alt nodunu yapmak için kod gerçi siz buna gerek görmezseniz silebilirsiniz yada bir alt nod daha ekleyecekseniz bu koddan bir kopya daha yapıp bu kod içinde çağıra bilirsiniz bu fonksiyonu anlatmayacağım çünkü yukrdaki fonksiyonlarla aynı

Visual Basic
  1. Function alttreenintreesiyap(alttreeidsi As Integer, altid As String)
  2. Dim Rst As DAO.Recordset, altreeid As String
  3. Set Rst = CurrentDb.OpenRecordset("Select * From hobi where id=" & alttreeidsi)
  4. While Rst.EOF = False
  5. altreeid = "H1" & Rst("hobiadi")
  6. TreeView1.Nodes.Add(altid, 4, altreeid, Rst("hobiadi"), 3).Expanded = False
  7. Rst.MoveNext
  8. Wend
  9. Rst.Close
  10. Set Rst = Nothing
  11. End Function




Örnek ektedir


buda kodun temiz hali

Visual Basic
  1. Private Sub Form_Load()
  2. TreeView1.Nodes.Clear
  3. Call treeyap(TreeView1)
  4. End Sub
  5. Private Sub treeyap(Tv)
  6. Dim imgList As Control
  7. Set imgList = Me!ImageList0
  8. Tv.ImageList = imgList.Object
  9. Dim Rst As DAO.Recordset, treekey As String
  10. strSQL = "Select * FROM brans "
  11. Set Rst = CurrentDb.OpenRecordset(strSQL)
  12. While Rst.EOF = False
  13. treekey = "PA" & Rst("bransi")
  14. Tv.Nodes.Add(, , treekey, Rst("bransi"), 1, 2).Expanded = False
  15. alttreeyap Rst("id"), treekey
  16. Rst.MoveNext
  17. Wend
  18. Rst.Close
  19. Set Rst = Nothing
  20. End Sub
  21.  
  22. Function alttreeyap(alttreeidsi As Integer, altid As String)
  23. Dim Rst As DAO.Recordset, altreeid As String
  24. Set Rst = CurrentDb.OpenRecordset("Select * From isim where id=" & alttreeidsi)
  25. While Rst.EOF = False
  26. altreeid = "H1" & Rst("adısoyadi")
  27. TreeView1.Nodes.Add(altid, 4, altreeid, Rst("adısoyadi"), 3).Expanded = False
  28. alttreenintreesiyap Rst("isimid"), altreeid
  29. Rst.MoveNext
  30. Wend
  31. Rst.Close
  32. Set Rst = Nothing
  33. End Function
  34.  
  35.  
  36. Function alttreenintreesiyap(alttreeidsi As Integer, altid As String)
  37. Dim Rst As DAO.Recordset, altreeid As String
  38. Set Rst = CurrentDb.OpenRecordset("Select * From hobi where id=" & alttreeidsi)
  39. While Rst.EOF = False
  40. altreeid = "H1" & Rst("hobiadi")
  41. TreeView1.Nodes.Add(altid, 4, altreeid, Rst("hobiadi"), 3).Expanded = False
  42. Rst.MoveNext
  43. Wend
  44. Rst.Close
  45. Set Rst = Nothing
  46. End Function




Eklenti Dosyaları
.rar   treewiev.rar (Boyut: 85,2 KB / İndirilme: 495)



  Alıntı
Bu mesajı beğenenler:
#2
bir sonraki anlatım bu nodlara tıklanınca veriyi alma ve bu veriyi form açma bilgi getirme amaçlı kullanma



  Alıntı
Bu mesajı beğenenler:
#3
Sayın esrefigit;
Çalışmanızın devamını bekliyoruz. Paylaşımınız faydalı oluyor.
Örneği inceledikten sonra birtakım cevap bulunması gereken sorular meydana çıkıyor. Bunlar;
1 - Kodun içerisinde dikkatimi çeken birşey var. Son günlede ADO Ve DAO isimlerini çok duyar olduk. Sizin verdiğiniz kodların içerisinde de DAO geçiyor. Orada DAO değilde ADO olsaydı kodlar çalışmazmıydı.
2 - Nod diye kelime geçiyor. Bu nedir? Herhangi birşeyin kısaltılmışı mı? Yoksa kod içerisinde bir isimlendirme mi?
3 - Açılışta treeview ana düğmeler (branş) ve alt düğmeleri (adsoyad) kapalı tutamayız mı?
4 - Bu düğmelere (alt düğmeler) kod yükleyerek ilgili rapor ve form sayfası açabilir miyiz? Form veya rapor sayfalarında işimiz bitip çıktığımızda (kapattığımızda) tekrar ana sayfaya (treeview) geri dönüş yapsın.
5 - Ana düğmenin sol tarafındaki açılır-kapanır (kırmızı-yeşil) resimleri nasıl değiştirebiliriz. Müdahale etme şansımız var mı?

Teşekkürler



  Alıntı
Bu mesajı beğenenler:
#4
soru 1 ado olsa da olurdu farkeden bir şey olmazdı
soru 2 nod diye geçen kelime treeviewe yerleştirilen her bir satır
soru 3 kapalı tutulur zaten açıklamaları tekrar ve tam olarak okursanız nasıl kapatılıp açılacağını yazmışım(buradaki expand ise bu nodun açıkmı kapalımı olacağını gösteriri true ise açık false ise kapalı
TreeView1.Nodes.Add(altid, 4, altreeid, Rst("adısoyadi"), 3).Expanded = False
)
soru 4 olur zaten bundan sonraki aşamada ondan bahsedeceğimi söylemişim (ancak sayın taruz eklediği örnek ile buna gerek kalmayacağını gösterdi onun eklediği örnek ile sanırım daha iyi anlaşılır tekrar benim bu konu üzerinde durmama gerek kalmadı )
soru 5 icon ların nasıl değişeceğini sormuşsunuz şayet açıklamaları okumuş olsaydınız onuda açıkladığımı görürdünüz(imageliste ise sağ tuş özellikler diğer özel tıklayın gelen ekranda ilk ekran iconların boyutu ile ilgil boş bırakın ikinci sekme icon ekleyeceğiniz sekme ordaki insert tuşuna tıklayarak iconları ekleyebilirsiniz sıralarına dikkat edin çünkü bu sırayı treeview kodunda kullancağız)



  Alıntı
Bu mesajı beğenenler:
#5
Sayın esrefigit;
Faydalı çalışmanıza ve bilginize teşekkür ederim.
Çalışmanıza kaldığınız yerden devam etmenizi, dolayısıyla tamamlamanızı rica ediyorum. Çünkü her açılan konunun kendine göre ifade tarzı vardır. Ve her konu birbirinden farklı olarak ziyaretçiler tarafından okunur ve değerlendirmeye alındıktan sonra beğenilerini kazanır. Ki bütün konularda emeği geçen herkese sonsuz teşekkürler. Düşünsenize üniversite okuyup, mezun oluyoruz. Ve üniversite bilgileri ile iş hayatına uygulamak istediğimizde çok farklı olduğunu anlayıp ve reform yapmaya başlıyoruz. Ve anlıyoruz ki, okul bilgileri ile iş hayatındaki bilgileri (teorik ve pratik) birbirinden farklılıklarını tespit edip, iş hayatına uyarlamaya çalışıyoruz.
Özetlemek gerekirse teori ve pratik kavramları birbirinden farklıdır.
Bu beyandan sonra sizinde çalışmanıza devam ederek tamamlamanızı istirham ediyorum.
Saygılarımla,



  Alıntı
Bu mesajı beğenenler:
#6
sayın akay sanırım böylesine bir açıklama kimsenin ilgisini çekmemiş bir tek sen hariç aslında formda bir çok treeview örneği var benim onların üzerine bu örneği eklemem bile hataydı demekki herkes tarafından treeview uygulamaları biliniyor neyse elimize sağlık kimbilir belki bir gün birinin işine yarar



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  ACCESS SQL SERVER BAĞLANTISI VE AĞDA KULLANIMI. Mecnun24 7 4.721 09-09-2024, 17:40
Son Mesaj: karaayhan
access-sql-12 ActiveX: TreeView Örnekleri Mehmet Eser 8 10.492 26-12-2023, 04:33
Son Mesaj: adnnfrm
access-sql-2 ** Sorgu Da Fonksiyon(deyim) Kullanımı (uygulama) ** dsezgin 1 1.296 02-10-2023, 06:38
Son Mesaj: BeyTor
  Çok Kullanışlı Bir Treeview Örneği Taruz 43 33.789 15-01-2015, 17:54
Son Mesaj: huzun_bulutu
  Treeview elemanlarını sürükle-bırak ile sıralama Zeki Gürsoy 11 7.261 15-02-2014, 15:20
Son Mesaj: mevlutkirac
  RTF2 denetimi kullanımı hace32 1 1.905 20-09-2013, 13:22
Son Mesaj: onur_can
  access nesne kontrol ve özellikleri + treeview sdemirhan2478 15 9.868 29-01-2011, 22:49
Son Mesaj: assenucler

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi