Foxtable(狐表)用户栏目专家坐堂 → 图片自动更新


  共有5298人关注过本帖树形打印复制链接

主题:图片自动更新

帅哥哟,离线,有人找我吗?
Jonny
  31楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:42 积分:337 威望:0 精华:0 注册:2020/2/4 14:33:00
  发帖心情 Post By:2020/3/2 23:29:00 [只看该作者]

 版主:

尝试了很多遍,还是不行。改天传测试文件上来吧。现在有个更棘手的问题,需要您指导一下。

由于问题比较复杂,我上传了测试文档。


图片点击可在新窗口打开查看此主题相关图片如下:叉车点检界面设置.png
图片点击可在新窗口打开查看

设计思路是这样,通过主控窗口的SplitContainer,双击后调用录入窗口。这个《FoxTable数据库应用开发宝典》里有,已经搞定了。

录入窗口通过分隔线划为三个部分,第一部分是员工和设备信息录入,这个前期您已经指导过了,调整了两个控件的位置,也重新写了代码,测试通过了。

第二部分是检查项目,这个很犯难。不知道该使用哪一个控件来表达思路。实际的需求是有三列,一个是点检项目,一个点检要求,最后一个是图示。都是一对一的记录,比如选择点检项目P01,那么就应该只能选择P01的点检要求,即检查灭火器,同时PictureBox里可以显示现场实物照片,以提示员工。组合框和下拉框实现起来均不理想,后来我想到的控件是复选框列表,CheckedListBox,这样可以很清楚地列出所有条目。但有以下几个困难,解决不了:

  1. CheckedListBox的属性里,不能调整每行的高度,所以每个条目非常拥护,担心实际用的时候,员工不好选择;不知道有没有变通的办法?
  2. 最右侧的PictureBox不知道怎么才能自动关联照片?因为有些记录对应不止一张照片,可能是两张或三张。
  3. 点检结果需要进行逻辑判断。即第二个复选框列表里,如果有条目没有选中,那么点检结果必须选择异常,而且要把值写到“叉车点检”表里的“点检结果”列里
  4. 如果选择了异常,那么备注信息那个文本框不允许为空,必须要有内容,比如不少于5个汉字。就是强制员工必须输入自己发现的情况,将来还计划调用摄像头拍照,因为现场用的是工业平板电脑,硬件条件是用的。但那个有点难,暂时先预留,以后学会了再弄。

第三部分就是一些常规按钮,教程里都有,已经很清楚了。

由于现场特种设备比较多,叉车只是其中一种,所以我在“录入窗口”里设计了TabControl,有4个页面,可以切换到不同的录入界面,但录入结果都会绑定到“叉车点检”表里(其实不应该叫叉车点检表,应该叫“特种设备点检表”,前期没想好,现在改名字,工作量有点大,只能这样了)。这样可以避免主界面按钮过多,显得凌乱。但缺点是无法详细记录究竟是哪一个条目没有勾选,因为CheckedListBox的选择结果没有绑定任何表,只有输入,没有输出,不会保存数据。不过从现场反馈来看,这不重要,只要点检结果单选框是“异常”,而且“备注信息”里有内容参考即可,实际操作中那些条目本来就是打勾。如果记录每个条目的打勾,就需要在“叉车点检”表里做很多列来记录,不同的设备点检项目是一样的,这样表的数据会加大很多,不好管理。

内容比较多,不知道老师是否清楚了我的思路?

由于整个项目比较大,压缩包有6M多,超过了论坛的限制,所以只好上传主项目文件,详细内容,请见附件。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试2.table

如果需要整个项目,我可以尝试分卷压缩。

密码是默认值。





