以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  多值字段选择后怎么自动换行  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=153952)

--  作者:lianghanyu
--  发布时间:2020/8/28 16:02:00
--  多值字段选择后怎么自动换行

如图片,多值字段选择完后,怎么可以按右边的方式显示?

 

 


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

--  作者:有点蓝
--  发布时间:2020/8/28 16:16:00
--  
没有办法
--  作者:lianghanyu
--  发布时间:2020/9/1 14:33:00
--  

已经用下列框实现我想要的功能了.现在想更进一步,就是我同时选中多行,怎么对我选中的多行赋同样的值,因为有的时候,多行的任务是相同的,

 

原代码是:

 


For Each ctl As WinForm.Control In e.Form.Controls \'遍历所有控件
    If TypeOf ctl Is WinForm.CheckBox Then
        Dim rdo As WinForm.CheckBox = ctl
        If rdo.Checked Then \'如果已经选中
            e.Form.DropDownBox.Value = e.Form.DropDownBox.Value & rdo.Text & vbcrlf \'将此框的文本赋值给下拉组合框
        End If
    End If
Next
e.Form.DropDownBox.CloseDropdown() \'关闭下拉窗口

 

效果图如下:

 

 


此主题相关图片如下:111.gif
按此在新窗口浏览图片

--  作者:有点蓝
--  发布时间:2020/9/1 14:54:00
--  
选中多行参考:http://www.foxtable.com/webhelp/topics/1597.htm
--  作者:lianghanyu
--  发布时间:2020/9/1 17:30:00
--  

写成这样,可以实现不了图片点击可在新窗口打开查看

 

 

With Tables("项目总表")
    If .TopPosition > -1 Then \'如果选定区域包括数据行
          For i as Integer = .TopPosition To .BottomPosition
For Each ctl As WinForm.Control In e.Form.Controls \'遍历所有控件
    If TypeOf ctl Is WinForm.CheckBox Then \'如果此控件是RadionButton(单选框)
        Dim rdo As WinForm.CheckBox = ctl
        If rdo.Checked Then \'如果已经选中
            e.Form.DropDownBox.Value = e.Form.DropDownBox.Value & rdo.Text & vbcrlf \'将此单选框的文本赋值给下拉组合框
        End If
    End If
Next
     Next
    End If
End With
e.Form.DropDownBox.CloseDropdown() \'关闭下拉窗口


--  作者:有点蓝
--  发布时间:2020/9/1 17:41:00
--  
一个勾选框放到一行里?还是多行都是同样的值?
--  作者:lianghanyu
--  发布时间:2020/9/1 18:19:00
--  

我要实现多行同样值.

 

按上边的代码,出来后是一个勾选框放在一行里了,不是我想要的图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2020/9/1 20:17:00
--  
dim s as string
For Each ctl As WinForm.Control In e.Form.Controls \'遍历所有控件
    If TypeOf ctl Is WinForm.CheckBox Then 
        Dim rdo As WinForm.CheckBox = ctl
        If rdo.Checked Then \'如果已经选中
            s = s & vbcrlf  & rdo.Text \'将此框的文本赋值给下拉组合框
        End If
    End If
Next
s = s.trim(vbcr,vblf)
For i as Integer = Tables("项目总表").TopPosition To Tables("项目总表").BottomPosition
Tables("项目总表").rows(i)("xx列") = s
next
e.Form.DropDownBox.Value = s
e.Form.DropDownBox.CloseDropdown() \'关闭下拉窗口

--  作者:lianghanyu
--  发布时间:2020/9/2 10:38:00
--  

谢谢,已经解决.

 

不过按上边的,如果选了个空值,会报警,优化了一下如下:

 

Dim s As String
For Each ctl As WinForm.Control In e.Form.Controls \'遍历所有控件
    If TypeOf ctl Is WinForm.CheckBox Then
        Dim rdo As WinForm.CheckBox = ctl
        If rdo.Checked Then \'如果已经选中
            s = s & vbcrlf  & rdo.Text \'将此框的文本赋值给下拉组合框
        End If
    End If
Next
If s IsNot Nothing Then
    s = s.trim(vbcr,vblf)
    For i As Integer = Tables("项目总表").TopPosition To Tables("项目总表").BottomPosition
        Tables("项目总表").rows(i)("设计内容") = s
    Next
Else
    For i As Integer = Tables("项目总表").TopPosition To Tables("项目总表").BottomPosition
        Tables("项目总表").rows(i)("设计内容") = ""
    Next
End If
e.Form.DropDownBox.Value = s
e.Form.DropDownBox.CloseDropdown() \'关闭下拉窗口


--  作者:有点蓝
--  发布时间:2020/9/2 10:43:00
--  
图片点击可在新窗口打开查看
理解了代码自己扩展就很容易了