Ich finde man muss nicht immer alle Gadgets die Farben neu setzen. Es reicht ja die zu letzt selektierte Zeile die zu aktualliesieren.
sehr gutes Beispiel... 
Code: Alles auswählen
EnableExplicit
Define newX, newY, newW, newH
Define SampleImage, Counter, WWE
Define SelectedRowIndex = -1
Structure sRow
  ImageGadget.i
  TextGadget1.i
  TextGadget2.i
EndStructure
Global NewList Row.sRow()
#Window = 0
#ScrollAreaGadget = 0
OpenWindow(#Window, #PB_Ignore, #PB_Ignore, 200, 600, "")
ScrollAreaGadget(#ScrollAreaGadget, 0, 0, WindowWidth(#Window), WindowHeight(#Window), WindowWidth(#Window) - 32, WindowHeight(#Window))
newH = 20
SampleImage = LoadImage(#PB_Any, #PB_Compiler_Home + "\Examples\Sources\Data\Drive.bmp")
For Counter = 0 To 50
 
  AddElement(Row())
 
  Row()\ImageGadget = ImageGadget(#PB_Any,   0, newY,  30, newH, ImageID(SampleImage), #PB_Image_Border)
  Row()\TextGadget1 = TextGadget (#PB_Any,  30, newY, 100, newH, " Dies ist Zeile " + Str(Counter), #SS_CENTERIMAGE | #SS_NOTIFY)
  Row()\TextGadget2 = TextGadget (#PB_Any, 131, newY,  50, newH, " holla", #SS_CENTERIMAGE | #SS_NOTIFY)
 
  newY + newH + 1
 
  If ListIndex(Row()) % 2 = 0
    SetGadgetColor(Row()\TextGadget1, #PB_Gadget_BackColor, #White)
    SetGadgetColor(Row()\TextGadget2, #PB_Gadget_BackColor, #White)
  Else
    SetGadgetColor(Row()\TextGadget1, #PB_Gadget_BackColor, #Gray)
    SetGadgetColor(Row()\TextGadget2, #PB_Gadget_BackColor, #Gray)
  EndIf
 
 
Next
CloseGadgetList()
SetGadgetAttribute(#ScrollAreaGadget, #PB_ScrollArea_InnerHeight, newY)
Repeat
 
  WWE = WaitWindowEvent()
 
  Select WWE
     
    Case #PB_Event_Gadget
      
      If SelectedRowIndex >= 0
        SelectElement(Row(), SelectedRowIndex)
          If ListIndex(Row()) % 2 <> 0
            SetGadgetColor(Row()\TextGadget1, #PB_Gadget_BackColor, #Gray)
            SetGadgetColor(Row()\TextGadget2, #PB_Gadget_BackColor, #Gray)
          Else
            SetGadgetColor(Row()\TextGadget1, #PB_Gadget_BackColor, #White)
            SetGadgetColor(Row()\TextGadget2, #PB_Gadget_BackColor, #White)
          EndIf
         
          SetGadgetColor(Row()\TextGadget1, #PB_Gadget_FrontColor, #Black)
          SetGadgetColor(Row()\TextGadget2, #PB_Gadget_FrontColor, #Black)
        EndIf
        
      ForEach Row()
       
        If EventGadget()=Row()\TextGadget1 Or EventGadget()=Row()\TextGadget2
          
          SelectedRowIndex = ListIndex(Row())
         
          SetGadgetColor(Row()\TextGadget1, #PB_Gadget_BackColor, #Blue)
          SetGadgetColor(Row()\TextGadget2, #PB_Gadget_BackColor, #Blue)
         
          SetGadgetColor(Row()\TextGadget1, #PB_Gadget_FrontColor, #White)
          SetGadgetColor(Row()\TextGadget2, #PB_Gadget_FrontColor, #White)
          Break
         
        EndIf
       
      Next
     
  EndSelect
 
Until WWE = #PB_Event_CloseWindow