以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 关于 RecordGrid 的用法 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=102352) |
-- 作者:zhsenchzhi -- 发布时间:2017/6/18 13:12:00 -- 关于 RecordGrid 的用法 想用 RecordGrid 来展示数据, 但是有一些问题想请教,如下图所示 以下问题 1 上图中,数据值右侧显示值的背景色默认为蓝色,能不能改,我想改成白色或其他颜色 刚才做了一下实验, 背景色为蓝色, 是因为我 指定了表的选定色为蓝色, 现在想问一下,能不能 在 主表中选定行用蓝色,而在 RecordGrid 中用别的颜色呢?如果能,该怎样实现呢? 2 右侧 的数据能不能居中显示, 或者我自己来指定,某列数据居中,靠左或者靠右,或者 字符串靠左,数字靠右, 布尔型居中呢? 3 通过它编辑数据时, 能不能 带原来的录入界面,比如,日期型的, 一点它,弹出日期输入框, 下拉列表型的,比如 男女性别的选择, 数字型的 或者我自己定义的 输入框
[此贴子已经被作者于2017/6/18 13:27:58编辑过]
|
-- 作者:有点色 -- 发布时间:2017/6/18 16:50:00 -- 1、
Dim rgd As object = Forms("窗口1").Controls("RecordGrid1").basecontrol rgd.styles.Normal.backcolor = color.red
2、
Dim brgd = e.Form.Controls("RecordGrid1").basecontrol
3、本来就是继承你表格的控件,不能自己自定义控件。 |
-- 作者:zhsenchzhi -- 发布时间:2017/6/18 21:17:00 -- 多谢有点色, 1 我试了第一种方法,发现 执行了 rgd.cols(1).textalign = 5 以后, 字符串 的值 都居中了, boolean 型的还是靠左, 这是怎么回事呢? 其实 我主要是想 让 Boolean 型 的居中 2 第二种方法, 没起作用呀, 请问 是不是要预先定义好 "样式1" 呢? Dim brgd = e.Form.Controls("RecordGrid1").basecontrol
Dim rng As C1.Win.C1FlexGrid.CellRange = brgd.GetCellRange(3, 1, 3, 1) Dim cs1 As C1.Win.C1FlexGrid.CellStyle = brgd.Styles.Add("样式1") cs1.TextAlign = 6 rng.style = cs1 |
-- 作者:有点色 -- 发布时间:2017/6/18 23:24:00 -- Dim brgd = e.Form.Controls("RecordGrid1").basecontrol Dim rng As C1.Win.C1FlexGrid.CellRange = brgd.GetCellRange(0, 1, brgd.rows.count-1, 1) Dim cs1 As C1.Win.C1FlexGrid.CellStyle = brgd.Styles.Add("样式1") cs1.TextAlign = 5 rng.style = cs1 |
-- 作者:zhsenchzhi -- 发布时间:2017/6/18 23:49:00 -- 你好,很感谢 你的帮助,试用了上面的代码,发现确实 boolean 型的 也居中了,但是 显示方式却变了, 原来 是 图形的 打钩 的方式,现在变成了 true false 的方式, 而且 不能选择,只能手工修改,请问这该怎么办呢? 怎样既能居中,又能 显示 打钩 的方式 呢? 另外还想请教一下, 能不能 做成 字符串 的 靠左, 数字靠右, Boolean 型的 居中呢?
|
-- 作者:有点色 -- 发布时间:2017/6/19 9:47:00 -- 1、boolean无法对齐,这个没办法。
2、
Dim brgd = e.Form.Controls("RecordGrid1").basecontrol
|
-- 作者:zhsenchzhi -- 发布时间:2017/6/19 23:04:00 -- 经过试验,用上楼 第二个方法,问题很多,不仅仅是居中的问题,还导致了很多别的问题, 最终采用了 第一个代码,也就是 Dim rgd As object = Forms("窗口1").Controls("RecordGrid1").basecontrol rgd.styles.Normal.backcolor = color.red 但是 rgd.styles.Normal.backcolor = color.red 没起作用,仅仅是把鼠标放在某一列进行编辑时,才起作用, 效果如下 我想原因如下: 1 我在 项目加载后, 给所有表 添加了 dt.AddUserStyle("选定行模式", Color.MediumSlateBlue, Color.White) 一个 模式, 2 并在全局表事件 drawcell 时,执行了以下语句 If e.Row.Index=e.Table.RowSel Then e.style="选定行模式" End If 这样所有的表在绘制单元格时,都执行这条语句, 采用 "选定行模式" 绘制, 这个 RecordGrid 也执行了 那么 有么有办法 只让 普通 table执行,, RecordGrid 不执行呢? |
-- 作者:有点蓝 -- 发布时间:2017/6/19 23:10:00 -- 绑定自己的drawcell事件 |
-- 作者:zhsenchzhi -- 发布时间:2017/6/20 2:35:00 -- 你好,我看了你发的连接, 代码 如下 全局代码
Public Sub TblBase_OwnerDrawCell(ByVal sender As Object, ByVal e As C1.Win.C1FlexGrid.OwnerDrawCellEventArgs)
绑定drawcell事件
Dim brgd As C1.Win.C1FlexGrid.C1FlexGrid = e.Form.Controls("RecordGrid1").basecontrol 我写了全局代码, 但是 RecordGrid 并不能单独定义 drawcell事件 呀,请问,该怎么办? |
-- 作者:有点色 -- 发布时间:2017/6/20 9:00:00 -- 测试了一下,9楼的代码有效。
Public Sub TblBase_OwnerDrawCell(ByVal sender As Object, ByVal e As C1.Win.C1FlexGrid.OwnerDrawCellEventArgs) |