以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]遍历控件背景颜色的一个问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=146979)

--  作者:1669607010
--  发布时间:2020/3/7 9:22:00
--  [求助]遍历控件背景颜色的一个问题
窗口里做了个组织图,组织图的每个点为一个图片控件,组织点有两种状态,选中为黑,未选中为白,现在的需求是当组织图的任意一点状态发生变化时,遍历出所有选中状态的(黑色)控件,每一个选中控件生成一个12个字符的字符串(前5位为根据控件名称后五位+#FFFFFF组成,#FFFFFF根据控件背景色生成,),然后将所有的字符串用“丨”组合成一个字符串,再将最后的字符串绑定到表A的组织图列,现在哪位老师指导一下。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:组织图.table


[此贴子已经被作者于2020/3/7 9:28:05编辑过]

--  作者:有点蓝
--  发布时间:2020/3/7 9:44:00
--  
If e.Sender.Name.StartsWith("组织")   Then
    
    If e.Sender.BackColor=Color.White   Then
        e.Sender.BackColor=Color.Black
    Else
        e.Sender.BackColor=Color.White
    End If
    
    Dim s As String
    For Each c As Winform.Control In e.Form.Controls
        If c.Name.StartsWith("组织") AndAlso c.BackColor <> Color.White   Then
            Dim clr As Color = c.BackColor
            Dim c1 As String = "#" & Format(clr.R,"X2") & Format(clr.G,"X2") & Format(clr.B,"X2")
            Dim c2 As String =c.Name.SubString(2,5)
            Dim c3 As String =c2 & "|" & c1
            s=s & c3
            
        End If
    Next
    s = s.trim("|")
    MessageBox.Show(s)
    Tables("表A").Current("组织图") = s
End If

--  作者:1669607010
--  发布时间:2020/3/7 10:05:00
--  
谢谢蓝老师指导
--  作者:1669607010
--  发布时间:2020/3/7 13:01:00
--  
蓝老师,现在的代码已经能将窗口的组织图信息保存到表A的“组织图”列,那么还有一个问题,如何在打开窗口的时候,将表A当前行的组织图信息同步到窗口中?
--  作者:有点蓝
--  发布时间:2020/3/7 13:36:00
--  
2楼代码改一下
    For Each c As Winform.Control In e.Form.Controls
        If c.Name.StartsWith("组织") AndAlso c.BackColor <> Color.White   Then
            Dim clr As Color = c.BackColor
            Dim c1 As String = "#" & Format(clr.R,"X2") & Format(clr.G,"X2") & Format(clr.B,"X2")
            Dim c2 As String =c.Name.SubString(2,5)
            Dim c3 As String =c2 & "," & c1
            s=s & "|" & c3
            
        End If
    Next

窗口afterload

Dim s As String = Tables("表A").Current("组织图")

For Each s1 As String  In s.Split("|")
    Dim ar() As String = s1.Split(",")
    e.Form.controls("组织" & ar(0)).BackColor = System.Drawing.ColorTranslator.FromHtml(ar(1))
Next

--  作者:1669607010
--  发布时间:2020/3/7 13:41:00
--  
谢谢老师明白了