Seite 1 von 1

TreeGadget: Einträge verschieben

Verfasst: 23.10.2004 11:43
von CNESM
Hi,

Code: Alles auswählen

If OpenWindow(0,0,0,355,180,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"TreeGadget") And CreateGadgetList(WindowID(0)) 
  TreeGadget(0, 10,10,160,160)                                       ; TreeGadget Standard 
  TreeGadget(1,180,10,160,160,#PB_Tree_CheckBoxes|#PB_Tree_NoLines)  ; TreeGadget mit Checkboxen + ohne Linien 
     AddGadgetItem (id, -1, "Haupt 1")           ; benutzen Sie UseImage(x) als 4. Parameter 
      OpenTreeGadgetNode(id) 
      AddGadgetItem(id, -1, "1") 
      AddGadgetItem(id, -1, "2") 
      AddGadgetItem(id, -1, "3") 
      AddGadgetItem(id, -1, "4") 
      CloseTreeGadgetNode(id) 
      AddGadgetItem (id, -1, "Haupt 2")           ; benutzen Sie UseImage(x) als 4. Parameter 
      OpenTreeGadgetNode(id) 
      AddGadgetItem(id, -1, "5") 
      AddGadgetItem(id, -1, "6") 
      AddGadgetItem(id, -1, "7") 
      AddGadgetItem(id, -1, "8") 
      CloseTreeGadgetNode(id) 
  Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow 
EndIf 
ist es möglich einzelne Einträge (zb. "1") oder auch gefüllte Knoten (zb. "Haupt 1") per hand zu verschieben (Drag and Drop etc.)

Das Beispiel im Codearchiv habe ich mir bereits angeschaut. Hab das bisher einfach immer so gelöst, das ich mit Buttons gearbeitet habe. Das heisst, Knoten auswählen, Button drücken, Fenster öffent, man wählt aus, wo das ganze hin soll und schwups wurde der eintrag gelöscht und neu erstellt. Wichtig ist dabei, das ich auch erfahre, welcher Eintrag genau verschoben wird, weil die Zusammenstellung bei jeder Änderung angepasst werden muss. Verschiebe ich also den Knoten "Haupt 1" so muss ich im Grunde auch erfragen können, das sich "1", "2" usw auch verschoben haben, da ich die Änderung dann entsprechend registrieren muss :)

Verfasst: 23.10.2004 15:57
von strgalt
hi,

kleiner Tipp:
Ich lese die Daten die im TreeGadget angezeigt werden sollen immer zuerst in eine LinkedList ein. Wenn du dafür ne schöne Struktur verwendest hast du alle möglichkeiten offen.
Wenn dann Änderungen vorgenommen werden müsse, oder Vergleich oder sonst was, kannst du solche Vorgänge in der LinkedList machen und einfach das TreeGadget neu aufbauen. Fertig...

Verfasst: 24.10.2004 11:15
von CNESM
Hi,

ich arbeite auch mit LinkedList, da ich die Änderungen nach dem Zerstören des Treegadgets ja speichern muss :)

Aber wie macht man das mit dem Verschieben mit der Maus?

Verfasst: 25.10.2004 02:52
von strgalt
na dann sollte doch alles klar sein. Du hast also den Index vom TreeView- Eintrag und von der LinkedListe... Einfachinder LinkedListe austauschen und TreeView neu aufbauen lassen.... Wenn de den DC vom TreeView per API noch "einfrierst" ist´s perfekt.

Verfasst: 26.10.2004 12:46
von CNESM
Hi,

ok, aber wie mache ich das, das ich das ganze mit der MAUS verschieben kann, mittels Drag and Drop? Daüfr muss es ja einfach ne Finktion geben. Mann muss ja ermitteln, das ein Eintrag angeklickt, gehalten, verschoben und dann wieder fallen gelassen wird und wo das ganze auch passiert :)

Ich hoffe, jemand weiss das :)

Verfasst: 27.10.2004 16:12
von wichtel
schau mal ins code archive:
http://www.purearea.net/pb/CodeArchiv/G ... agnDrop.pb

Vielleicht hilft das.

Verfasst: 28.10.2004 09:29
von CNESM
Hi,

ja hab ich schon gesehen, ok ......