以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]picturebox关联列显示问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=75093)

--  作者:13865161910
--  发布时间:2015/9/26 17:07:00
--  [求助]picturebox关联列显示问题
1、现有一张表“A”和表“B”,两张表通过表中的[ZL]列进行关联,生成了新表“C”
2、创建窗口,建立表窗口绑定表“A”,创建记录窗口绑定表“C”的[ZL]列
3、当选择A表的某一行是,记录窗口同时显示C表的相关[ZL]列等信息
4、创建控件picturebox,关联表“C”的[ZL]列,并以最顶端方式放置在记录窗口控件的上面,大小与记录窗口相同

需求:
当选择表“A”的某一行是,同时记录窗口中正常显示绑定列[ZL]的信息
如此信息的内容为,则picturebox控件显示,并getimage=图1.png,图片来源于项目image文件夹,否则隐藏图片控件不显示图片,正常显示记录窗口及内容

测试:
在表“C”的表事件currendchanged事件中写入如下代码
Dim r As Row = Tables("C").Current
If Forms("窗口").Opened Then
    Dim pbx As WinForm.PictureBox = Forms("窗口").Controls("picturebox1")
    If r IsNot Nothing Then
        If r("ZL") = "开发中" Then
            pbx.Image = getimage("图1.png") \'显示图片
            e.Form.Controls("picturebox1").Visible = True 
        Else
           pbx.Image = Nothing \'不显示图片
           e.Form.Controls("picturebox1").Visible = False 
        End If
    Else
        pbx.Image = Nothing \'不显示图片
        e.Form.Controls("picturebox1").Visible = False 
    End If
End If

测试不成功,后将代码移至PositionChanged (选择不同行后执行),问题依旧

请教改如何修改实现?



[此贴子已经被作者于2015/9/28 10:17:21编辑过]

--  作者:狐狸爸爸
--  发布时间:2015/9/28 8:39:00
--  

 换个思路,参考这个事件:

http://www.foxtable.com/help/topics/2514.htm

 


--  作者:13865161910
--  发布时间:2015/9/28 10:31:00
--  回复:(狐狸爸爸) 换个思路,参考这个事件:...
首先感谢狐爸百忙之中的解答,之前已经看过帮助中关于这个显示的介绍,但是测试效果还是不行
我在控件中重新写了代码,不知道这么写是否合理,请参考

Dim pbx As WinForm.PictureBox = e.Sender
Dim r As Row = Tables("C").Current
If r("ZL") = ""  Then
    e.Form.Controls("前片开发").Visible = True
    e.File = "Development.png" \'显示图片
Else
    e.Form.Controls("前片开发").Visible = False
    e.File = "" \'不显示图片
End If

如果此行的ZL列值为空,则显示该控件,并加载图片,反之,隐藏控件不加载图片。不过这有个问题,这个buforegetimage的事件主要作用于显示图片文件之前执行,那如何判定我当前选中的表A的某一行所关联的表C中显示的数据呢?可能还是没弄明白原理,抱歉

--  作者:大红袍
--  发布时间:2015/9/28 10:58:00
--  
上传例子说明问题。
--  作者:13865161910
--  发布时间:2015/9/28 12:08:00
--  回复:(大红袍)上传例子说明问题。
例子使用的是外部数据源,且表太多,有内部资料,不太方便上传,其实要实现的效果已经说明了,只是不知道该如何实现而已!
--  作者:大红袍
--  发布时间:2015/9/28 12:18:00
--  

点击表A的时候,定位一下表C

 

http://www.foxtable.com/help/topics/0553.htm

 


--  作者:13865161910
--  发布时间:2015/9/28 13:56:00
--  回复:(大红袍)点击表A的时候,定位一下表C ...
是不是出现BUG了还是怎么回事?还是机器码变更了?中途换过一次显卡,但是未提示需要重新激活
我在picturebox 的beforegetimage 中代码,然后预览窗口就会弹出如下提示:

图片点击可在新窗口打开查看此主题相关图片如下:222222222.jpg
图片点击可在新窗口打开查看


--  作者:大红袍
--  发布时间:2015/9/28 14:07:00
--  

改一下名字看看,在不行,

 

跟客服核对一下激活码是否正确。


--  作者:狐狸爸爸
--  发布时间:2015/9/28 14:08:00
--  
以下是引用13865161910在2015/9/28 10:31:00的发言:
首先感谢狐爸百忙之中的解答,之前已经看过帮助中关于这个显示的介绍,但是测试效果还是不行
我在控件中重新写了代码,不知道这么写是否合理,请参考

如果此行的ZL列值为空,则显示该控件,并加载图片,反之,隐藏控件不加载图片。不过这有个问题,这个buforegetimage的事件主要作用于显示图片文件之前执行,那如何判定我当前选中的表A的某一行所关联的表C中显示的数据呢?可能还是没弄明白原理,抱歉


既然有关联,那么很好办:
http://www.foxtable.com/help/topics/0431.htm
http://www.foxtable.com/help/topics/0432.htm
http://www.foxtable.com/help/topics/2649.htm

例如获取父表当前行对应子表的全部数据,
Dim dr As List(of Datarow) = Table("父表").Current.DataRow.GetChildRows("子表")

--  作者:13865161910
--  发布时间:2015/9/28 14:36:00
--  回复:(大红袍)改一下名字看看,在不行, ...
删除控件,重新建立控件,问题解决。。。。这算BUG么,问了客服,竟然不回复,直接让我评价


红袍大大,刚刚的问题还是没有解决,能鉴于我提供的信息给予提供个代码范例么?
主要是选择表A某一行,判断关联的表C(临时表)中的[ZL]列为空值的时候,显示图片控件,并加载图片

图片点击可在新窗口打开查看此主题相关图片如下:11111111111111.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:222222222.jpg
图片点击可在新窗口打开查看

如果为图2的空值,则显示下图

图片点击可在新窗口打开查看此主题相关图片如下:33333.jpg
图片点击可在新窗口打开查看