Bei so vielen Einträgen eher nicht.
Man könnte stattdessen Inline-Styles verwenden. Das könnte eventuell schneller sein, aber leider stelle ich fest, dass es so nicht funktioniert.
1. Drücke in meinem neuen Beispiel auf "Alles markieren". Du wirst feststellen, dass nur die ersten 50-100 Einträge gestylt wurden.
2. Scrolle ganz nach unten. Drücke erneut auf "Alles markieren". Jetzt wirst du feststellen, dass nur die untersten 50-100 Einträge gestylt wurden. Die oberen zuvor gestylten Einträge sind wieder farblos.

InlineStyle-Variante:
Code: Alles auswählen
EnableExplicit
Procedure SetGadgetItemColorFast(gadget, item, colortype, color, column)
Protected styles.s
Protected id.s
Protected sb_id.s
;Falls nicht existiert, dann eine ID im Hauptelement erstellen, um später per CSS besser darauf zugreifen zu können
! var GadgetElement = $(spider_GadgetID(v_gadget).div);
! if (GadgetElement.attr("id")) {
! v_id = GadgetElement.attr("id");
! } else {
! GadgetElement.attr("id", "SB_Gadget_" + v_gadget);
! v_id = GadgetElement.attr("id");
! }
;SB-Hauptelement ermitteln
! v_sb_id = spider_GadgetID(v_gadget).gadget.id;
;Unterstützte Gadgets und deren Style-Erstellungen
Select GadgetType(gadget)
Case #PB_GadgetType_ListIcon
If item = -1
Select colortype
Case #PB_Gadget_FrontColor
! GadgetElement.find("#" + v_sb_id + "-header").find(".dgrid-column-" + v_column).css("color", spider_helper_ColorToHtml(v_color));
Case #PB_Gadget_BackColor
! GadgetElement.find("#" + v_sb_id + "-header").find(".dgrid-column-" + v_column).css("background-color", spider_helper_ColorToHtml(v_color));
EndSelect
Else
Select colortype
Case #PB_Gadget_FrontColor
! GadgetElement.find("#" + v_sb_id + "-row-" + v_item).find(".dgrid-column-" + v_column).css("color", spider_helper_ColorToHtml(v_color));
Case #PB_Gadget_BackColor
! GadgetElement.find("#" + v_sb_id + "-row-" + v_item).find(".dgrid-column-" + v_column).css("background-color", spider_helper_ColorToHtml(v_color));
EndSelect
EndIf
EndSelect
EndProcedure
;================================================== Beispielcode ==================================================
Define a, time, n
Procedure GadgetEvent()
Protected a, time, n
Select EventGadget()
Case 2
For n = 1 To 1
time = ElapsedMilliseconds()
For a=1 To 250
Debug a
SetGadgetItemColorFast(1, a, #PB_Gadget_BackColor, #Red, 0)
Next
Debug ElapsedMilliseconds() - time
Next
EndSelect
EndProcedure
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_ScreenCentered)
ListIconGadget(1, 10, 20, WindowWidth(0)-20, WindowHeight(0)-20, "Spalte 1", 200, #PB_ListIcon_GridLines)
AddGadgetColumn(1, 1, "Spalte 2", 200)
ButtonGadget(2, 10, 0, 200, 20, "Alles markieren", 0)
For a=1 To 250
AddGadgetItem(1, -1, "Item " + Str(a) + Chr(10) + "More Text")
Next
BindEvent(#PB_Event_Gadget, @GadgetEvent())
EndIf