Gelöst: wie ExplorerTreeGadget updaten?

Anfängerfragen zum Programmieren mit PureBasic.
EmmJott
Beiträge: 46
Registriert: 25.10.2024 12:23

Gelöst: wie ExplorerTreeGadget updaten?

Beitrag 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$)
?
Zuletzt geändert von EmmJott am 11.05.2025 10:39, insgesamt 1-mal geändert.
Bin aktiv in der rentenvorbereitenden Arbeitslosigkeit - zwangsweise. Auch nach >30 Jahren im Betrieb springst Du über die Klinge, wenn der (Miss-)Manager seinen Hintern retten will. Lasst Euch von euren Arbeitgebern bloß nix von wegen Loyalität erzählen - wenn's drauf ankommt, ist die nix Wert!
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Re: wie ExplorerTreeGadget updaten?

Beitrag 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
EmmJott
Beiträge: 46
Registriert: 25.10.2024 12:23

Re: wie ExplorerTreeGadget updaten?

Beitrag 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.
Bin aktiv in der rentenvorbereitenden Arbeitslosigkeit - zwangsweise. Auch nach >30 Jahren im Betrieb springst Du über die Klinge, wenn der (Miss-)Manager seinen Hintern retten will. Lasst Euch von euren Arbeitgebern bloß nix von wegen Loyalität erzählen - wenn's drauf ankommt, ist die nix Wert!
Antworten