以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 两个窗口绑定同一表时图片列的显示问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=113502) |
||||
-- 作者:lake163 -- 发布时间:2018/1/17 9:28:00 -- 两个窗口绑定同一表时图片列的显示问题 情况描述: 1、设计情况 系统中,有表B,其中有图片列“照片”。 设计两个窗口“主”、“副”,两个窗口样式基本一致:均有一个表控件,均绑定表B,并都作为副本表;同时有一个PictureViewer控件,绑定副本表的“照片”列。 主窗口中还有一Button,用于同时打开副窗口(即主窗口不关闭),同时主窗口副本表有一个PositionChanged事件,用于主窗口与副窗口副本表的位置同步: If Forms("副").Opened() Dim t As Table = Tables("副_Table1") Dim p1 As Integer = e.Table.Position t.Position = p1 End If 2、运行情况 单独建立项目,运行上述窗口一切正常(见附件)。但是在原系统中出现了奇怪现象: (1)分别单独运行主窗口、副窗口,两个窗口中的照片均能正常显示。 (2)通过主窗口打开副窗口,两个窗口同时显示时,两个窗口中的照片均无法正常显示; 即使删除主窗口中的图片控件,副窗口图片仍然不能正常显示。 (3)如果把主窗口中的表改为主表,则一切又正常。 针对上述问题,排查了很多天,试了很多方法,仍然找不出问题所在,请问各位老师帮忙分析下,问题可能出在哪儿啊? [此贴子已经被作者于2018/1/17 9:29:17编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2018/1/17 9:58:00 -- 打开窗口代码,这样写
Forms("副").open() |
||||
-- 作者:lake163 -- 发布时间:2018/1/17 10:06:00 -- 因为两个窗口是要随时保持同步的,不能光是在打开时同步。 刚才,将主表中的所有事件逐个删除试了下,发现问题竟然是DRAWCELL中多了一段代码造成的: \'If e.Table.name = "方案" Then \' \'Else \'DataTables("方案").SysStyles("Normal").BackColor = Color.Blue \'DataTables("方案").SysStyles("Normal").ForeColor = Color.White \'DataTables("方案").SysStyles("CurrentRow").BackColor = Color.Red \'DataTables("方案").SysStyles("CurrentRow").ForeColor = Color.Yellow \'End If 这段代码是为了设置窗口中副本有的配色,删除后,就正常了,这是为啥啊? [此贴子已经被作者于2018/1/17 10:08:45编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2018/1/17 10:45:00 -- 1、和你3楼的代码没有任何关系。
2、没必要在drawcell事件设置SysStyles。 |
||||
-- 作者:lake163 -- 发布时间:2018/1/17 11:46:00 -- 1、删掉了这段代码,问题确实解决了,我也感到很奇怪。 2、在窗口代码中,如何设置副本表的配色啊?(CurrentRow可以通过属性设置)
|
||||
-- 作者:有点甜 -- 发布时间:2018/1/17 12:07:00 -- 设置的代码写到窗口的 AfterLoad 事件 |