Listicon mit Arraywerten füllen und if-Abfrage

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Listicon mit Arraywerten füllen und if-Abfrage

Beitrag von dysti »

Hallo,
also ich fülle über ein Array ein Listicon.
Wenn ich die If-Abfrage:
If adr(a)\loesch=0 ;nur die Einträge mit "0" zulassen
deaktiviere, läuft alles hervorragend, ansonsten wird ab den fünften Array einfach das Füllen des Listicon abgebrochen.
Wie kann das sein? Ist doch eine normale If-Abfrage!

Code: Alles auswählen

;Structure erstellen
Structure test
nr.l
name.s
loesch.l
EndStructure

;Array initialisieren
Global Dim adr.test(20)

;Array mit Testwerten füllen
For I=0 To 20
    adr(I)\nr=I
    adr(I)\name= "Test"+Str(I)
    adr(I)\loesch=0
Next

;das fünfte Array erhält als Löschkennung die "1"
adr(5)\loesch=1

;Hauptprogramm
If OpenWindow(0, 100, 100, 500, 300, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   If CreateGadgetList(WindowID(0))
     ListIconGadget(1, 5, 5, 490, 290, "Nr", 100,#PB_ListIcon_GridLines| #PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
     ;erstellen der Spalten
     AddGadgetColumn(1, 1, "Kennzeichen", 250)
     AddGadgetColumn(1, 1, "Name", 250)
     
     ;wir füllen das Listicon
     For a=0 To 20
     ;Filter setzen
     If adr(a)\loesch=0       ;nur die Einträge mit "0" zulassen
     AddGadgetItem(1, -1, "")
     SetGadgetItemText(1,a,Str(adr(a)\nr) ,0)         
     SetGadgetItemText(1,a,adr(a)\name ,1)
     SetGadgetItemText(1,a,Str(adr(a)\loesch) ,2)      
     EndIf
     ;Ende Filter
     Next
 
     Repeat
     Event = WaitWindowEvent()
     Until Event = #PB_Event_CloseWindow
   EndIf
 EndIf
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Listicon mit Arraywerten füllen und if-Abfrage

Beitrag von Kiffi »

dysti hat geschrieben:Wie kann das sein?
weil beim Filtern die Position 'a' bei SetGadgetItemText() nicht mehr korrekt ist.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Beitrag von dysti »

Oh @Kiffi,
das ich das nicht geblickt habe. :o
Danke. :allright:
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Antworten