以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]动态增加控件,动态绑定行问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=186543)

--  作者:dhyskyworld
--  发布时间:2023/5/10 16:38:00
--  [求助]动态增加控件,动态绑定行问题
有如下表:
图片点击可在新窗口打开查看
新建一个窗口,增加一个按钮控件,按钮代码如下
Dim x As Integer = 0
Dim y As Integer = 0
For i As Integer = 0 To 3 \'列出全部
    If i Mod 2 = 0 Then
        y += 30
        x = 0
    Else
        x += 160
    End If
    Dim lbl As WinForm.label
    lbl = e.Form.CreateControl("label" & i, ControlTypeEnum.label)
    lbl.text = Tables("表A").Cols(i).Caption
    lbl.Left = 10 + x
    lbl.Top = 10 + y
    lbl.Width = "600"
    lbl.Height = "260"
    e.Form.AddControl(lbl)
Next
输出如图
图片点击可在新窗口打开查看
现在想要实现如下效果
图片点击可在新窗口打开查看
在鼠标单击不同行时,显示当前行的人员信息,单个增加控件可以实现这种效果,但是想用动态增加控件的方式,不知道能不能实现,自己试没成功,求实现效果的代码


--  作者:有点蓝
--  发布时间:2023/5/10 16:42:00
--  
参考:http://www.foxtable.com/webhelp/topics/1860.htm

lbl.BindingField = "表A." & Tables("表A").Cols(i).name

--  作者:dhyskyworld
--  发布时间:2023/5/10 17:08:00
--  
我的代码是以列名作为控件的名称,这个是不变的,是不是要另编一段代码增加控件来实现动态绑定呢?还是说可以以一段代码来同时增加控件,并指定其中的一批控件的列名绑定和其余的控件的动态绑定
[此贴子已经被作者于2023/5/10 17:09:29编辑过]

--  作者:有点蓝
--  发布时间:2023/5/10 17:11:00
--  
在增加一个控件进行绑定。比如姓名后再增加一个对应显示内容的控件
--  作者:dhyskyworld
--  发布时间:2023/5/11 10:48:00
--  
谢谢蓝老师的指点,动态增加控件,以及动态绑定已实现,就是还有一个关于日期显示的问题,表中的日期列是Data类型,显示是XXXX-XX-XX格式,但是动态控件读取的是DataTime类型的,XXXX-XX-XX 00::00:00,有什么解决方法么?
--  作者:有点蓝
--  发布时间:2023/5/11 10:50:00
--  
DataFormat事件处理http://www.foxtable.com/webhelp/topics/0737.htm

e.Text = format(e.Value,"yyyy-MM-dd")

--  作者:dhyskyworld
--  发布时间:2023/5/11 11:02:00
--  
代码加进去出错,我的代码如下:
        Dim a As Integer = 0
        Dim b As Integer = 0
        For c As Integer = 0 To 37 \'列出全部
            If c Mod 3 = 0 Then
                b += 20
                a = 0
            Else
                a += 300
            End If
            Dim lbl1 As WinForm.label
            lbl1 = e.Form.CreateControl("label" & c, ControlTypeEnum.label)
            lbl1.BindingField = "EI." & Tables("EI").Cols(c).name
            lbl1.AutoSize = True
            lbl1.Left = 130 + a
            lbl1.Top = 0 + b
            lbl1.Width = "600"
            lbl1.Height = "260"
            e.Form.Controls("SplitContainer2").Panel1.AddControl(lbl1)
        Next
[此贴子已经被作者于2023/5/11 11:02:36编辑过]

--  作者:dhyskyworld
--  发布时间:2023/5/11 11:06:00
--  
难道是要遍历控件查找后再设置格式,因为是有多个日期列,控件都是动态增加以及动态绑定的,不知道怎么弄了
[此贴子已经被作者于2023/5/11 11:15:23编辑过]

--  作者:有点蓝
--  发布时间:2023/5/11 11:24:00
--  
判断一下控件有绑定了日期列再格式化
--  作者:dhyskyworld
--  发布时间:2023/5/11 12:23:00
--  
蓝老师,这段代码出错e.Text = format(e.Value,"yyyy-MM-dd"),因为增加的是标签控件,改成e.Text = format(e.ReadValue,"yyyy-MM-dd")也出错,最后改成e.Text = format(e.Text,"yyyy-MM-dd"),执行时又不显示日期,感觉好像因为增加的是标签控件实现不了,我是不是应该改成TextBox控件?如果是在表中更改时间格式,控件能读取到更改后的时间格式吗?如果可以是在哪里编写代码?
[此贴子已经被作者于2023/5/11 13:04:40编辑过]