ExplorerTreeGadget refreshen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Calloway
Beiträge: 106
Registriert: 15.09.2004 23:26

ExplorerTreeGadget refreshen

Beitrag von Calloway »

Hallo!

Ich habe da Problem, dass nach einem "CreateDirectory"-Befehl das neu erstellte Verzeichnis nicht automatisch im ExplorerTreeGadget angezeigt wird. Wie kann ich dieses Gadget "refreshen", dass wieder alle Verzeichnisse angezeigt werden?

--
Gruß, Callo.
Benutzeravatar
nicolaus
Moderator
Beiträge: 1175
Registriert: 11.09.2004 13:09
Kontaktdaten:

Beitrag von nicolaus »

schau mal in der hilfe bei EventTyp() nach #PB_EventType_Change das dürfte das sein was dir hilft denke ich mal.
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

nicolaus: Mit #PB_EventType_Change bekommt man nur mit, ob sich was auf deinem Fenster ändert.

Calloway: Probiere mal UpdateWindow_(WindowID(%Fensternummer%)). Trag da einfach die Fensternummer ein. Wenn das nicht funktioniert: Trick17**.

Trick17**:
1) Versuche den "Ast" der gerade geöffnet ist, einmal zu schließen und dann wieder zu öffnen. Dabei müssten die Verzeichnisse neu geladen werden.
2) Bau das ExplorerGadget mit einem TreeGadget nach. Das TreeGadget kannst du dann regelmäßig im Hintergrund mit neuen Verzeichnisdaten füttern.
3) Lösche das ExplorerGadget im laufenden Betrieb und erstelle sofort ein Neues. Sorg dafür, dass das neue Gadget auch gleich die aktuellen Verzeichnisdaten bekommt.


Greetz Laurin
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Calloway
Beiträge: 106
Registriert: 15.09.2004 23:26

Beitrag von Calloway »

Laurin hat geschrieben: 1) Versuche den "Ast" der gerade geöffnet ist, einmal zu schließen und dann wieder zu öffnen. Dabei müssten die Verzeichnisse neu geladen werden.
Das war das erste, was ich getan hatte, aber es funktionierte nicht. Ich wefde mal Trick 17 ausprobieren. Wenn jemand noch einen Trick 18 auf Lager hat, dann her damit. :mrgreen:

Dennoch vielen Dank an Euch für die Hilfestellung...
--
Gruß, Callo.
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

Naja, wenn ich das so recht überlegen haben ich Trick 17, 18 und 19 aufgeschrieben.

Egal.

Hat schon irgendwas davon Erfolg gebracht?
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Calloway
Beiträge: 106
Registriert: 15.09.2004 23:26

Beitrag von Calloway »

Laurin hat geschrieben:Naja, wenn ich das so recht überlegen haben ich Trick 17, 18 und 19 aufgeschrieben.
Ach so. Ich hatte das als 17a, 17b und 17c interpretiert. :mrgreen:

Ich werde dieses Problem erst einmal zurückstellen müseen, werde mich dann aber Trick 17c widmen... :allright:

Gruß, Callo.
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Beitrag von Shardik »

Der praktikabelste Weg dürfte darin bestehen, das ExplorerTreeGadget mit SetGadgetText() in der Form

SetGadgetText(#ExplorerTree, GetGadgetText(#ExplorerTree) + "*.*")

aufzurufen.

Hier ist ein Code-Beispiel:

Code: Alles auswählen

; Refresh ExplorerTreeGadget

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

CreateGadgetList(WindowID(1))
ExplorerTreeGadget(1, 10, 10, 270, 230, "C:\")
ButtonGadget(2, 40, 250, 200, 40, "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 EventGadgetID() = 2
    CreateDirectory("C:\Test")
    SetGadgetText(1, GetGadgetText(1) + "*.*")
    DisableGadget(2, #True)
  EndIf
Until WindowEventID = #PB_Event_CloseWindow
Gruß,

Shardik
Calloway
Beiträge: 106
Registriert: 15.09.2004 23:26

Beitrag von Calloway »

Danke :allright:

Ich werde es heute Abend mal testen...

Gruß, Callo.
Antworten