[此贴子已经被作者于2020/3/2 23:32:33编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Jonny
  32楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:42 积分:337 威望:0 精华:0 注册:2020/2/4 14:33:00
  发帖心情 Post By:2020/3/3 9:13:00 [只看该作者]

补充说明一下,就是第一个CheckedListBox必须全选中,表示操作员已经按要求检查了所有项目;第二个CheckedListBox允许有未选中情况,如果有,那么点检结果必须是异常,而且备注信息不能为空

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  33楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106178 积分:540007 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/3 10:22:00 [只看该作者]

1、可以改为使用表格
3、列数据之间的控制使用DataColChanged(http://www.foxtable.com/webhelp/topics/0625.htm)http://www.foxtable.com/webhelp/topics/2436.htm
4、到Validating事件验证控件内容:http://www.foxtable.com/webhelp/topics/0736.htm

 回到顶部
帅哥哟,离线,有人找我吗?
Jonny
  34楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:42 积分:337 威望:0 精华:0 注册:2020/2/4 14:33:00
  发帖心情 Post By:2020/3/5 18:08:00 [只看该作者]


 版主:

感谢指导,经过你的思路指导,顺利用“表”控制实现了我想要的功能,而且更加美观,易用。

经过帮助文件的指导,也实现了行位置关联PictureViewer。我用的是主表,没有采用帮助里副本的做法。

需要的功能比较多,我一个一个解决比较好,不要摊子铺得太多,一时半会也没那么多资源。


图片点击可在新窗口打开查看此主题相关图片如下:点检表录入2.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:点检信息录入3.png
图片点击可在新窗口打开查看


功能1:实现点检条目选择 ==> 已经通过表控件解决

功能2:点检条目2选择异常时,条目3不能为空。这个有点小问题。

1. 我通过在源表,即“海斯特叉车点检项目”里设置DataColChanged事件,写入如下代码
Dim dr As DataRow=e.DataRow
If e.DataCol.Name = "点检结果" Then '如果是点检结果列的内容有变动
    If e.NewValue = False And dr.IsNull("点检结论") Then '而且变动后的值是False,即有问题,而且"点检结果"列为空       
        MessageBox.Show("本项目点检异常,请在点检结论中输入你发现的情况,并报告班长.") '显示提示对话框
        e.Cancel=True
    End If
End If
这条代码的设计意图是:如果表中“点检结果”原来的旧值是“正常”,当将逻辑值选择为“异常”这个新值且右侧的“点检结论”列为空,那么弹出对话框,提示在“点检结论”列输入信息.这样的话,要求那个表控件里的“点检结果”列每次必须刷,而且默认结论必须是“异常”,否则逻辑不起作用。请问如何实现这一功能?或者有更好的思路?
2. 上述代码没有强制功能,不知如何用代码实现当“点检结果”为异常时,必须在“点检结论”中输入一定数量的文字,否则不允许离开当前控件。我尝试过ValidateEdit或者DataColChanging事件,但试来试去,和上面结果一样。请问有没有什么更好的办法?


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  35楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106178 积分:540007 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/6 8:46:00 [只看该作者]

1、 If e.NewValue = True Andalso dr.IsNull("点检结论")
2、如果是直接在表格录入,可以在表格ValidateEdit或者datacolchanging事件处理。如果是在窗口控件录入的,到控件Validating事件处理

 回到顶部
帅哥哟,离线,有人找我吗?
foxtable-hg
  36楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:93 积分:1059 威望:0 精华:0 注册:2018/9/9 18:03:00
  发帖心情 Post By:2020/3/6 10:35:00 [只看该作者]

搜藏版主授课内容。。。

 回到顶部
帅哥哟,离线,有人找我吗?
Jonny
  37楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:42 积分:337 威望:0 精华:0 注册:2020/2/4 14:33:00
  发帖心情 Post By:2020/3/6 11:18:00 [只看该作者]


 明白了,是我的逻辑有问题。

计划将新值“正常”写入本单元格,所以旧值肯定是“异常”,同时判断“点检结论”是否为空。

这个问题已经完美解决。

但这个表控件,我其实还有个小问题,昨天没好意思问。就是我想在“点检结果”列启用图片字典,正常显示绿色的对号,异常就显示红色的叉叉。按照帮助设置好了图片字典,但实际操作中,勾选了之后,单元格仍然是空白,不显示。

情况见下面的截屏。


图片点击可在新窗口打开查看此主题相关图片如下:图片字典1.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:图片字典3.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:图片字典2.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
Jonny
  38楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:42 积分:337 威望:0 精华:0 注册:2020/2/4 14:33:00
  发帖心情 Post By:2020/3/6 11:18:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:图片字典4.png
图片点击可在新窗口打开查看
 
设置“仅显示图片”,就下拉选择后,单元格是空白,不显示输入值。


图片点击可在新窗口打开查看此主题相关图片如下:图片字典5.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2020/3/6 11:20:57编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  39楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106178 积分:540007 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/6 13:37:00 [只看该作者]

逻辑列不支持图片字典

 回到顶部
帅哥哟,离线,有人找我吗?
Jonny
  40楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:42 积分:337 威望:0 精华:0 注册:2020/2/4 14:33:00
  发帖心情 Post By:2020/3/6 14:10:00 [只看该作者]


 哦,明白,谢谢版主。自己捣鼓了半天,原来系统不支持。还是多请教。

现在还剩下另外两个功能。

1. 因为使用了表控件,因此实际上每次点检的信息并没有保存,这一次会刷新上一次的。实际操作中,也可以接受这样的做法,但点检记录表中必须要有一列来记录每次点检是否正常。表控件中的“点检结果”列包含了若干行点检结果,最终只能有一个数据写个点检表里。其实逻辑也很简单,只要有一个行是“异常”,那么“点检结果”只能是异常,否则就是正常。

因为不知道怎么通过表控件来做,我额外用了单选按钮RadioButton,将值绑定至“叉车点检”表中的“点检结果”列中。这一列的数据类型是逻辑值,但测试时,系统提醒错误,而且看起来还比较严重。


图片点击可在新窗口打开查看此主题相关图片如下:绑定列1.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:绑定列5.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:索引损坏.png
图片点击可在新窗口打开查看


请版主指教哪个地方做得不对?

谢谢。
[此贴子已经被作者于2020/3/6 14:12:58编辑过]

 回到顶部
总数 47 上一页 1 2 3 4 5 下一页