以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何判断列名的长度  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=28804)

--  作者:blackzhu
--  发布时间:2013/2/19 14:16:00
--  如何判断列名的长度
  一个表 有N多列  我怎么找到某一个列的列名长度整个表内的列名长度为最长?


  不区分类型!
[此贴子已经被作者于2013-2-19 14:16:37编辑过]

--  作者:lin_hailun
--  发布时间:2013/2/19 14:35:00
--  
 一个一个比较呗。你想实现什么。
--  作者:blackzhu
--  发布时间:2013/2/19 14:38:00
--  
我想做个自动录入的窗口.但是标签对齐是个问题,所以需要找到最长列名的长度.  一个个比较?
[此贴子已经被作者于2013-2-19 14:38:24编辑过]

--  作者:lsy
--  发布时间:2013/2/19 14:46:00
--  

是列名?列标题?还是列中数据的长度?显示的是列标题,列名是看不见的,如果想让长数据一目了然,还得看数据长度,看起来楼主的本意,是列标题吧?

 


--  作者:lin_hailun
--  发布时间:2013/2/19 14:54:00
--  
以下是引用blackzhu在2013-2-19 14:38:00的发言:
我想做个自动录入的窗口.但是标签对齐是个问题,所以需要找到最长列名的长度.  一个个比较?
[此贴子已经被作者于2013-2-19 14:38:24编辑过]


那就遍历表所有的列,比较列名的长度呗。这里指的是字符个数,然后转成像素设置长度。
[此贴子已经被作者于2013-2-19 14:55:17编辑过]

--  作者:lin_hailun
--  发布时间:2013/2/19 14:58:00
--  
如果你想精确的话,或者可以这样确定长度。

得到字符最长的列名,然后设置都label中去,然后获取label的宽度(自适应)。以这个为标准设置其余label的宽度。

--  作者:blackzhu
--  发布时间:2013/2/19 15:05:00
--  
以下是引用lin_hailun在2013-2-19 14:58:00的发言:
如果你想精确的话,或者可以这样确定长度。

得到字符最长的列名,然后设置都label中去,然后获取label的宽度(自适应)。以这个为标准设置其余label的宽度。

  问题就是出在这里.对不齐   我已经找到列名的长度了


--  作者:lin_hailun
--  发布时间:2013/2/19 15:23:00
--  
 既然得到了列名长度,给label设置width属性就行了。你的label是否设置自动大小=true?

--  作者:blackzhu
--  发布时间:2013/2/19 15:31:00
--  
当然指定了呀.
--  作者:blackzhu
--  发布时间:2013/2/19 15:32:00
--  
If frm.TableName = Frm.Name Then
    For Each cl As Col In Tables(frm.TableName).Cols
        Name  = Name &  "|" & cl.Name
        If Max < cl.Name.Length Then
            Max = cl.Name.Length
        End If
    Next
    Dim i As Integer = 0
    Dim Multi As String = Name
    Dim Values() As String
    Values = Multi.split("|")
    Dim rowCnts,colCnts As Integer
    For Index As Integer = 1 To Values.Length - 1
        Dim sb As WinForm.TextBox
        Dim sb1 As WinForm.Label
        Dim rq As WinForm.DateTimePicker
        Dim sh As WinForm.CheckBox
        If i Mod MaxColCnts = 0 Then
            RowCnts +=1
            ColCnts = 0
            offestWidth =0
        End If
        colCnts +=1
        sb = e.Form.CreateControl(Values(Index),ControlTypeEnum.TextBox)
        sb1 = e.Form.CreateControl(Values(Index),ControlTypeEnum.Label)
        sb1.Text = Values(Index).Padleft(Max," ") & ":"
        sb1.AutoSize = True
        sb1.Height = 25
        sb1.Width = Max +3
        sb1.TextAlign =ContentAlignment.MiddleRight
        sb1.Left =colcnts * 10 + offestWidth
        sb1.Top =Rowcnts * 10 + offestHeight
        frmWidth = Math.Max(frmWidth,sb1.left + sb1.width)
        frmHeight = Math.Max(frmHeight,sb1.Top + sb1.Height)