RecordGridColumnGroupの背景色はどのように設定すればよいのでしょうか。
RecordGridのHeader-specに下記のようなprocを指定したのですが、カラム毎のヘッダー部分のみに適用されて
グループヘッダー部分はデフォルトのままになってしまいます。
{define-proc public {make-header rgc:RecordGridColumn}:Graphic
def f =
{VBox
height = 15px,
width = {make-elastic},
halign = "center",
{CustomRasterBox
font-size = 9pt,
{splice rgc.field.caption}
},
{Fill}
}
{after 0s do
def h = f.parent
set h.background = "#94cbff"
}
{return f }
}
RecordGridColumnGroupの背景色
header-spec とどう連動させるとよいか具体的なコードがぱっと思いつきませんが、
RecordGridColumnGroupの背景色は RecordGrid.header-options で変えられたと思います。
RecordGridColumnGroupの背景色は RecordGrid.header-options で変えられたと思います。
Code:
header-options = {RecordGridRowOptions background = "#94cbff"}実行できるようなサンプルがついてないので推測ですが、
以下のようにしてRecordGridColumnGroupの方にも背景色を
設定したいということでしょうか。
それならば、RecordGridのheader-optionsオプションに設定すればどうでしょうか。
header-options = {RecordGridRowOptions background = "#94cbff"},
以下のようにしてRecordGridColumnGroupの方にも背景色を
設定したいということでしょうか。
それならば、RecordGridのheader-optionsオプションに設定すればどうでしょうか。
header-options = {RecordGridRowOptions background = "#94cbff"},
Code:
{define-proc public {make-header rgc:RecordGridColumn}:Graphic
def f =
{VBox
height = 15px,
width = {make-elastic},
halign = "center",
{RasterBox
font-size = 9pt,
{splice rgc.field.caption}
},
{Fill}
}
{after 0s do
def h = f.parent
set h.background = "#94cbff"
}
{return f }
}
{value
let people:RecordSet =
{RecordSet
{RecordFields
{RecordField
"First1", caption = "First Name1", domain = String
},
{RecordField
"First2", caption = "First Name2", domain = String
},
{RecordField
"Last", caption = "Last Name", domain = String
},
{RecordField "Age1", domain = int},
{RecordField "Age2", domain = int}
},
{RecordData First1 = "John", First2 = "John2", Last = "Smith", Age1 = 25, Age2 = 252},
{RecordData First1 = "Jane", First2 = "Jane2", Last = "Smith", Age1 = 29, Age2 = 252},
{RecordData First1 = "Jane", First2 = "Jane2", Last = "Jones", Age1 = 28, Age2 = 252}
}
let r:RecordGrid =
{RecordGrid
header-options = {RecordGridRowOptions background = "#94cbff"},
record-source = people,
height = 10cm,
width = 13cm,
header-spec = make-header,
{RecordGridColumnGroup
"",
{RecordGridColumn "First1"}
},
{RecordGridColumnGroup
"Name",
{RecordGridColumn "First2"},
{RecordGridColumn "Last"},
{RecordGridColumn "Age1"}
},
{RecordGridColumnGroup
"Ageeee",
{RecordGridColumn "Age2"}
}
}
r
}回答ありがとうございます。
header-options を指定したところ、RecordGridColumnGroupの背景色を設定することができましたが、
enclose-header-label? = falseとしてグループヘッダと列ヘッダの境界線を無くしている箇所について、
白い線が入っているような状態になります。
こちらもheader-options内で指定できる項目があるのでしょうか。
header-options を指定したところ、RecordGridColumnGroupの背景色を設定することができましたが、
enclose-header-label? = falseとしてグループヘッダと列ヘッダの境界線を無くしている箇所について、
白い線が入っているような状態になります。
こちらもheader-options内で指定できる項目があるのでしょうか。
これはRecordGridColumnGroupにenclose-header-label? = falseを設定した際、
白い罫線が描画されているのではなくて、セル間の微妙な隙間が白く見えているような状況です。
この隙間の色を変えることで回避できるかと思いますが、RecordGridの構造上、
この色を簡単に変えることはできないようです。
(header-options内や、RecordGrid等のオプションで設定する項目もないようです)
これを根本的に回避(色を変える)するにはオープンコントロールでRecordGrid自体のソースコードを修正し
そちらを使うことが考えられます。
が、オープンコントロールを使うとなるとパフォーマンス面などに大きく影響が出てきます。
なので、トリッキーなコードになりますが、この隙間の色を変えるのではなく、隙間自体をなくすように
すれば白い線が出ていないように見えます。
しかし、この隙間はヘッダーだけでなくデータ部の隙間も無くしてしまいますので標準のレコードグリッドと比べると
若干高さが低くなります。(本当に少し)
白い罫線が描画されているのではなくて、セル間の微妙な隙間が白く見えているような状況です。
この隙間の色を変えることで回避できるかと思いますが、RecordGridの構造上、
この色を簡単に変えることはできないようです。
(header-options内や、RecordGrid等のオプションで設定する項目もないようです)
これを根本的に回避(色を変える)するにはオープンコントロールでRecordGrid自体のソースコードを修正し
そちらを使うことが考えられます。
が、オープンコントロールを使うとなるとパフォーマンス面などに大きく影響が出てきます。
なので、トリッキーなコードになりますが、この隙間の色を変えるのではなく、隙間自体をなくすように
すれば白い線が出ていないように見えます。
しかし、この隙間はヘッダーだけでなくデータ部の隙間も無くしてしまいますので標準のレコードグリッドと比べると
若干高さが低くなります。(本当に少し)
Code:
{define-proc public {make-header rgc:RecordGridColumn}:Graphic
def f =
{VBox
height = 15px,
width = {make-elastic},
halign = "center",
{RasterBox
font-size = 9pt,
{splice rgc.field.caption}
},
{Fill}
}
{after 0s do
def h = f.parent
set h.background = "#94cbff"
}
{return f }
}
{value
let people:RecordSet =
{RecordSet
{RecordFields
{RecordField
"First1", caption = "First Name1", domain = String
},
{RecordField
"First2", caption = "First Name2", domain = String
},
{RecordField
"Last", caption = "Last Name", domain = String
},
{RecordField "Age1", domain = int},
{RecordField "Age2", domain = int}
},
{RecordData First1 = "John", First2 = "John2", Last = "Smith", Age1 = 25, Age2 = 252},
{RecordData First1 = "Jane", First2 = "Jane2", Last = "Smith", Age1 = 29, Age2 = 252},
{RecordData First1 = "Jane", First2 = "Jane2", Last = "Jones", Age1 = 28, Age2 = 252}
}
let f:Frame = {Frame "sss",
{on e:AttachEvent do
let vbox:VBox = f.parent.parent.parent.parent asa VBox
set vbox.spacing = 0pt
}
}
let r:RecordGrid =
{RecordGrid
header-options = {RecordGridRowOptions background = "#94cbff"},
record-source = people,
height = 10cm,
width = 13cm,
header-spec = make-header,
{RecordGridColumnGroup
enclose-header-label? = false,
f,
{RecordGridColumn
"First1"
}
},
{RecordGridColumnGroup
||++ enclose-header-label? = false,
"Name",
{RecordGridColumn "First2"},
{RecordGridColumn "Last"},
{RecordGridColumn "Age1"}
},
{RecordGridColumnGroup
"Ageeee",
{RecordGridColumn "Age2"}
}
}
r
}回答ありがとうございます。
確かに言われてみれば微妙に高さが変わっているような、というくらいの違いでした。
このような手法は考えてもいなかったので覚えておこうと思います。
確かに言われてみれば微妙に高さが変わっているような、というくらいの違いでした。
このような手法は考えてもいなかったので覚えておこうと思います。