以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  两个窗口绑定同一表时图片列的显示问题  (http://www.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

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目1.foxdb

End If

2、运行情况

单独建立项目,运行上述窗口一切正常(见附件)。但是在原系统中出现了奇怪现象:

1)分别单独运行主窗口、副窗口,两个窗口中的照片均能正常显示。

2)通过主窗口打开副窗口,两个窗口同时显示时,两个窗口中的照片均无法正常显示;

      即使删除主窗口中的图片控件,副窗口图片仍然不能正常显示。

3)如果把主窗口中的表改为主表,则一切又正常。


针对上述问题,排查了很多天,试了很多方法,仍然找不出问题所在,请问各位老师帮忙分析下,问题可能出在哪儿啊?


[此贴子已经被作者于2018/1/17 9:29:17编辑过]

--  作者:有点甜
--  发布时间:2018/1/17 9:58:00
--  

打开窗口代码,这样写

 

Forms("副").open()
If Forms("副").Opened()
    Dim t As Table = Tables("副_Table1")
    Dim p1 As  Integer = Tables("主_Table1").Position
    t.Position = p1
End If


--  作者: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 事件