ListViewGadget-Refresh

Anfängerfragen zum Programmieren mit PureBasic.
Werner
Beiträge: 24
Registriert: 15.01.2005 19:43

ListViewGadget-Refresh

Beitrag von Werner »

Hallo PureBasic-Gemeinde,

ich benutze ListViewGadget, um z.B. Dateien in einer Schleife einzulesen.
Bis alle Dateien gefunden werden dauert das natürlich eine Weile.
Mein Problem ist nun, dass ich die lfd. Einträge im ListViewGadget nicht darstellen kann. Erst wenn die Schleife durchlaufen ist bekomme ich den kompletten Inhalt der ListViewGadget. Auch ein "Delay" hilft nicht.
Hat jemand eine Idee untenstehendes Beispiel dahin abzuändern, dass der Zuwachs der Einträge sichtbar wird?

Code: Alles auswählen

 If OpenWindow(0, 0, 0, 270, 140, "ListViewGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
    ListViewGadget(0, 10, 10, 250, 120)
    For a = 1 To 12
      AddGadgetItem (0, -1, "Item " + Str(a) + " of the Listview")   ; definieren des Listview-Inhalts
      Delay (100)
    Next
    SetGadgetState(0, 9)    ; wir setzen (beginnend bei 0) den zehnten Eintrag als aktiven
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
  EndIf
_________________________________________
PB4.0 / WXP
Benutzeravatar
winduff
Beiträge: 879
Registriert: 10.02.2006 21:05
Wohnort: Gießen
Kontaktdaten:

Beitrag von winduff »

Das Problem ist das das Fenster im Code nicht aktualisiert wird, bis alles fertig ist.

Versuch es mal mit Threads (F1-Hilfe), wäre in dem Fall das Sinnvollste.

Gleich kommt Thomas und haut mich mit ner guten Idee weg, aber gut ein versuch :mrgreen:
Bild
AND51 hat geschrieben:...und ich würde dein Programm aus Wut zwei mal installieren, um eines genüsslicher löschen zu können, als das andere...
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Code: Alles auswählen

If OpenWindow(0, 0, 0, 270, 140, "ListViewGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
    ListViewGadget(0, 10, 10, 250, 120)
    For a = 1 To 12
      AddGadgetItem (0, -1, "Item " + Str(a) + " of the Listview")   ; definieren des Listview-Inhalts
      Delay (100)
      While WindowEvent() : Wend
    Next
    SetGadgetState(0, 9)    ; wir setzen (beginnend bei 0) den zehnten Eintrag als aktiven
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
  EndIf 
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

:o , das war Absicht oder ?

Code: Alles auswählen

  hwnd = OpenWindow(0, 0, 0, 270, 140, "ListViewGadget") 
  
  CreateGadgetList(hwnd)
  
  ListViewGadget(0, 10, 10, 250, 120)
  
  timeout = 50 ; jede n millisekunde aktualisieren
  
  Repeat 
    event = WaitWindowEvent(timeout) 
    
    If event = 0 ; wenn nichts zu tun ist
      If Not a = 10000 ; damit man auch mal was sieht :D
        a = a + 1
        AddGadgetItem (0, #PB_Default, "Item " + Str(a) + " of the Listview")
      Else
        SetGadgetState(0, 9)
        timeout = #PB_Default ; timeout austellen
      EndIf
    EndIf
    
  Until event = #PB_Event_CloseWindow
ts ist doof ;D
Werner
Beiträge: 24
Registriert: 15.01.2005 19:43

ListViewGadget-Refresh

Beitrag von Werner »

@ts-soft / edel

Danke für Eure Beiträge!
Ihr habt mir sehr geholfen!
:-)

Grüße
Werner
PB4.1 / WXP / Vista
Antworten