The Jade 2025 release focuses on modernising the developer experience and helping you build faster, smarter, and more scalable applications.
It would be useful if alternatingRowBackColor on JadeTableSheet, ListBox, JadeSkinListBox, JadeSkinTable, etc. supported a transparency or luminance mask for tables and lists that contain rows with different backColor values. Currently, alternatingRowBackColor is limited to a single alternate colour per sheet or control, which doesn’t work well when multiple row backColor values are in use.
The desired behaviour is:
For every N‑th non‑fixed row (e.g. every 2nd row), adjust the brightness of the existing effective backColor (cell/row/column/sheet) to a specified percentage, such as 95%.
This would respect any backColor already applied to rows or cells and maintain a consistent alternating pattern even when the data is sorted or scrolled.
Alternation should continue to apply only to visible non‑fixed rows and cells, as per current behaviour.
At present, I am manually implementing this, for example:
if self.callDisplayAlternating then
rowIndex := pRow - pTable.fixedRows;
if rowIndex > 0 and rowIndex mod 2 = 0 then
self.zApplyAlternatingRowColours(backColour);
endif;
endif;
pTable.accessRow(pRow).backColor := backColour;zApplyAlternatingRowColours(pColour : Integer io) protected;
vars
red,
green,
blue : Integer;
begin
red := pColour mod 256;
green := (pColour div 256) mod 256;
blue := (pColour div 65536) mod 256;
red := (red * 95) div 100;
green := (green * 95) div 100;
blue := (blue * 95) div 100;
pColour := red + (green * 256) + (blue * 65536);
end;
This works in principle but doesn’t automatically respect sort preferences: when the user sorts, the alternating pattern becomes visually inconsistent and I have to redraw the entire table to restore alternation, which is inefficient.
To address this, it would be good to introduce built‑in constants and properties such as:
AlternatingRowType_Colour : 0 (Default, singular colour, every N-th row)
AlternatingRowType_Luminance : 1 (New, masks over existing colours, every N-th row)table1.accessSheet(1).alternatingRowBackColorCount := 2;
table1.accessSheet(1).alternatingRowBackColorType := AlternatingRowType_Luminance;
table1.accessSheet(1).alternatingRowBackColorLuminancePercent := 95;In AlternatingRowType_Luminance mode:
alternatingRowBackColorCount still defines the interval (e.g. 2 for “every second row”), as it does today.
For each visible non‑fixed row that matches the interval, the renderer would take the effective backColor (honouring cell/row/column overrides) and apply the luminance adjustment specified by alternatingRowBackColorLuminancePercent, at paint time.
This would preserve existing colour semantics (including explicit backColor values and skin colours) while providing a robust, sort‑aware alternating row effect without requiring manual redraws.