Foxtable(狐表)用户栏目专家坐堂 → 专业报表WIdth值固定,text超长字号能否自动变小?


  共有3737人关注过本帖树形打印复制链接

主题:专业报表WIdth值固定,text超长字号能否自动变小?

帅哥哟,离线,有人找我吗?
unverse
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1088 积分:8247 威望:0 精华:4 注册:2012/3/31 18:08:00
专业报表WIdth值固定,text超长字号能否自动变小?  发帖心情 Post By:2015/2/12 17:17: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
doc.Body.Children.Add(rt) '将文本对象加入到报表
doc.Preview() '预览


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

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/2/12 17:18:00 [只看该作者]

 不可以,你可以判断字符的长度,对应的设置字体大小。

 回到顶部
帅哥哟,离线,有人找我吗?
unverse
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1088 积分:8247 威望:0 精华:4 注册:2012/3/31 18:08:00
  发帖心情 Post By:2015/2/12 17:24:00 [只看该作者]

唉。。这个属性应该 有吧,判断太麻烦了,还得数数多少字数设置几号字,固定在代码里,麻烦 。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1088 积分:8247 威望:0 精华:4 注册:2012/3/31 18:08:00
  发帖心情 Post By:2015/2/12 17:47:00 [只看该作者]

size.width/96*25.4 这个是计算 字符的长度嘛,如果width 的值小于这个数就会打不开是吧,

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/2/12 17:49:00 [只看该作者]

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

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:572 积分:3771 威望:0 精华:0 注册:2014/5/8 13:41:00
  发帖心情 Post By:2016/7/2 21:57:00 [只看该作者]

mark 专业报表字体自动大小

 回到顶部