buda seçili noda kadar olan nodları açma kodu
Kod:
Private Sub Komut40_Click()
Dim sd As Integer
Dim Node As MSComctlLib.Node
sd = TreeView1.Nodes(TreeView1.SelectedItem.Index).Index
Dim i As Integer
Dim strNodes As String
For i = 1 To sd
With TreeView1.Nodes(i)
.Expanded = True
Call sec
End With
Next i
End Sub
4.sorunda halledilmiş oldu
Merhaba,
Şimdi uyguluyorum verdiklerinizi. Bitince mesajı güncelleyeceğim, ekle. Teşekkürler.
Başlangıçta seçimi eşitleme ve id aktarımı oldu.
Fakat, Seçimi Aç kodu çalışmadı, ya da çalıştı ama ben farklı bir şey demek istedim. Diyelim ki:
Pansiyon > Erkek > Birinci kat oda dalını seçtim.
id'si = 38'dir. Tüm dallar açık, kapalı veya seçimin yanında birkaç dal daha açık olabilir.. Seçimi Aç'a tıkladığımızda sadece Pansiyon dalı ve seçim olan 38 id'ye kadar dalların açık olmasını, bu dala giden dal dışında aynı gurup altındaki dalların bile kapalı olmasını istiyorum. Tüm TreeView'de sadece seçime giden dallar açık gerisinin kapalı olmasını istiyorum. Bu sayede hangi birim üzerinde işlemler yapılıyor ya da yeni birim eklenince konumu nedir görsel olarak gösterecek ve emin olmamızı sağlayacak.
Seçimi Aç kodunu da fonksiyon olarak yazdım, çünkü her kayıt gezintisinden sonra TreeView de değişecek ve dönüt verecek bu sayede. Ayrıca yeni kayıt eklemekten vazgeçince son incelenen kayda geri döndüreceğimden bu kodu fonksiyon olarak kullanmak istedim.
Teşekkürler.
gelinen kaydın nodunu açma olayıda eklendi ve örnek ektedir şimdi ben sizin bir önceki sorunuz yanlış anladım siz ilgili nodların tümünün açılamsını istiyormuşsunuz
neyse onuda yaparız şu anda kayıt gezinti tuşları ile gezinirken hangi kayıtta iseniz o nod açılır şekliörnektedir
ve onuda yaptık denemeyi pansiyon üzerinde yapın ondaki ali ye tıkladıktan sonra seçimi aça tıklayın
mantık şöyle çalışyor önce nodun ilk child ini buluyor ve onu açıyor eğer başka child yoksa kod duruyor şayet varsa bir sonraki childi açmak için diğer child açma kodu çağırıyor
gerçekten bende önce bu ne işe yarayacak diye merak ediyordum ancak düşünsenize onun childi onun childi derken bir sürü birbiri üzerine açılan child ler var işte onları yani seçilen nodun childlerini topluca açmaya yarıyor
Merhaba,
Örneğinizi hayranlıkla inceledim. Tam istediğim şey idi. Gayet güzel çalışıyor. İlk başta modül eklenince örneğe sandım işler yine anlamayacağım şekilde karışacak. Ama modül içindekiler de gayet anlaşılır ve öz idi.
Zaten bir önceki isteğimle bu yaptığınız aynı idi. Burdaki kodu Seçimi Aç düğmesine uyarladım. Aynı görevi görüyor:
Kod:
Private Sub Komut40_Click()
Treeviewara (Me.BirimId)
End Sub
Bu özelliği yeni kayıt eklendikten sonra da çalıştıracağım, nereye eklenmiş hemen gösterecek.
Şu an TreeView'de seçili kaydı buldurmakla ilgili sorun kalmadı Eşref Bey, teşekkür ediyorum.
Seçili dal silindiğinde ona ait dalların tümünü silsin şeklinde uyarlayabilir misiniz? Önceki örneğinizde ara dalları silince ya da çok alt dalı olanlarda hata vermişti. Ben de merakla bekliyorum nasıl bir döngü olacak bu iş?
Önceden bahsettiğiniz sürükleme yöntemi bu örneğe de uygulanabilir mi? Bir dalı başkasının üzerine sürükleyince sürüklenen dalın BirimUstId'si yeni dalın BirimId'si olacak. Sanırım bu şekilde tüm alt dalları da taşınmış olur.
Sağlıkla, esen kalınız.
bu koduda yazarsanız aynı menüler gibi üzerine mouse okunu getirdikçe kendiliğinden seçim gerçekleşir ve expand olanlar otomotik açılır
Kod:
Private Sub TreeView1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Long, ByVal y As Long)
Dim esr As Node
Set esr = TreeView1.HitTest(x, y)
If Not esr Is Nothing Then
esr.Selected = True
End If
End Sub
yalnız unutmadan label edit manuel olacak
sayın mehmet eser kardeş birde buna drag drop uygularsak işin cılkı cıkacak sadece bir formda bir sürü kod olacak ancak birz ara vermek zorundayım sınavım var ona çalışmak zorundayım çalışmaktan sıkıldığım bir arada yapabilirim
birde değişik bir uygulma bu uygulamadada treeview de üzerinde gezdiğiniz kayda tıklamadan formda aynı anda gösteriyor
Kod:
Private Sub TreeView1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Long, ByVal y As Long)
Dim nodSelected As MSComctlLib.Node
Set nodSelected = Me.TreeView1.SelectedItem
Dim Node2 As Node
Set Node2 = TreeView1.HitTest(x, y)
If Not Node2 Is Nothing Then
Node2.Selected = True
End If
If nodSelected.Key Like "AZ*" Then
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[PERSONELNO] = " & Str(Nz(Mid(nodSelected.Key, 3), 0))
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
rs.Close
Else
End If
End Sub
Merhaba,
Sağolun. Çok güzel oldu. 2. Koddaki fare üzerine gelince kayıt eşitleme gezmek için ideal, düzenleme modu için kovalamaca havası olacak. Duruma göre mutlaka eklenmesi gerken güzel bir kod. Herşeyiyle tam takır bir TreeView başvurusu oldu sayenizde. Bu derece başarılı ve işlevsel bir örnek yabancı forumlarda bile yok bu konuda.
Drag konusunda, evet sizi yordum farkındayım. En azından silme olayını yakın zamanda halledebilirseniz memnun olurum. Dediğiniz drag şimdi elzem değil ama olursa profesyonel uygulamalarda olduğu gibi konforlu bir kullanım sunacak.
Sınavınızda başarılar dilerim. Sıvanı etkileyecekse silme olayı da bekleyebilir boş zamanınızı, beklerim daha iyi olur.
Böyle bir başvuru hazırladığınız için Allah razı olsun. Sağlıkla kalın.