以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]按照顺序增加控件textbox  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=82289)

--  作者:huhu
--  发布时间:2016/3/15 11:49:00
--  [求助]按照顺序增加控件textbox
我想点击盖楼这个button,然后窗体自动增加一个textbox,属性是多行。
竖排增加。这种自动增加控件有办法实现吗?

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


--  作者:大红袍
--  发布时间:2016/3/15 11:57:00
--  

参考代码

 

static i As Integer = 0
static y As Integer = 20

Dim txt As WinForm.TextBox
txt = e.Form.CreateControl("TextBox" & i, ControlTypeEnum.TextBox)
txt.Left = 150
txt.Top = y
txt.height = 50
txt.MultiLine = True
txt.ScrollBars = Windows.Forms.ScrollBars.Vertical
e.Form.AddControl(txt)

i+= 1
y += txt.height + 10


--  作者:huhu
--  发布时间:2016/3/15 15:40:00
--  
怎么改这个控件的大小?把txt.height = 5000  改大也无用。

--  作者:huhu
--  发布时间:2016/3/15 16:10:00
--  
找到了。setbounds
txt.SetBounds(150,y,300,100)

问题来了。
现在是窗体不会自动向下拉,就是增加了多个textbox后,后面增加的textbox看不到了。窗体需要有下拉条才行。怎么弄?

--  作者:huhu
--  发布时间:2016/3/15 16:11:00
--  
哦。改为自动滚动就可以了。
--  作者:大红袍
--  发布时间:2016/3/15 16:22:00
--  

新版没问题,旧版要换一下顺序

 

txt.MultiLine = True

txt.height = 500


--  作者:huhu
--  发布时间:2016/3/15 17:26:00
--  
Dim r As Row = Tables("盖楼").AddNew()
static i As Integer = 0
static y As Integer = 20
Dim txt As WinForm.TextBox
Dim Label1,label2 As WinForm.Label
txt = e.Form.CreateControl("TextBox" & i, ControlTypeEnum.TextBox)
label1 = e.Form.CreateControl("label1" & i, ControlTypeEnum.label)
label2 = e.Form.CreateControl("label2" & i, ControlTypeEnum.label)
txt.Left = 150
txt.Top = y
txt.height = 50
txt.MultiLine = True
txt.ScrollBars = Windows.Forms.ScrollBars.Vertical
txt.SetBounds(150,y,500,50)
e.Form.AddControl(txt)
txt.BindingField = "盖楼.备注"
label1.Left = 50
label1.Top = y
e.Form.AddControl(label1)
Dim str As String
Dim id  As Integer
id = user.name.IndexOf("@")
str = user.name.SubString(0,id)
label1.Text = i & "楼" & str
msgbox(label1.text)
label1.BindingField = "盖楼.回复者"
label2.SetBounds(50,y + 20,100,50)
label2.Left = 50
label2.Top = y + 20
e.Form.AddControl(label2)
label2.BindingField = "盖楼.回复时间"
label2.Text = Date.now
i+= 1
y += txt.height + 10

label1和label2的绑定为啥不生效呢?

--  作者:大红袍
--  发布时间:2016/3/15 20:17:00
--  
你绑定有什么意义?绑定的数据,只能显示一行的,莫非你新增的控件都显示一行的数据?
--  作者:huhu
--  发布时间:2016/3/16 9:30:00
--  
盖楼click代码:
DataTables("盖楼").LoadFilter = "BUG_ID = \'" & Vars("BUGID") & "\'"
DataTables("盖楼").Load
Dim r As Row = Tables("盖楼").AddNew()
r("BUG_ID") = Vars("BUGID")
static i As Integer = 0
static y As Integer = 20
Dim txt As WinForm.TextBox
Dim Label1,label2 As WinForm.Label
txt = e.Form.CreateControl("TextBox" & i, ControlTypeEnum.TextBox)
label1 = e.Form.CreateControl("label1" & i, ControlTypeEnum.label)
label2 = e.Form.CreateControl("label2" & i, ControlTypeEnum.label)
txt.Left = 150
txt.Top = y
txt.height = 50
txt.MultiLine = True
txt.ScrollBars = Windows.Forms.ScrollBars.Vertical
txt.SetBounds(150,y,500,50)
e.Form.AddControl(txt)
txt.BindingField = "盖楼.备注"
label1.Left = 50
label1.Top = y
e.Form.AddControl(label1)
Dim str As String
Dim id  As Integer
id = user.name.IndexOf("@")
str = user.name.SubString(0,id)
label1.Text = i & "楼" & str
\'msgbox(label1.text)
\'\'label1.BindingField = "盖楼.回复者"
label2.SetBounds(50,y + 20,100,50)
label2.Left = 50
label2.Top = y + 20
e.Form.AddControl(label2)
\'label2.BindingField = "盖楼.回复时间"
label2.Text = Date.now
i+= 1
y += txt.height + 10
就是需要把新增的控件的内容写入到新增行中。另外绑定了数据,再次点击盖楼,控件内容消失了,但后台数据仍然保留有,这是怎么回事?
还有就是明明新增了好几个textbox,再次打开控件的都没了。

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


--  作者:大红袍
--  发布时间:2016/3/16 9:44:00
--  

每一楼,控件命名为比如 "txt" & r("_Identify")

 

然后在textchanged事件里面写代码

 

Dim fdr As DataRow = DataTables("盖楼").Find("_Identify = \'" & e.Sender.name.Replace("txt", "") & "\'")

If fdr IsNot Nothing Then

    fdr("备注") = e.sender.Text

End If