Seite 1 von 1

Gelöst: wie ExplorerTreeGadget updaten?

Verfasst: 10.05.2025 12:29
von EmmJott
Servus allerseits!

habe das Problem, dass sich das ExplorerTreeGadget nicht so aktualisiert, wie es das ExplorerListGadget macht. Wenn ich mit ein Verzeichnis im ExplorerTreegadet anschaue (beispielsweise das %Temp%-Verzeichnis, in dem ja dauernd irgendwas passiert), dann reagiert das ExplorerListGadget auf Veränderungen, während das ExplorerTreeGadget das nicht tut.

Auch wenn ich Veränderungen selbst verursache und mittels
SetGadgetText(#explorertree,GetGadgetText(#explorertree))
ein neues Einlesen erzwingen will, werden Veränderungen ignoriert, also offenbar keine neuen Daten eingelesen (oder werden nur Cache-Daten gezeigt?).

Wenn ich das Programm schließe und neu starte, werden die "echten" Daten gezeigt (was halt beim erstmaligen Start des Gadgets zu finden war).

Gibt es einen Trick, beim ExplorerTreegadget einn eues Einlesen zu erzwingen, der eleganter wäre als

Code: Alles auswählen

  x$ = GetGadgetText(#explorertree)
  FreeGadget(#explorertree)
  ExplorerTreeGadget(#explorertree, 10, 10, 280, 280, x$)
?

Re: wie ExplorerTreeGadget updaten?

Verfasst: 10.05.2025 17:25
von Shardik
Diese Frage habe ich vor 20 Jahren schon einmal in diesem Thread beantwortet. Ich habe mein damaliges Beispiel an die aktuelle Version PB 6.20 (getestet mit x86 und x64) angepasst:

Code: Alles auswählen

OpenWindow(1, 0, 0, 290, 380, "Demo für Refresh des ExplorerTreeGadget",
  #PB_Window_ScreenCentered | #PB_Window_SystemMenu) 

ExplorerTreeGadget(1, 10, 10, 270, 300, "C:\") 
ButtonGadget(2, 40, 320, 200, 50,
  "Neues Verzeichnis 'C:\Test' anlegen und in Verzeichnisstruktur einblenden",
  #PB_Button_MultiLine | #PB_Button_Default) 

If ExamineDirectory(1, "C:\Test", "") <> 0 
  DisableGadget(2, #True) 
EndIf  

Repeat 
  WindowEventID = WaitWindowEvent() 

  If WindowEventID = #PB_Event_Gadget And EventGadget() = 2 
    CreateDirectory("C:\Test") 
    SetGadgetText(1, GetGadgetText(1) + "*.*") 
    DisableGadget(2, #True) 
  EndIf 
Until WindowEventID = #PB_Event_CloseWindow

Re: wie ExplorerTreeGadget updaten?

Verfasst: 11.05.2025 10:38
von EmmJott
Hallo Shardik,

vielen Dank für Deine Problemlösung. In meiner kleinen Anwendung werden die Inhalte des %Temp%-Verzeichnisses gelöscht. Tatsächlich reicht bei mir die Zeile

Code: Alles auswählen

SetGadgetText(#etg, GetGadgetText(#etg) + "*.*")
aus. Offenbar kommt es nur auf das

Code: Alles auswählen

+ "*.*"
an - ohne will es nicht.