TreeGadget: Einträge verschieben

Für allgemeine Fragen zur Programmierung mit PureBasic.
CNESM
Beiträge: 311
Registriert: 29.08.2004 15:16
Kontaktdaten:

TreeGadget: Einträge verschieben

Beitrag 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 :)
strgalt
Beiträge: 63
Registriert: 30.08.2004 23:25

Beitrag 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...
Wer lesen kann, ist klar im Vorteil

MfG
strgalt
CNESM
Beiträge: 311
Registriert: 29.08.2004 15:16
Kontaktdaten:

Beitrag 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?
strgalt
Beiträge: 63
Registriert: 30.08.2004 23:25

Beitrag 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.
Wer lesen kann, ist klar im Vorteil

MfG
strgalt
CNESM
Beiträge: 311
Registriert: 29.08.2004 15:16
Kontaktdaten:

Beitrag 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 :)
Benutzeravatar
wichtel
Beiträge: 150
Registriert: 09.09.2004 08:35
Wohnort: Hattersheim

Beitrag von wichtel »

schau mal ins code archive:
http://www.purearea.net/pb/CodeArchiv/G ... agnDrop.pb

Vielleicht hilft das.
PB / jaPBe jeweils aktuellste Version, seit 3.62 dabei, XP sp3 de/en & W7 en
CNESM
Beiträge: 311
Registriert: 29.08.2004 15:16
Kontaktdaten:

Beitrag von CNESM »

Hi,

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