以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 动态增加Table的列宽设置  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=116539)

--  作者:2900819580
--  发布时间:2018/3/26 16:23:00
--  [求助] 动态增加Table的列宽设置
代码如下,红色代码有问题!

Dim tb As Table = Tables(e.Form.Name & "_Table1")
Dim r As Row = tb.Current

If r("i") = "+" Then
    
    Dim tab As WinForm.TabControl = e.Form.Controls("TabControl1")
    Dim id As Integer = e.Form.Controls("TextID").text
    tab.TabPages.Add("明细" & id,r("名称"))
    
    \'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·
    Dim tbl As WinForm.Table
    tbl = e.Form.CreateSQLTable("TabC" & id ,"Sel ect * From {BOM} where 父阶代码 = \'" & r("父阶代码") & "\'", "ksg")
    
    tbl.Dock = 5
    tbl.Table.SetColVisibleWidth(tb.GetColVisibleWidth)  ‘’‘ 此行代码无效    
    e.Form.Controls("TabControl1").Tabpages(id).AddControl(tbl)
    e.Form.Controls("TextID").text = id + 1
    tab.SelectedIndex = id
    
End If

--  作者:有点甜
--  发布时间:2018/3/26 16:39:00
--  

你现在执行后的效果是怎样的?你tb和tbl表获取的是不是同一个表【bom】?

 

做个实例发上来测试。


--  作者:2900819580
--  发布时间:2018/3/26 16:45:00
--  
执行的效果是这行代码没有任何动作
我试过以下两行代码都出错。 动态增加的Table 名称是什么?

Tables("TabC" & id).SetColVisibleWidth(tb.GetColVisibleWidth) 
Tables(e.form.name & "TabC" & id).SetColVisibleWidth(tb.GetColVisibleWidth) 


--  作者:有点甜
--  发布时间:2018/3/26 16:53:00
--  

那就尝试改成这样,是什么效果?

 

tbl.Table.SetColVisibleWidth("")


--  作者:2900819580
--  发布时间:2018/3/26 17:17:00
--  
没有任何作用。


--  作者:有点甜
--  发布时间:2018/3/26 17:33:00
--  
以下是引用2900819580在2018/3/26 17:17:00的发言:
没有任何作用。

 

那显示什么?能否不显示任意列?或者试试

 

e.Form.Controls("TabControl1").Tabpages(id).AddControl(tbl)
tbl.Table.SetColVisibleWidth("")

 

如果还是有问题,实例发出来测试。


--  作者:2900819580
--  发布时间:2018/3/26 19:07:00
--  
e.Form.Controls("TabControl1").Tabpages(id).AddControl(tbl)
tbl.Table.SetColVisibleWidth("")
得到结果如下

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

e.Form.Controls("TabControl1").Tabpages(id).AddControl(tbl)
tbl.Table.SetColVisibleWidth(tb.GetColVisibleWidth)
出现以下错误 

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

[此贴子已经被作者于2018/3/26 19:07:10编辑过]

--  作者:有点蓝
--  发布时间:2018/3/26 20:40:00
--  
7楼是重复添加了同一个名称的表。实例发上来测试
--  作者:有点甜
--  发布时间:2018/3/27 9:20:00
--  

这个红色的那个不能重复的

 

Dim tbl As WinForm.Table

tbl = e.Form.CreateSQLTable("TabC" & id ,"Sel ect * From {BOM} where 父阶代码 = \'" & r("父阶代码") & "\'", "ksg")
 
比如,如果你已经添加过 table1,你就不能再新建 table1 这样的控件的,不然就报错。
 
如果你的table1已经存在,先要移除才能再次添加。或者是,直接使用table1,然后调用fill转换成别的表。

--  作者:2900819580
--  发布时间:2018/3/30 15:46:00
--  
如何判断表是否已经存在?以下代码不动作! 如何移除Table

    If Tables.Contains("TabC" & id) Then
        MessageBox.Show("有")
    End If