Foxtable(狐表)用户栏目专家坐堂 → [求助] 动态增加Table的列宽设置


  共有3275人关注过本帖树形打印复制链接

主题:[求助] 动态增加Table的列宽设置

帅哥哟,离线,有人找我吗?
2900819580
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1325 积分:9627 威望:0 精华:0 注册:2015/6/30 8:46:00
  发帖心情 Post By:2018/3/31 20:25:00 [只看该作者]

以下是引用有点蓝在2018/3/30 22:33:00的发言:
tbn到底是控件名称还是表名称啊
tbl = e.Form.CreateTable(tbn , tbn , True)

-----------------------

CreateTable(Name, TableName, IsCopy)

Name:      控件名称
TableName: 数据表名称
IsCopy:    逻辑型,是否作为副本,设为True作为副本。

 
老师,我是想用SQLTable,但是上实例没办法用到数据库,所以临时改了的
tbl = e.Form.CreateSQLTable(tbn ,"Se lect * From {表A} ","ksg")



 回到顶部
帅哥哟,离线,有人找我吗?
2900819580
  22楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1325 积分:9627 威望:0 精华:0 注册:2015/6/30 8:46:00
  发帖心情 Post By:2018/4/1 16:06:00 [只看该作者]

Dim tb As Table = CurrentTable
Dim r As Row = tb.Current
If r Is Nothing Then Return

If r("i") = "+" Then
    Dim tab As WinForm.TabControl = e.Form.Controls("TabControl1")
    Dim id As Integer = tab.TabPages.Count
    ' Dim tbn As String = "TabMc" & id
    Dim tbn As String = "TabMc" & Format(Functions.Execute("返回服务器日期"),"HHmmss")
    tab.TabPages.Add(Tbn,r("名称"))
    tab.Se lectedIndex = id
    Dim CVS As String = tb.GetColVisibleWidth
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~?
       If e.form.controls.contains(tbn) Then
        MessageBox.Show("移除")
        e.form.RemoveControl(tbn)
    End If
    
    Dim tbl As WinForm.Table
    tbl = e.Form.CreateSQLTable(tbn ,"Sel ect * From {BOM} where 父阶代码 = '" & r("子阶代码") & "'", "ksg")
    
    tbl.Dock = 5
    e.Form.Controls("TabControl1").Tabpages(id).AddControl(tbl)
    tbl.ContextStrip = e.Form.Strips("快捷菜单3")
    tbl.Table.SetColVisibleWidth("i|18|序号|36|子阶代码|135|名称|129|规格型号|376|单位|36|用量|36|选用料|49|车间|36|组别|61|默认仓库名称|47|Comment|19|Footprint|19|Quantity|19")
    tbl.Table.Sort = "序号"
End If

老师,改用了时间 的作为Table命名,则没有错误,还是不清楚为什么用Id变更 会出现错误 。
另一个问题就是: 如果这样子建表,使用时间长了,是不是会造成很多无用的表。影响使用速度
[此贴子已经被作者于2018/4/1 16:07:33编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  23楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/1 18:20:00 [只看该作者]

我这样测试没问题

 

Dim tb As Table = CurrentTable
Dim r As Row = tb.Current

 


Dim tab As WinForm.TabControl = e.Form.Controls("TabControl1")
Dim id As Integer = tab.TabPages.Count
Dim tbn As String = "TabMc" & id
Dim p = tab.TabPages.Add("明细" & id,r("第一列"))
tab.SelectedIndex = id
Dim CVS As String = tb.GetColVisibleWidth
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~?
If e.form.controls.contains(tbn) Then
    MessageBox.Show("移除")
    e.form.RemoveControl(tbn)
End If

Dim tbl As WinForm.Table
tbl = e.Form.CreateSQLTable(tbn ,"Select * From {表A} ", "")

tbl.Dock = 5
p.AddControl(tbl)
tbl.Table.SetColVisibleWidth("i|36|序号1|40|子阶代码|141|名称|246|规格型号|175|单位|36|用量|50|总用量|50|车间|36|组别|36|默认仓库名称|53|备注|77|选用料|16|父阶代码|16|序号2|16|阶层|16|排序号|16|物料属性|16|Comment|16|Footprint|16")


 回到顶部
帅哥哟,离线,有人找我吗?
2900819580
  24楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1325 积分:9627 威望:0 精华:0 注册:2015/6/30 8:46:00
  发帖心情 Post By:2018/4/1 21:01:00 [只看该作者]

我测试还是不行,第一次运行是没问题的,关了窗体后,再启动后,有时可以,有时不可以,反正反复关窗体多几次就一定会出现错误!

做过msgbox测试,在以下这行代码中会出现 错误 !
tbl = e.Form.CreateSQLTable(tbn ,"Select * From {表A} ", "")

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  25楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/1 22:09:00 [只看该作者]

以下是引用2900819580在2018/4/1 21:01:00的发言:
我测试还是不行,第一次运行是没问题的,关了窗体后,再启动后,有时可以,有时不可以,反正反复关窗体多几次就一定会出现错误!

做过msgbox测试,在以下这行代码中会出现 错误 !
 

 

我测试实例没问题,请上传出错的例子。


 回到顶部
帅哥哟,离线,有人找我吗?
2900819580
  26楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1325 积分:9627 威望:0 精华:0 注册:2015/6/30 8:46:00
  发帖心情 Post By:2018/4/3 19:58:00 [只看该作者]

实际出出错的例子比较大,没办法上传。我把代码改成以下可以正常运行,
Dim tb As Table = CurrentTable
Dim r As Row = tb.Current
If r Is Nothing Then Return

If r("i") = "+" Then
    Dim tab As WinForm.TabControl = e.Form.Controls("TabControl1")
    Dim id As Integer = tab.TabPages.Count
    ' Dim tbn As String = "TabMc" & id
    Dim tbn As String = "TabMc" & Format(Functions.Execute("返回服务器日期"),"HHmmss")
    tab.TabPages.Add(Tbn,r("名称"))
    tab.Se lectedIndex = id
    Dim CVS As String = tb.GetColVisibleWidth
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~?
       If e.form.controls.contains(tbn) Then
        MessageBox.Show("移除")
        e.form.RemoveControl(tbn)
    End If
    
    Dim tbl As WinForm.Table
    tbl = e.Form.CreateSQLTable(tbn ,"Sel ect * From {BOM} where 父阶代码 = '" & r("子阶代码") & "'", "ksg")
    
    tbl.Dock = 5
    e.Form.Controls("TabControl1").Tabpages(id).AddControl(tbl)
    tbl.ContextStrip = e.Form.Strips("快捷菜单3")
    tbl.Table.SetColVisibleWidth("i|18|序号|36|子阶代码|135|名称|129|规格型号|376|单位|36|用量|36|车间|36|组别|61|默认仓库名称|47|Comment|19|Footprint|19|Quantity|19")
    tbl.Table.Sort = "序号"
End If

 回到顶部
总数 26 上一页 1 2 3