Seite 1 von 1

ListViewGadget AddGadgetItem

Verfasst: 25.11.2016 20:31
von marcelx
Hallo zusammen,

ich möchte dass die Zeile nach und nach ausgegeben werden:

Code: Alles auswählen

winID = OpenWindow(#PB_Any, 0, 0, 300, 400, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListViewGadget(0, 10, 10, 280, 380, #PB_ListView_MultiSelect)

For i = 1 To 5 
  Delay(1000)    ; Daten(i) verarbeiten
  AddGadgetItem (0, -1, "Test "+Str(i))
Next

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
Erste nach Ende der Loop erscheint alle 5 Zeile auf einmal.

Wie wäre es richtig?
Danke
MarcelX

Re: ListViewGadget AddGadgetItem

Verfasst: 25.11.2016 20:37
von RSBasic
Beispielsweise mit einem Timer:

Code: Alles auswählen

EnableExplicit

Define i

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ListViewGadget(0, 10, 10, 280, 380, #PB_ListView_MultiSelect)
  
  AddWindowTimer(0, 1, 1000)
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Timer
        Select EventTimer()
          Case 1
            For i = 1 To 5 
              AddGadgetItem (0, -1, "Test "+Str(i))
            Next
            RemoveWindowTimer(0, 1)
        EndSelect
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf

Re: ListViewGadget AddGadgetItem

Verfasst: 25.11.2016 20:42
von marcelx
OK, ich vergessen zu schreiben, dass anstatt der Delay(1000) Daten verarbeitet werden

Re: ListViewGadget AddGadgetItem

Verfasst: 25.11.2016 20:46
von RSBasic
Dann lagere das in einem Thread aus und für das Hinzufügen eines neuen Eintrages kannst du PostEvent verwenden, damit AddGadgetItem() im Main-Thread und nicht in einem separaten Thread ausgeführt wird.

Re: ListViewGadget AddGadgetItem

Verfasst: 25.11.2016 20:52
von marcelx
Danke RSBasic.
Ich habe schon so was gemacht und wusste nicht mehr, dass es mit Thread realisiert werden sollte.