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ı
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ı
Örnek ektedir
buda kodun temiz hali
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
- Private Sub Form_Load()
-
- 'öncelikle burda treeview i siliyoruz
- 'bu genellikle kişiye özell trreeview ler yapıldığında işe yarar yani
- 'formu kullanan kişiye özel bir treeview geliyorsa önceki kişiye ait
- 'treeview verilerini silmek için
- 'neyse biz yinede garanti olsun diye koyduk
- TreeView1.Nodes.Clear
- 'burda treeview yaapan fonsiyonu çağırıyoruz ve treeviewimizn adını fonksiyona gönderiyoruz
- Call treeyap(TreeView1)
- 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
- Function alttreenintreesiyap(alttreeidsi As Integer, altid As String)
- Dim Rst As DAO.Recordset, altreeid As String
- Set Rst = CurrentDb.OpenRecordset("Select * From hobi where id=" & alttreeidsi)
- While Rst.EOF = False
- altreeid = "H1" & Rst("hobiadi")
- TreeView1.Nodes.Add(altid, 4, altreeid, Rst("hobiadi"), 3).Expanded = False
- Rst.MoveNext
- Wend
- Rst.Close
- Set Rst = Nothing
- End Function
Örnek ektedir
buda kodun temiz hali
Visual Basic
- Private Sub Form_Load()
- TreeView1.Nodes.Clear
- Call treeyap(TreeView1)
- End Sub
- Private Sub treeyap(Tv)
- Dim imgList As Control
- Set imgList = Me!ImageList0
- Tv.ImageList = imgList.Object
- Dim Rst As DAO.Recordset, treekey As String
- strSQL = "Select * FROM brans "
- Set Rst = CurrentDb.OpenRecordset(strSQL)
- While Rst.EOF = False
- treekey = "PA" & Rst("bransi")
- Tv.Nodes.Add(, , treekey, Rst("bransi"), 1, 2).Expanded = False
- alttreeyap Rst("id"), treekey
- Rst.MoveNext
- Wend
- Rst.Close
- Set Rst = Nothing
- End Sub
-
- Function alttreeyap(alttreeidsi As Integer, altid As String)
- Dim Rst As DAO.Recordset, altreeid As String
- Set Rst = CurrentDb.OpenRecordset("Select * From isim where id=" & alttreeidsi)
- While Rst.EOF = False
- altreeid = "H1" & Rst("adısoyadi")
- TreeView1.Nodes.Add(altid, 4, altreeid, Rst("adısoyadi"), 3).Expanded = False
- alttreenintreesiyap Rst("isimid"), altreeid
- Rst.MoveNext
- Wend
- Rst.Close
- Set Rst = Nothing
- End Function
-
-
- Function alttreenintreesiyap(alttreeidsi As Integer, altid As String)
- Dim Rst As DAO.Recordset, altreeid As String
- Set Rst = CurrentDb.OpenRecordset("Select * From hobi where id=" & alttreeidsi)
- While Rst.EOF = False
- altreeid = "H1" & Rst("hobiadi")
- TreeView1.Nodes.Add(altid, 4, altreeid, Rst("hobiadi"), 3).Expanded = False
- Rst.MoveNext
- Wend
- Rst.Close
- Set Rst = Nothing
- End Function

