Kiffi hat geschrieben:Bug? Denn in der Hilfe steht: "Set the currently selected file/directory."
Olaf.Renns hat geschrieben:Genau, also entweder ist die Beschreibung nicht richtig oder wir machen etwas falsch.
Well, die Beschreibung ist nicht ausreichend, aber wenn man unter SetGadgetText() nachsieht, dann wird es etwas deutlicher:
ExplorerTreeGadget()
- SetGadgetText(): Ändert die/das aktuell ausgewählte Datei/Verzeichnis.
SetGadgetText()
- ExplorerTreeGadget(): ändert das aktuell ausgewählte Verzeichnis und/oder den Pattern (Datei-Filter) für Dateien (siehe ExplorerTreeGadget() für weitere Details).
Soweit ich das rausgekriegt habe, kann man eine einzelne Datei nicht vormarkiert anzeigen lassen, sondern diese Datei in seinem Verzeichnis unter Ausschluß aller anderen Dateien.
'Set' setzt hier den Filter, aber nicht den Fokus.
Da es sich aber unter Linux ein wenig anders verhält, hier wird zB. beim Erstaufruf eine gezielte Datei tatsächlich auch gleichfalls markiert, aber beim wiederholten Setzen nicht mehr. (andere Unterschiede habe ich noch nicht ausgearbeitet)
Die Hilfe muß in dieser Kürze versuchen alle Komponenten zu bedienen und im Fall der Verzeichniswahl, wird dieses ja auch gesetzt.
Hier mal ein kleines Beispiel, dass diesen Aspekt sofort deutlich macht
Code: Alles auswählen
Reset:
If OpenWindow(0, 320, 110, 300, 440, "ExplorerTreeGadget", #PB_Window_SystemMenu)
ExplorerTreeGadget(0, 10, 10, 280, 420, #PB_Compiler_Home)
If CreatePopupMenu(1)
MenuItem(4, "*.*")
MenuItem(5, "*.pb")
MenuItem(6, "*.txt; *.ini")
MenuItem(7, "desktop.ini")
MenuItem(8, "compiler ?")
MenuItem(9, "huibuh")
MenuBar()
MenuItem(10, "path -> clip")
MenuBar()
MenuItem(11, "reset")
MenuItem(0, "quit")
EndIf
Repeat
wwe = WaitWindowEvent()
Select wwe
Case #PB_Event_Gadget
If EventType() = #PB_EventType_RightClick
DisplayPopupMenu(1, WindowID(0))
EndIf
Case #PB_Event_Menu
Select EventMenu()
Case 4 : SetGadgetText(0,"*.*")
Case 5 : SetGadgetText(0,"*.pb")
Case 6 : SetGadgetText(0,"*.txt;*.ini")
Case 7 : SetGadgetText(0,"desktop.ini") ; readme.txt
Case 8 : SetGadgetText(0,#PB_Compiler_Home + "compilers\pbcompiler.exe") : SetGadgetColor(0, #PB_Gadget_BackColor, $666600)
Case 9 : SetGadgetColor(0, #PB_Gadget_BackColor, RGB(Random(255),Random(255),Random(255)) ) ; $ffffff
Case 10 : SetClipboardText(GetGadgetText(0))
Case 11 : Goto Reset
Case 0 : Quit = 1
EndSelect
Case #PB_Event_CloseWindow
Break
EndSelect
Until Quit = 1
EndIf
Um eine oder mehrere Dateien im ExplorerTreeGadget vorzumarkieren, muß man wohl den Weg über die API nehmen.
Olaf.Renns hat geschrieben:es wird wieder lediglich das letzte Unterverzeichnis ausgewählt. Zum gleichen Effekt kamen auch meine Versuche, mich anhand der im CodeArchiv vorhandenen TreeGadget Beispiel durchzuarbeiten.
Im TreeGadget kann man ganz gezielt jeden Eintrag selektieren lassen, aber nur unter den Bedingungen, dass die entsprechende/n Node/s aufgeklappt ist/sind und man die absolute Listenposition angibt. Diese Position ist aber abhängig von der jeweils tatsächlich 'sichbaren' Liste.
Gruß ~ Vera