以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 给狐表提几个建议 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=22342) |
-- 作者:Fotable -- 发布时间:2012/8/9 15:35:00 -- 给狐表提几个建议 全是关于快速录入方面的 狐表在快速录入方面下了很多功夫,通过演示文件可以看出,很好很强大。但在实际使用过程中发现又有点缺憾。 比如: 1、 要做个下拉列表,我想 取值单位编码,显示单位简称,可以这样设置,但是确发现,只是下拉的时候显示单位简称,选好了填上去就变成编码了。能选和填看上去都是单位简称,存储的是编码吗?
2、要想实现上述要求还有一个办法,就是数据字典功能
我可以这样设置,但这样不管下拉,还是填上去后都是文字了,但有个问题就是不能直接输入了,必须通过下拉来选。如果我通过条码枪扫编码进去,不就要求能直接输入么。 |
-- 作者:飞 -- 发布时间:2012/8/9 15:40:00 -- 用你的第一个方案,结合DrawCell |
-- 作者:wjl-se -- 发布时间:2012/8/9 16:10:00 -- 楼主可能没理解"取值列"的含义 |
-- 作者:Fotable -- 发布时间:2012/8/9 16:12:00 -- 取值列是什么含义呢? |
-- 作者:Fotable -- 发布时间:2012/8/10 8:48:00 -- 请教如何 drawcell 我刚写了这样的代码 但有错误,请指教 If e.col.Name = "客户_个人" Then
错误在于 "编号 = e.text " 这个表达式中 [此贴子已经被作者于2012-8-10 9:12:15编辑过]
|
-- 作者:Fotable -- 发布时间:2012/8/10 9:18:00 -- 我改成 If e.col.Name = "客户_个人" Then 还是有错误 |
-- 作者:blackzhu -- 发布时间:2012/8/10 9:21:00 -- 很简单的 比如你的网名是ABCD是显示列, 但是取值列是你的真名,那么输入就是真实名字 如此而已. |
-- 作者:wjl-se -- 发布时间:2012/8/10 9:28:00 -- 这位兄台应该好好看看帮助才是 drawcell里用到find还是头一次见到 |
-- 作者:Fotable -- 发布时间:2012/8/10 9:49:00 -- 可能是我智力愚钝呀,不要笑话,帮助文件 全文 我已经阅读了2遍了, DrawCell 在绘制单元格的时候执行,主要用于标记数据。 因为DrawCell事件执行非常频繁,所以代码必须简洁,不可以有太耗时的复杂代码,也不能有显示对话框的代码,否则会出现死循环,切记切记。 示例一 对于数据管理来说,标出异常或特殊的数据也是一项经常性的工作,Foxtable并没有单独设置单元格颜色的方法,那么如何来标记呢?
假定我们一个学生成绩表中,需要用红色背景标出60分以下的分数,用绿色背景标出95分以上的分数。 首先在菜单的数据表功能区,执行自定义样式命令: 然后增加两个样式,分别是优秀和不及格,前者的背景颜色设为绿色,后者的背景颜色设为红色。 最后在DrawCell事件中设置如下代码: \'如果是数值型列,且不是总分列 If e.Col.IsNumeric AndAlso e.Col.Name <> "总分" Then If e.Row.IsNull(e.Col.Name) = False \'且该列已经输入内容 If e.Row(e.Col.Name) < 60 Then \'如果该列的值小于60 e.Style = "不及格" \'那么用"不及格"样式绘制单元格 ElseIf e.Row(e.Col.Name) > 95 Then \'如果单元格的值大于95 e.Style = "优秀" \'那么用"优秀"样式绘制单元格 End If End If End If 现在程序将用不同的背景颜色,分别标出优秀和不及格的分数: 提示,自定义样式不仅可以通过菜单添加,也可以通过代码添加,请参考:AddUserStyle
示例二 有的时候,不是标记一个单元格,而是希望整行用不同的颜色标记出来,那么代码更加简单。 If e.Row("总分") < 360 Thene.Style = "不及格" End If 示例三 DrawCell事件不仅用于标记数据,还可以用他“篡改”数据。 If User.Group = "经理" Then \'如果是经理Return \'那么返回,正常显示数据 End If If e.Col.Name = "密码" Then \'如果正在绘制的是密码列 e.Text = "****" \'那么用*代替原来的内容 End IF DrawCell事件只是影响显示内容,并不会对真实的值有任何影响。 示例四 DrawCell事件使用自定义样式来标记单元格。 DataTables("成绩表").Styles("不及格") 表示成绩表的不及格样式。 样式包括以下属性: BackColor: 背景颜色 例如对于不及格的成绩,不仅要求用红色标记出来,而且希望能够不停地闪烁,实现的步骤为: 1、增加一个名为“不及格”的自定义样式,样式的背景颜色设为红色。 2、将DrawCell事件的代码设为: \'如果是数值型列,且不是总分列 If e.Col.IsNumeric AndAlso e.Col.Name <> "总分" Then If e.Row.IsNull(e.Col.Name) = False \'且该列已经输入内容 If e.Row(e.Col.Name) < 60 Then \'如果该列的值小于60 e.Style = "不及格" \'那么用"不及格"样式绘制单元格 End If End If End If 3、在计划管理(位于数据库功能区)中增加一个计划,时间间隔设为1000,代码设为 With DataTables( "成绩表").Styles("不及格")If .BackColor = Color.Red Then .BackColor = Color.White Else .BackColor = Color.Red End If End With |
-- 作者:Fotable -- 发布时间:2012/8/10 9:51:00 -- 以下是引用wjl-se在2012-8-10 9:28:00的发言:
这位兄台应该好好看看帮助才是 drawcell里用到find还是头一次见到 drawcell不能用find 又该用什么呢?希望大家实在的帮助我一下,告诉我具体错在那里,该怎么做,这样新手才有成长。 只告诉我 不能用find新手实在不能悟出改用什么? |