SetGadgetText funktioniert nicht mit TreeViewNodes?

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Artemis

Betreff: SetGadgetText funktioniert nicht mit TreeViewNodes?

BeitragSo, Jan 06, 2008 13:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin,

folgender Code sollte eigentlich alle doppelt angeklickten Nodes umbenennen. Tut er aber nicht.
Code: [AUSKLAPPEN]
SuperStrict

Framework BRL.MaxGUI
Import BRL.Win32MaxGUI
Import BRL.EventQueue

Local window:TGadget = CreateWindow("Test", 200, 200, 200, 200, Null, WINDOW_CLIENTCOORDS | WINDOW_TITLEBAR)
Local tree:TGadget = CreateTreeView(0, 0, 200, 200, window)
Local root:TGadget = TreeViewRoot(tree)

Local node:TGadget[6]

node[0] = AddTreeViewNode("Ordner1", root)
node[1] = AddTreeViewNode("Datei1", node[0])
node[2] = AddTreeViewNode("Datei2", node[0])
ExpandTreeViewNode(node[0])
node[3] = AddTreeViewNode("Ordner2", root)
node[4] = AddTreeViewNode("Datei1", node[3])
node[5] = AddTreeViewNode("Datei2", node[3])
ExpandTreeViewNode(node[3])

Repeat
   
   WaitEvent
   
   If CurrentEvent.id = EVENT_WINDOWCLOSE Then End
   
   If CurrentEvent.id = EVENT_GADGETACTION And CurrentEvent.source = tree Then
      
      Local node:TGadget = TGadget(CurrentEvent.extra)
      SetGadgetText(node, "Angeklickt")
      
   EndIf
   
Forever

simi

BeitragSo, Jan 06, 2008 13:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst ModifyTreeViewNode nehmen... Eine Node ist ja kein Gadget, sonder eben eine ... Node Wink

Lunatix

BeitragSo, Jan 06, 2008 13:12
Antworten mit Zitat
Benutzer-Profile anzeigen
SetGadgetText kann man nur auf einem Gadget Anwenden. TreeViewNode ist ein Item. Verwende stattdessen einfach "ModifyGadgetItem" Smile
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Artemis

BeitragSo, Jan 06, 2008 13:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke.

Und wenn der Node jetzt ein Icon hat, wie bekomme ich raus, welches?
Die Nodes können bei mir nämlich zwei verschiedene Icons haben, und wenn ich bei ModifyTreeViewNode icon weglasse kommt kein Icon.

EDIT: Jetzt speichere ich im context-Feld des Nodes, welcher Typ es ist und kann das so später wieder abrufen. Geht das auch anders?

simi

BeitragSo, Jan 06, 2008 14:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Es gibt eine Methode ItemIcon(index)....
Ich habs nicht ausprobiert, aber mit der solltest du das aktuelle Icon abfragen können, und es gleich wieder übergeben können....

Artemis

BeitragSo, Jan 06, 2008 14:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Nee,

das ist die Methode die von der Funktion GadgetItemIcon aufgerufen wird und die Gibt das Icon eines "List based Gadgets" also Tabber, ListBox,… zurück. TreeView funktioniert nicht:

Code: [AUSKLAPPEN]
SuperStrict

Framework BRL.MaxGUI
Import BRL.Win32MaxGUI
Import BRL.EventQueue
Import BRL.Pixmap
Import BRL.PNGLoader

Local window:TGadget = CreateWindow("Test", 200, 200, 200, 200, Null, WINDOW_CLIENTCOORDS | WINDOW_TITLEBAR)

Local icon:TIconStrip = LoadIconStrip("iconstrip.png")

Local tree:TGadget = CreateTreeView(0, 0, 200, 200, window)

SetGadgetIconStrip(tree, icon)

Local root:TGadget = TreeViewRoot(tree)

Local node:TGadget[6]

node[0] = AddTreeViewNode("Ordner1", root, 0)
node[1] = AddTreeViewNode("Datei1", node[0], 1)
node[2] = AddTreeViewNode("Datei2", node[0], 2)
ExpandTreeViewNode(node[0])
node[3] = AddTreeViewNode("Ordner2", root, 3)
node[4] = AddTreeViewNode("Datei1", node[3], 4)
node[5] = AddTreeViewNode("Datei2", node[3], 5)
ExpandTreeViewNode(node[3])

Repeat
   
   WaitEvent
   
   If CurrentEvent.id = EVENT_WINDOWCLOSE Then End
   
   If CurrentEvent.id = EVENT_GADGETACTION And CurrentEvent.source = tree Then
     
      Local node:TGadget = TGadget(CurrentEvent.extra)
      ModifyTreeViewNode(node, "Angeklickt", node.itemIcon(0))
     
   EndIf
   
Forever


Kommt bei node.itemIcon ein "Index out of range".

EDIT: Hab mir grad den Source von BRL.MaxGUI angesehen und bin zum Schluss gekommen, dass das einfach nicht geht.

simi

BeitragSo, Jan 06, 2008 15:11
Antworten mit Zitat
Benutzer-Profile anzeigen
mh, dann weiss ich auch nicht mehr weiter.....
Aber da du ja das Icon aus einer bestimmten Logik heraus setzt, solltest du ja jedesmal wieder wissen, was für ein icon da hingehört.... Wink

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group