Treeview elemanlarını sürükle-bırak ile sıralama
#1
Faydalı olmasını dilerim...

[Resim: attachment.php?aid=10065]

Visual Basic
  1. Private mobjSourceNode As Node
  2. Private mobjTargetNode As Node
  3.  
  4. Private Sub Form_Load()
  5. Set mobjSourceNode = Nothing
  6. Set mobjTargetNode = Nothing
  7.  
  8. With Me.TreeView0
  9. 'Treeview için gerekli ayarları yap
  10. .ImageList = Me.ImageList1.Object
  11. .LabelEdit = tvwManual
  12. .LineStyle = tvwRootLines
  13. .Style = tvwTreelinesPlusMinusPictureText
  14. .Font.Bold = True
  15. .Font.Size = 14
  16. .OLEDragMode = ccOLEDragAutomatic
  17. .OLEDropMode = ccOLEDropManual
  18.  
  19. 'Elemanları ekle
  20. With .Nodes
  21. .Add , , "r", "Menü"
  22. .Add "r", 4, "r1", "Bir", 1
  23. .Add "r", 4, "r2", "İki", 2
  24. .Add "r2", 4, "r21", "İki Bir", 4
  25. .Add "r21", 4, "r22", "İki İki", 1
  26. .Add "r", 4, "r3", "Üç", 3
  27. .Add "r", 4, "r4", "Dört", 2
  28. .Add "r", 4, "r5", "Beş", 4
  29. .Add "r5", 4, "r51", "Beş Bir", 1
  30. .Add "r5", 4, "r52", "Beş İki", 2
  31. .Add "r52", 4, "r53", "Beş Üç", 4
  32. .Add "r53", 4, "r54", "Beş Dört", 3
  33. .Add "r", 4, "r6", "Altı", 1
  34. End With
  35.  
  36. 'En baştaki elemanın dalını aç
  37. .Nodes(1).Expanded = True
  38.  
  39. End With
  40. End Sub
  41.  
  42. Private Sub TreeView0_MouseDown(ByVal Button As Integer, _
  43. ByVal Shift As Integer, _
  44. ByVal x As Long, ByVal y As Long)
  45. 'Sürüklenecek elemanın ne olduğunu bilmek için fare ile dokunmak gerek
  46. '"Menü" isimli elemana ait alt eleman olmalı
  47. 'Menü isimli elemana dokunulduğunda sahibi olmadığı için hatayı pas geç (parent)
  48. On Error Resume Next
  49. If Button = 1 Then
  50. If Not Me.TreeView0.HitTest(x, y) Is Nothing And _
  51. Me.TreeView0.HitTest(x, y).Parent.Key = "r" Then
  52.  
  53. Set mobjSourceNode = Me.TreeView0.HitTest(x, y)
  54.  
  55. End If
  56. End If
  57. End Sub
  58.  
  59. Private Sub TreeView0_OLEDragDrop(Data As Object, Effect As Long, _
  60. Button As Integer, Shift As Integer, _
  61. x As Single, y As Single)
  62. 'Fare sürüklenirken bırakıldığında(sıralalama burada yapılacak)
  63. If Not mobjTargetNode Is Nothing And Not mobjSourceNode Is Nothing Then
  64. If mobjTargetNode.Key <> "r" Then
  65. Dim col As New Collection
  66.  
  67. Set obj = mobjSourceNode.Parent.Child
  68. Do Until obj Is Nothing
  69. col.Add obj.Key, obj.Key
  70. Set obj = obj.Next
  71. Loop
  72.  
  73. c = col(mobjSourceNode.Key)
  74.  
  75. col.Remove (c)
  76. col.Add c, c, mobjTargetNode.Key
  77. For j = col.Count To 1 Step -1
  78. Set Me.TreeView0.Nodes(col(j)).Parent = Me.TreeView0.Nodes("r")
  79. Next
  80. End If
  81. End If
  82. End Sub
  83.  
  84. Private Sub TreeView0_OLEDragOver(Data As Object, Effect As Long, _
  85. Button As Integer, Shift As Integer, _
  86. x As Single, y As Single, State As Integer)
  87. 'Fare tutulu sürüklenirken
  88. If Button = 1 Then
  89. Set mobjTargetNode = Me.TreeView0.HitTest(x, y)
  90. If Not mobjTargetNode Is Nothing Then
  91. If mobjTargetNode.Key <> "r" Then _
  92. Me.TreeView0.DropHighlight = mobjTargetNode
  93. Else
  94. Me.TreeView0.DropHighlight = Nothing
  95. End If
  96. End If
  97. End Sub





Eklenti Dosyaları
.rar   Treeview_Drag_Drop.rar (Boyut: 141,55 KB / İndirilme: 315)
.jpg   treeview.jpg (Boyut: 28,74 KB / İndirilme: 539)



  Alıntı
