Can I assign a style to a GridBox row?
- To: mathgroup at smc.vnet.net
- Subject: [mg63393] Can I assign a style to a GridBox row?
- From: "Steven T. Hatton" <hattons at globalsymmetry.com>
- Date: Thu, 29 Dec 2005 02:57:25 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
I want to alternate between a lightgray and white background in subsequent
rows of a GridBox[] table representing data I have processed. Is there a
way to assign a style to a row?
This is what I currently have:
MakeRow[{country_, samples_, percent_}] :=
{
Cell[TextData[{country, " "}]],
Cell[TextData[{samples, " "}]],
Cell[TextData[{ToString[PaddedForm[percent, {5, 2}]], " "}]]
}
MakeTableBody[tbl_] :=
CellPrint[
Cell[
BoxData[
GridBox[Table[
MakeRow[ tbl[[i]] ]
, {i, 1, Length[tbl]}]
, ColumnAlignments -> {Left, Right}
]
]
]
]
And here is some sample data:
{{Unknown Origin, 58, 100.}, {Sweden, 81, 1.23457}, {Scotland, 1826,
1.09529}, {Great Britain, 221, 0.904977}, {Netherlands, 117,
0.854701}, {Ireland, 1915, 0.626632}, {Spain, 165, 0.606061}, {Germany,
1064, 0.56391}, {England, 4349, 0.436882}, {France, 271,
0.369004}, {United Kingdom, 889, 0.224972}}
I've tried wrapping the result of MakeRow with a StyleBox, but I get errors
saying "An unknown box name (List) was sent as the BoxForm for the
expression. Check the format rules for the expression."
This is the code that caused that:
MakeTableBody[tbl_] :=
Module[{bgEven = RGBColor[0.8, 0.8, 1.0], bgOdd = RGBColor[1.0, 0.8,
0.8]},
CellPrint[
Cell[
BoxData[
GridBox[Table[
StyleBox[
MakeRow[ tbl[[i]] ]
, Background -> If[OddQ[i], bgOdd, bgEven]
]
, {i, 1, Length[tbl]}]
, ColumnAlignments -> {Left, Right, Left}
]
]
]
]
]
How do I fix this?
--
The Mathematica Wiki: http://www.mathematica-users.org/
Math for Comp Sci http://www.ifi.unizh.ch/math/bmwcs/master.html
Math for the WWW: http://www.w3.org/Math/