以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  单元格中的显示问题(已解决)  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=39895)

--  作者:zpx_2012
--  发布时间:2013/9/3 21:45:00
--  单元格中的显示问题(已解决)
如下图在单元格中双击编辑时三行会自动变成一行,即:"酸洗抛光光面",但光标离开后又恢复为三行。

图片点击可在新窗口打开查看此主题相关图片如下:单元格中的多行.jpg
图片点击可在新窗口打开查看

要如何才能实现当前单元格宽度足够时自动显示在一行,而宽度不够时才自动换成多行显示,谢谢!。
[此贴子已经被作者于2013-9-4 10:42:31编辑过]

--  作者:有点甜
--  发布时间:2013/9/3 22:13:00
--  
 通过下列代码,可以得出字符串的宽度和高度,然后你根据这个值,和列的宽度去比较就行了。

Dim gc As Graphics = basemainform.CreateGraphics()
Dim size As SizeF = gc.MeasureString(Tables("进货单")(0,0) , Tables("进货单").Font)
msgbox(size.width)
msgbox(size.height)

--  作者:zpx_2012
--  发布时间:2013/9/4 8:40:00
--  
谢谢有点甜,是想单元格宽度足够时不要将文字分成多行显示,只在一行中显示所有内容,是不是中间有换行符,但为何双击编辑时又会显示成一行? 光标离开后又变为多行了。

图片点击可在新窗口打开查看此主题相关图片如下:360截图20130904083202349.jpg
图片点击可在新窗口打开查看


--  作者:狐狸爸爸
--  发布时间:2013/9/4 8:58:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目6.table


--  作者:zpx_2012
--  发布时间:2013/9/4 9:34:00
--  
新录入的数据都没有问题,现在是我系统的表中有很多这样多行显示的数据,可能是从excel中导入时造成的,但不知道怎么让它们显示为一行?


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


--  作者:Bin
--  发布时间:2013/9/4 9:37:00
--  
把例子发上来,把换行符替换掉应该就OK了.
--  作者:狐狸爸爸
--  发布时间:2013/9/4 10:01:00
--  

在DataColChanged事件中设置代码:

Select Case e.DataCol.Name
      Case "列1","列2","列3"
           if e.NewValue > "" then
                e.NewValue = e.NewValue.Replace(vblf,"").Replace(vbcr,"")
           End if
End Select

 


--  作者:zpx_2012
--  发布时间:2013/9/4 10:41:00
--  
谢谢,果然是换行符造成的。设置了一个通用的按钮去掉就可以了。
If CurrentTable.Rows.count > 0 Then
    For Each r As Row In CurrentTable.Rows
        For Each c As Col In CurrentTable.Cols
            If c.DataCol.IsString Then
                r(c.Name) = r(c.Name).replace(Chr(10),"")
            End If
        Next
    Next
End If