以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  专业报表WIdth值固定,text超长字号能否自动变小?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=64395)

--  作者:unverse
--  发布时间:2015/2/12 17:17:00
--  专业报表WIdth值固定,text超长字号能否自动变小?
Dim doc As New PrintDoc \'定义一个报表
Dim rt As New prt.RenderText \'定义一个文本对象
rt.Text = "Hello Foxtable" \'设置文本对象的内容
rt.Style.Borders.All = New prt.Linedef(0.3, Color.Red) \'设置边框

rt.Width=20
doc.Body.Children.Add(rt) \'将文本对象加入到报表
doc.Preview() \'预览


现在 在搞套打,单据上的位置宽度就是20,但有时候TEXT的值会长些,如果长度超过20能不能自动让字体变小?

--  作者:有点甜
--  发布时间:2015/2/12 17:18:00
--  
 不可以,你可以判断字符的长度,对应的设置字体大小。
--  作者:unverse
--  发布时间:2015/2/12 17:24:00
--  
唉。。这个属性应该 有吧,判断太麻烦了,还得数数多少字数设置几号字,固定在代码里,麻烦 。
--  作者:有点甜
--  发布时间:2015/2/12 17:27:00
--  

Dim doc As New PrintDoc \'定义一个报表
Dim rt As New prt.RenderText \'定义一个文本对象
rt.Text = "Hello Foxtable" \'设置文本对象的内容
rt.Style.Borders.All = New prt.Linedef(0.3, Color.Red) \'设置边框

Dim g As Graphics = basemainform.CreateGraphics
Dim size = g.MeasureString(rt.Text, rt.Style.Font)
msgbox(size.width/96*25.4)
msgbox(size.height/96*25.4)

rt.Width=20
doc.Body.Children.Add(rt) \'将文本对象加入到报表
doc.Preview() \'预览\'


--  作者:unverse
--  发布时间:2015/2/12 17:47:00
--  
size.width/96*25.4 这个是计算 字符的长度嘛,如果width 的值小于这个数就会打不开是吧,
--  作者:有点甜
--  发布时间:2015/2/12 17:49:00
--  
以下是引用unverse在2015/2/12 17:47:00的发言:
size.width/96*25.4 这个是计算 字符的长度嘛,如果width 的值小于这个数就会打不开是吧,

 

意思是。你可以设置文本的字体,直至其宽度在某个宽度范围内,即可。


--  作者:有点甜
--  发布时间:2015/2/12 17:55:00
--  

 

Dim doc As New PrintDoc \'定义一个报表
Dim rt As New prt.RenderText \'定义一个文本对象
rt.Text = "Hello Foxtable" \'设置文本对象的内容
rt.Style.Borders.All = New prt.Linedef(0.3, Color.Red) \'设置边框
rt.Width=20

Dim g As Graphics = basemainform.CreateGraphics
Dim size As Object
Dim fsize As Double = rt.Style.Font.Size
Dim fname As String  = rt.Style.Font.Name

size = g.MeasureString(rt.Text, new font(fname, fsize))
Do While (size.width/96*25.4) > rt.Width.Value
    fsize -= 0.5
    size = g.MeasureString(rt.Text,  new font(fname, fsize))
Loop

rt.Style.Font = new font(fname, fsize)
doc.Body.Children.Add(rt) \'将文本对象加入到报表
doc.Preview() \'预览\'


--  作者:freeants
--  发布时间:2016/7/2 21:57:00
--  
mark 专业报表字体自动大小