自动根据文字多少设置标签字体大小??

kingeboy 2005-06-03 04:22:00
窗体有一标签其大小是固定的,如果设置的文字超出,那部分就会不显示,怎样在不改变标签大小的前提下只改变字体大小使其文字能全部显示出来?
搞了半天都不是很理想,所以上来问下各位前辈.
...全文
453 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingeboy 2005-06-07
  • 打赏
  • 举报
回复
回 cczlp(不惑)
星星就是不一样啊,我怎么没有想到这一步,老是把问题想的太复杂了.
解决了,谢谢各位!!!
cczlp 2005-06-06
  • 打赏
  • 举报
回复
Label1->AutoSize = false;
Label1->Caption = "abcdefghijk";
Label1->Font->Size = 12;
Label1->Canvas->Font = Label1->Font;
while (Label1->Canvas->TextWidth(Label1->Caption) > Label1->Width)
{
Label1->Font->Size--;
Label1->Canvas->Font = Label1->Font;
if (Label1->Font->Size < 4) break;
}
kingeboy 2005-06-06
  • 打赏
  • 举报
回复
自己顶一下!!!
kingeboy 2005-06-04
  • 打赏
  • 举报
回复
没人懂吗?
期待高手啊!!!
kingeboy 2005-06-04
  • 打赏
  • 举报
回复
回 cczlp(不惑)
我只是探讨这个问题怎么解决,字体大小问题另当别论.
回 jhzhao2002(病毒)
这个我也用了,可以知道当前Label->Caption的文字总宽度大于Label->Width,就是有部分文字是显示不出来的,问题就是怎么根据超出文字的多少,而改变Label->Font->Size使Label->Caption的文字全部显示在固定的Label->Width上?
jhzhao2002 2005-06-03
  • 打赏
  • 举报
回复
用canvas中的计算字体宽度的属性是非常准确的。Label1->Canvas->TextWidth(Label1->Caption)返回字符串的宽度(像素)。
wingfootedtiger 2005-06-03
  • 打赏
  • 举报
回复
leonatcs(LeonKennedy)(每天逛一逛csdn,有益身心健康。) 说的Bug似乎是windows采用的字符集的问题,每次在英文系统下输入中文,会出现最后半个字符看不见.其他情况倒没遇到过.
楼主说的应该用autosize就可以吧?没试过,一会试试
leonatcs 2005-06-03
  • 打赏
  • 举报
回复
BCB似乎有个bug,就是label有时候会短一些,最后面的一个字会只能看到一半。

至于你说的,
可以把autosize调成false,
自己判断字符的多少,设置label->width和label->font->size
cczlp 2005-06-03
  • 打赏
  • 举报
回复
这样不好吧,自体太小会看不清。
界面字体应该保持一致。
kingeboy 2005-06-03
  • 打赏
  • 举报
回复
标签当然是Label了,麻烦看清楚题目啊老大,我的要求是不改变控件的大小.
wingfootedtiger 2005-06-03
  • 打赏
  • 举报
回复
标签是指什么控件啊?很多控件都又Autosize属性,=true就行了

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