以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]单元格颜色  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=175521)

--  作者:2425004926
--  发布时间:2022/3/8 10:43:00
--  [求助]单元格颜色
我想让颜色这一列,选中一个颜色值时,单元格立即就变成这种颜色,
PrepareEdit事件代码中的几个值是我在中英文颜色对照表中选的几个值,
DrawCell事件中红色的代码应该怎么写?

PrepareEdit事件代码
If e.Col.Name = "颜色" Then
    e.Col.ComboList = "LightPink|Pink|Crimson|LavenderBlush"
End If

DrawCell事件中
If e.Col.Name = "颜色" And e.Row.IsNull(e.Col.Name) = False Then
    e.Style
End If

--  作者:有点蓝
--  发布时间:2022/3/8 11:08:00
--  
If e.Col.Name = "颜色" And e.Row.IsNull(e.Col.Name) = False Then
Dim s As String = e.Row(“颜色”) 
        e.Table.DataTable.AddUserStyle(s,ColorTranslator.FromHtml(s)),Color.black)
        e.Style=s
End If

--  作者:2425004926
--  发布时间:2022/3/8 11:18:00
--  
 谢谢!OK!
AddUserStyle这个函数的说明在哪里能看到

--  作者:2425004926
--  发布时间:2022/3/8 11:37:00
--  
在窗口中有一个按钮,按钮的名称  和  表中 r行的名称 是对应的,我想用 r行的颜色 表示这个按钮的背景色

Dim tt As String = "Color." & r("颜色")
e.Form.Controls(r("名称")).BackColor = tt

下面的代码测试结果
方法调用失败,因为“Public Overrides Property BackColor() As System.Drawing.Color”不能用这些参数调用:
    与参数“value”匹配的参数无法从“String”转换为“Color”。


如何改,请老师指点一下




--  作者:有点蓝
--  发布时间:2022/3/8 11:49:00
--  
以下是引用2425004926在2022/3/8 11:18:00的发言:
 谢谢!OK!
AddUserStyle这个函数的说明在哪里能看到

帮助搜“AddUserStyle”
--  作者:有点蓝
--  发布时间:2022/3/8 11:51:00
--  
以下是引用2425004926在2022/3/8 11:37:00的发言:
在窗口中有一个按钮,按钮的名称  和  表中 r行的名称 是对应的,我想用 r行的颜色 表示这个按钮的背景色

Dim tt As String = "Color." & r("颜色")
e.Form.Controls(r("名称")).BackColor = tt

下面的代码测试结果
方法调用失败,因为“Public Overrides Property BackColor() As System.Drawing.Color”不能用这些参数调用:
    与参数“value”匹配的参数无法从“String”转换为“Color”。


如何改,请老师指点一下

颜色值的转换看2楼
ColorTranslator.FromHtml(r("颜色"))
[此贴子已经被作者于2022/3/8 11:51:25编辑过]

--  作者:2425004926
--  发布时间:2022/3/8 12:53:00
--  
经测试
e.Style=Pink是可以的
e.Form.Controls(r("名称")).BackColor = Color.Pink     ‘是要加上"Color."


我把代码改了,又出现下面问题,是不是   e.Form.Controls(r("名称")).BackColor  只能等于常量,不能等于变量
Dim tt As String = r("颜色")
Tables("按钮1").DataTable.AddUserStyle(tt,ColorTranslator.FromHtml(tt),Color.black)
tt = "Color." & tt
e.Form.Controls(r("名称")).BackColor = tt
与参数“value”匹配的参数无法从“String”转换为“Color”

--  作者:2425004926
--  发布时间:2022/3/8 13:24:00
--  
解决了,我又加了一列“颜色对照”,用的是Hex颜色类型,颜色列 更改后 颜色对照 也相应更改

 e.Form.Controls(r("名称")).BackColor = ColorTranslator.FromHtml(r("颜色对照"))

--  作者:有点蓝
--  发布时间:2022/3/8 13:40:00
--  
tt = "Color." & tt
e.Form.Controls(r("名称")).BackColor = tt

等同于:e.Form.Controls(r("名称")).BackColor = "Color.Pink"
和:e.Form.Controls(r("名称")).BackColor = Color.Pink
完全不是一回事,前者只是一个普通字符串,后者是一个颜色类型

--  作者:2425004926
--  发布时间:2022/3/8 14:29:00
--  
 明白了