setgadgetitemcolor färbt nicht ein

Anfängerfragen zum Programmieren mit PureBasic.
finnkerchief
Beiträge: 17
Registriert: 01.11.2008 12:48
Wohnort: Österreich

setgadgetitemcolor färbt nicht ein

Beitrag von finnkerchief »

Hallo!

Nach nach langem tüfteln und suchen, fällt mir keine Lösung ein:
Kann mir jemand erklären, warum folgendes Beispiel nicht funktioniert?

Ich habe ein listicongadget, dieses befülle ich mit einer Liste an Einträgen. Wenn ein Eintrag einen bestimmten Wert hat, soll die gesamte Zeile in einer anderen Farbe angezeigt werden.
Wenn ich absolute Zahlen an setgadgetitemcolor übergebe (im Sinne: SetGadgetItemColor(0, 5, #PB_Gadget_BackColor, $00FFFF, -1)) funktioniert alles. Sobald ich aber eine Variable anstelle des Wertes 5 setze, geht es nicht mehr. Zur Illustration folgendes aus der Befehlshilfe abgewandeltes Beispiel:

Code: Alles auswählen

  If OpenWindow(0, 0, 0, 300, 300, "SetGadgetItemColor", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    ListIconGadget(0, 10, 10, 280, 280, "Column 0", 100)
    AddGadgetColumn(0, 1, "Column 1", 100)
    For i = 1 To 10
      AddGadgetItem(0, -1, "Text 1"+Chr(10)+"Text 2")
      If i=5
        SetGadgetItemColor(0,  i, #PB_Gadget_BackColor,  $00FFFF, -1)
      EndIf
    Next 

    Repeat
    Until WaitWindowEvent() = #PB_Event_CloseWindow
  EndIf
Ersetzt man "i" im setgadgetitemcolor Befehl mit einer absoluten Zahl, z.B. 5 und nimmt die if Bedingung weg, wird die Zeile korrekt farbig angezeigt. Warum funktioniert das nicht wenn i in der Schleife den Wert 5 erreicht? Hat da meine Logik einen Knoten?
Lg, finnkerchief
System: Win XP, SP3, PB 4.31, Pentium D 3 GHz 1 GB RAM
Benutzeravatar
Morty
Beiträge: 268
Registriert: 22.10.2004 07:20
Wohnort: Erfurt
Kontaktdaten:

Re: setgadgetitemcolor färbt nicht ein

Beitrag von Morty »

Auch mit 5 statt i geht es nicht (bei mir).

Der Fehler liegt in der Logik. Bei i=5 hast Du zwar 4 Items erstellt, aber keinen mit Value 5.
Es fängt ja bei 0 an zu zählen. Bei i= 5 hast Du also 0 ... 4. Daher kann er die Zeile mit Value 5 (= 6te Zeile) nicht färben.

Sollte helfen:

Code: Alles auswählen

SetGadgetItemColor(0, i-1, #PB_Gadget_BackColor,  $00FFFF)
oder richtig bei 0 beginnend zu zählen.

Gruß, Morty
finnkerchief
Beiträge: 17
Registriert: 01.11.2008 12:48
Wohnort: Österreich

Re: setgadgetitemcolor färbt nicht ein

Beitrag von finnkerchief »

Vielen Dank für die Erklärung! Jetzt ist es logisch. :D

Ich hab da einfach nicht mehr durchgeblickt und angenommen, dass er eine Zeile färben müsste. Das die noch nicht existiert zu dem Zeitpunkt... tja, höherer Durchblick notwendig.

Muchas gracias! Saved my Day... so far ;-)
System: Win XP, SP3, PB 4.31, Pentium D 3 GHz 1 GB RAM
Antworten