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