Seite 1 von 1

setgadgetitemcolor färbt nicht ein

Verfasst: 06.06.2011 13:44
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

Re: setgadgetitemcolor färbt nicht ein

Verfasst: 06.06.2011 13:51
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

Re: setgadgetitemcolor färbt nicht ein

Verfasst: 06.06.2011 13:58
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 ;-)