Bu mesajı beğenenler:
#2
Teşekkürler
Zeki Gürsoy



  Alıntı
Bu mesajı beğenenler:
#3
access-sql-11 
Merhaba Zeki Bey,

Her zamanki gibi değişik bir konuda çözümle geldiniz. Teşekkürler.

Zamanında bir noktaya kadar hazırladığım(bolca yardımla tabii sağolsunlar) bir yapı var. Sizinkinden farklı olarak Tabloya dayanıyor. Tablo yapısı da biraz farklı.

Örneğinizde alt dalları değil de ana sırayı değiştiriyor.

Örneğimdeki herhangi bir birimi sürüklediğimde yerinin değişmesini istiyorum. Bir alt birimi nereye taşırsam oranın alt birimi ya da ana birim olmasını istiyorum.

Yardımcı olabileceklere çok çok teşekkürler. Herşeyi bitmiş bir bu özelliği kalmıştı. Zeki Bey'in sürükle bırak örneğini görünce hatırladımsaskin


Eklenti Dosyaları
.zip   Treeview_Birimler_ME.zip (Boyut: 63,11 KB / İndirilme: 102)
Eek VT:Veri Tabanı, AVT: Access VT, MS:Microsoft, Kapaç: Kapa ve aç (rebot ve açkapa saçmalığına çözümüm)
Twitcy Yazan okuyan sağolsun, çözene saygılar. Kolaylaştırınız, zorlaştırmayınız.
? Cinnet geçirmemek için Access 2010'u SP2 ile kullanalım.
? Sürekli sebepsiz hatalar oluyor da AVT uçuyorsa siz de Ofis kurulmunu uçurun çözülüyor. Sorun kurulum dosyanızda! Farklısını bulun!
? VT dağıtıma çıkana kadar bölmek zaman kaybıdır!
{ Veri Tabanı Mantığı } {Access 2010 çökmelerine çözüm } { 60 Günlük Ofis 2010 Pro Türkçe } { Kayıtları Yan Yana Göstermek }
{ Forma Rapora Resim Fotoğraf Eklemek En kolay En Sağlam En Zengin Teknik }



  Alıntı
Bu mesajı beğenenler:
#4
emeğinize sağlık
güzel paylaşım.



  Alıntı
Bu mesajı beğenenler:
#5
(23-04-2012, 00:24)Mehmet Eser demiş ki: ....
Örneğinizde alt dalları değil de ana sırayı değiştiriyor.

Örneğimdeki herhangi bir birimi sürüklediğimde yerinin değişmesini istiyorum. Bir alt birimi nereye taşırsam oranın alt birimi ya da ana birim olmasını istiyorum.
...


Evet, bir dalın diğer dalın altına taşınması ihtiyacını düşünmemiştim. Aslında mantık gayet basit, gerisi teferruat... Kaba bir tabirle açıklarsak:

"Bir çocuğa (bir alt dal) senin baban (herhangi bir dal) bu dendiği zaman çoluk çocuk, torun torba (tüm alt dallarla birlikte) o babanın (dal) nüfusuna tek hamlede geçer (taşıma)."

Yani alt dalları taşımak için karmaşık bir VBA kodu gerekmez.

Teknik olarak da örneğin:

Visual Basic
  1. set treeview.nodes("herhangi dal keyi").parent = treeview.nodes("herhangi dal keyi")



Olay bu, sıralama da bu şekilde. Diğerleri teferruat, error durumlarına yakalanmama kurnazlıkları.



  Alıntı
Bu mesajı beğenenler:
#6
Sayın Zeki Gürsoy,


Üstadım bu güzel dosya için verilen emek ve paylaşımınız için teşekkürler.

Sevgi ve saygılar.



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
access-sql-12 ActiveX: TreeView Örnekleri Mehmet Eser 8 10.493 26-12-2023, 04:33
Son Mesaj: adnnfrm
  Liste Kutusu Sürükle-bırak(drag-drop) Ve Tabloya Kaydetme dsezgin 3 3.217 18-02-2015, 07:45
Son Mesaj: abkbek
  Çok Kullanışlı Bir Treeview Örneği Taruz 43 33.792 15-01-2015, 17:54
Son Mesaj: huzun_bulutu
  Raporda dinamik sıralama iscinar 7 4.462 25-09-2012, 11:42
Son Mesaj: hdm24
  Treeview Kullanımı esrefigit 18 15.465 19-04-2011, 00:12
Son Mesaj: beauty722
  Sürükle Bırak Abdullah 2 2.876 24-03-2011, 10:47
Son Mesaj: akd27
  access nesne kontrol ve özellikleri + treeview sdemirhan2478 15 9.868 29-01-2011, 22:49
Son Mesaj: assenucler
  Artan ya da azalan sıralama beab05 12 13.065 13-04-2009, 13:35
Son Mesaj: akd27

Foruma Git:


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