以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 下拉窗口设置 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=64462) |
-- 作者:Alex-Sun -- 发布时间:2015/2/14 9:09:00 -- 下拉窗口设置 求助各位大神: 本人有以下需求: 1.物料属性共有五级,类型一级(如A、B、C)、类型二级(如A中有A1、A2、A3,B中有B1、B2、B3),以此类推共有五级; 2.物料表内共有类型一级、类型二级···类型五级,物料编号,其他一共七列。 3.想设置一个录入窗口,包含五个下拉窗口,分别对应类型一级至五级,然后在类型一级选择完成后(如选择B)再选择类型二级时只列出与类型一级有关的选项(如只显示B1、B2、B3供选择); 4.还有一个编码窗口用于在定义出五级属性之后从表中自动编号然后读到该窗口显示。 5.最有还有一个窗口用于写入“其他”列的内容。 不知道以上功能能够实现?具体应该怎么操作?求大神指点,不胜感激······ |
-- 作者:Bin -- 发布时间:2015/2/14 9:13:00 -- 参考http://www.foxtable.com/help/topics/1523.htm 自己设计一个窗口,用表格保存数据 实在搞不定就上例子吧
|
-- 作者:Alex-Sun -- 发布时间:2015/2/14 9:24:00 -- 谢谢斑竹的快速回复~~~ 貌似只解决了五级关联下拉窗口的问题,还有自动编号后读取到窗口的呢?再次烦请斑竹大大帮忙··· |
-- 作者:Bin -- 发布时间:2015/2/14 9:33:00 -- 利用 DataColChanged事件 http://www.foxtable.com/help/topics/0625.htm select case e.datacol.name case "列1","列2","列3" e.datarow("编号")=e.datarow("列1") & e.datarow("列2") & e.datarow("列3") end select
|
-- 作者:Alex-Sun -- 发布时间:2015/2/14 11:11:00 -- 搞定了,谢谢斑竹!!! 还有个小问题:类型一级至五级已经选完,但是还未录入的时候发现某级选错,在更改后能够让后续的几级自动变成待选状态? 参看附图1、2,附图2中二级已经更改,如何让三四五级都变成初始的待选状态(空白等待点击下拉进行选择) 此主题相关图片如下:刚录入.jpg 此主题相关图片如下:二级已更改.jpg [此贴子已经被作者于2015/2/14 11:21:44编辑过]
|
-- 作者:Bin -- 发布时间:2015/2/14 11:14:00 -- 上传图片看这里http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=78 最好就直接设置一个清空按钮 设置代码 dim r as row = tables("X").current r("列1")="" r("列2")=""
|
-- 作者:Alex-Sun -- 发布时间:2015/2/14 11:24:00 -- 不好意思刚才忘了上传图片~~~ 直接清空再选比较麻烦,想修改一个后面的都清空。 麻烦斑竹再教下~~~ |
-- 作者:Bin -- 发布时间:2015/2/14 11:29:00 -- 修改第一个后面的都清空? 在DataColChanged事件 dim ls as string()={"列1","列2","列3"} select case e.datacol.name case "列1","列2","列3" Dim b As Boolean for each s as string in ls if b then e.datarow(s)="" end if if s == e.datacol.name then b=true end if next end select
|
-- 作者:Alex-Sun -- 发布时间:2015/2/14 13:36:00 -- 能否注释一下每行是什么意思? |
-- 作者:Bin -- 发布时间:2015/2/14 14:06:00 -- dim ls as string()={"列1","列2","列3"} \'声明一个数组 包含所有参与的列,顺序一定要符合你的先后顺序 select case e.datacol.name \'判断当前触发改变的列名 case "列1","列2","列3" \'判断如果是符合你要求的列名 Dim b As Boolean \' 增加一个逻辑类型的变量, 作为标识. for each s as string in ls \'遍历用到的列名数组 从第一个开始 if b then \' 判断标识如果是True 则说明这个列名的列需要清空 e.datarow(s)="" \'清空 end if if s == e.datacol.name then \'判断一下当前触发改变的列是否和遍历到的列名是一致 b=true \'如果是一致,说明这个列就是你改变了列,那么从这个列开始,后面的列就需要清空了, 设置标识为True 下次循环的时候 因为标识已经为True就会把列清空 end if next end select
|