以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于在窗口或容器中动态添加控件的问题!!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=71109)

--  作者:lmlptj
--  发布时间:2015/7/5 14:14:00
--  关于在窗口或容器中动态添加控件的问题!!
现有等表,分别为A-F等各等级(不确定个数),可能是1-6中的任意数个!!
还有:窗口1
等级表:

图片点击可在新窗口打开查看此主题相关图片如下:等级.jpg
图片点击可在新窗口打开查看
要求:根据等级划分A,B,C,D,E,F,G(有可能只其中一项,也有可能为六项,最少1项,最多6项),动态向窗口1中添加按钮控件,控件名及标题为等级表中的内容

请问:如何用代码实现呢???
想要得到的效果:

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

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

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




--  作者:lmlptj
--  发布时间:2015/7/5 14:15:00
--  

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




--  作者:lmlptj
--  发布时间:2015/7/5 14:15:00
--  

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

--  作者:lmlptj
--  发布时间:2015/7/5 14:15:00
--  

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

--  作者:大红袍
--  发布时间:2015/7/5 14:24:00
--  

动态添加,动态设置控件的位置和宽高就行

 

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

 


--  作者:lmlptj
--  发布时间:2015/7/5 14:31:00
--  
就是算不出这个公式出来!!!尤其是按钮的宽度是动态的,每个按钮之间假定空出10个像素,如何编写公式呢???
还有:钮的高度也算不出来,3个按钮排一行,每个按钮的高度与设定为的:窗口高度-40,上/下各留出20个像素……头都算大了!如果有第4个按钮,按钮的高度则相应缩小!以排满窗口1,各按钮之间留有10个像素的距离。
[此贴子已经被作者于2015/7/5 14:32:27编辑过]

--  作者:大红袍
--  发布时间:2015/7/5 15:15:00
--  
Dim ls As List(Of String) = DataTables("表A").GetValues("第一列", "第一列 is not null")
Dim t As Double = 0
Dim l As Double = 0
Dim m As Integer = ls.count Mod 3
For i As Integer = 0 To ls.Count - m - 1
    Dim btn As WinForm.button
    btn = e.Form.CreateControl("button" & ls(i), ControlTypeEnum.Button)
    btn.Text = ls(i)
    If i = 0 Then
        t = 100
        l = 0
    Else If i Mod 3 = 0
        t += 150
        l = 0
    Else
        l += 220
    End If
    btn.width = 200
    btn.height = 100
    btn.Left = l
    btn.Top = t
    e.Form.AddControl(btn)
Next
Dim w As Double = (640 - (m-1)*20) / m
l = 0
t += 150
For i As Integer = ls.Count - (ls.count Mod 3) To ls.Count - 1
    Dim btn As WinForm.button
    btn = e.Form.CreateControl("button" & ls(i), ControlTypeEnum.Button)
    btn.Text = ls(i)
   
    btn.width = w
    btn.height = 100
    btn.Left = l
    btn.Top = t
    l += w + 20
    e.Form.AddControl(btn)
Next

--  作者:lmlptj
--  发布时间:2015/7/5 16:21:00
--  
非常感谢老师指点!我是新手,这些代码还得好好消化消化!!!

代码中的"t+="怎么理解??

--  作者:大红袍
--  发布时间:2015/7/5 16:25:00
--  
 t += 150 等同于 t = t + 150
--  作者:lmlptj
--  发布时间:2015/7/7 0:50:00
--  
这个算法帮助好像没有!!!多谢老师指点!!!!