Delphi程序中怎么在运行时设置五号字? 找进销存软件设计
2楼: 如果我没有说错的话,font.size是Integer的,因此不能设置为10.5。在D中应该五号和11是对应的。 如实用的财务软件
3楼: 我看过11的结果的比五号略大 就是不信你把相同的文字设置成五号和11磅看看就清楚了
4楼: 我搞明白了 对于tfont size不行 但是height可以 但是richedit的selattributes对于height的取得有问题 所以要靠api函数来自行取得height才能解决这个问题
哪位还有什么好办法么?
5楼: 可以自定义整个窗体的显示字体和大小!
在窗体的onCreate事件中添加下面的代码即可!
// 修改标题栏显示字体大小
Screen.MenuFont.Name :=''宋体'';
Screen.MenuFont.Size :=11;
FlashWindow(Self.Handle,False);
Form1.DoubleBuffered := True;
6楼: 因为TFont中无论是Height还是Size均是Integer,所以TRichEdit在取得Size的时候进行了取整运算,只需要将"div"改成"/"就可以了,Height的道理是一样的。
var
Format: TCharFormat;
Size, Height: Extended;
begin
FillChar(Format, SizeOf(TCharFormat), 0);
Format.cbSize := SizeOf(TCharFormat);
with RichEdit1 do
SendMessage(Handle, EM_GETCHARFORMAT, wParam(SelLength > 0), lParam(@Format));
Size := Format.yHeight / 20;
Height := -Round(Size * GetDeviceCaps(GetDC(0), LOGPIXELSY) / 72);
ShowMessage(''Size:'' + FloatToStr(Size) + #13 +
''Height:'' + FloatToStr(Height));
end;
记账软件版7楼: 设置字号,Size=10.5对应Height=-14,如果担心在属性面板中设置Height=-14后Size仍然=11而不是10.5,可以试一试:
var
hdlFont: HFONT;
begin
hdlFont := CreateFont(-14, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET,
0, 0, 0, 0, PChar(Font.Name));
SendMessage(Button1.Handle, WM_SETFONT, hdlFont, 0);
end;
我也感觉不出来,截下图放大仔细看 还是能看出点区别的
8楼: mrmrw:
谢谢
不过MenuFont?我要的不是11磅是10.5磅(5号)
9楼: smithcouple:
我是这样弄的 要用api挺烦的 还有什么捷径吗?
10楼: VCL源代码也是这么写的
如果不用API,还真不知道怎么解决这个,毕竟RichEdit是属于Commom Control
11楼: 恩 是挺麻烦的 最好能建议borland修改一下vcl
哎 谁让是美国人的产品呢 他们不会考虑到这一点的 所以用div了
12楼: 非要设10.5pt不可吗? 如进销存软件设计
13楼: 感觉不舒服呀 总是用5号字的多咯 你会用11磅吗? 貌似fontdialog里面默认也没有11pt的
记账软件版14楼: 多人接受答案了。