当前位置:主页>仓库管理软件> 列表

Delphi程序中怎么在运行时设置五号字? 找进销存软件设计

记账软件版1楼: vcl中的size/height是使用整型的怎么来设置某一控件的字体为五号?(10.5)(在fontdialog中即使选择了五号字然后把font属性直接复制给控件,控件的字体将会是11磅)

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楼: 多人接受答案了。