以文本方式查看主题 - 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) |