我想把超出Lable边界的部分用省略号"..."代替。
可是不知该从字符串的什么位置开始替换。
请高手指教。
可是不知该从字符串的什么位置开始替换。
请高手指教。
解决方案 »
- SQL中我将某日期字段设置为空后,但它全显示为1900-01-01 00:00:00,这是怎么回事呀?
- 请问VB6.0中SSTAB控件如何添加,我怎么找不到?
- 自己写的软件 RealOne 控件 支持 11声道Equ
- 在msflexgrid如何设置某一特定行的颜色(比如第一行)?急!
- 请Cooly(Lazy)进来说话!
- 如何将打印结果旋转90度?
- VB6:查询表中的所有字段
- 谁有取硬盘物理序列号的DLL或ActiceX?
- 在ASP页中怎么让表格不自动添加??
- 如何得到当前系统年月?easy,可是我不会
- 软件做好了,怎样做安装程序?大家指点小弟一下就好。谢谢~,给30分!
- 100分,在线等急用:如何通过office web components组件中的spreadsheet或excel工作表组件sheet将某个excel文件中的内容显示在vb窗口中
Lable的字体大小你应该知道吧,长度也知道了,Lable的Width与以上两个有个简单的算法不就能实现了吗?希望这对你有用。
Left As Long
Top As Long
Right As Long
Bottom As Long
End TypeDeclare Function DrawText& Lib "User32" Alias "DrawTextA" (ByVal HDC As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As Rect, ByVal wFormat As Long)根据Rect返回值,得到基本宽度,然后再作处理
if textwidth(left(label1),i))+textwidth("...")>label1.width then
label1.caption=left((label1),i-1) & "..."
exit for
endif
next
解答: 编成函数,借用一个 PictureBox
'Object: Form1、Picture1、Command1
Option Explicit
Public Function GetTextWidth(TextX As String, FontX As stdole.StdFont, PictureX As VB.PictureBox, Optional FromScale As VBRUN.ScaleModeConstants = vbHimetric, Optional ToScale As VBRUN.ScaleModeConstants = vbPixels) As Double
'保留原值,Clone 该字体为今后恢复,也可没必要
Dim Temp As New stdole.StdFont
Temp.Bold = FontX.Bold
Temp.Charset = FontX.Italic
Temp.Name = FontX.Name
Temp.Size = FontX.Size
Temp.Strikethrough = FontX.Strikethrough
Temp.Underline = FontX.Underline
Temp.Weight = FontX.Weight
Set PictureX.Font = FontX
GetTextWidth = PictureX.ScaleX(PictureX.TextWidth(TextX), FromScale, ToScale)
'恢复
Set PictureX.Font = Temp
End Function
'测试
Private Sub Command1_Click()
'VBA.MsgBox Me.ScaleX(Me.TextWidth("aa"), vbHimetric, vbPixels)
'VBA.MsgBox GetTextWidthPixels("aa", Me.Font, Picture1)
Dim x As New stdole.StdFont
x.Size = 12
VBA.MsgBox GetTextWidth("a阿", x, Picture1)
End Sub
If TextWidth(Left(Label1.Caption, i)) + TextWidth("...") > Label1.Width Then
Label1.Caption = Left((Label1), i - 1) & "..."
Exit For
End If
Next
刚才的符号错误了,我的程序肯定可以达到他的要求。
playyuer(心上人),你看错了我用len的用途了。:)
而长度是用textwidth函数来获得的,不信,你运行看看,绝对满足要求的说。
介绍一个API给你认识一下吧:
GetTabbedTextExtent 函数返回文本在设备中的宽度和高度。
然后用一个循环判断大小就可以了嘛。
而且费尽心思的不就是要知道文本的大小信息吗,如果多加一个Label控件,把Label.AutoSize属性设为True,在把Visidle属性设为False,不就是作为取得字符串大小的空件吗?通过设置Caption和读取Width属性,然后进行判断不就可以了吗?