菜单中的字体怎样设置?(200分)

  • 主题发起人 主题发起人 8qing
  • 开始时间 开始时间
8

8qing

Unregistered / Unconfirmed
GUEST, unregistred user!
菜单中的字体怎样设置?
 
owner draw 然后自己制定字体自己画。
 
procedure Tmainf.dataNMeasureItem(Sender: TObject; ACanvas: TCanvas;
var Width, Height: Integer);
begin
with ACanvas do
begin
font.Name := '宋体';
Font.Size := 20;
Width := 120;
height := 32;
end;
end;

懂了吗?
 
笨办法,设置显示属性的外观
 
aerobull的办法没用,好像menuitem的font是固定的
 
to aerobull:
失败
 
菜单上的字体由操作系统决定,用cool menu吧
 
htw:你又比我快一步!!
强烈建议用cool menu,爽得很,你想咱个画就咱个画
 
screen.menufont
可定制菜单字体属性。
 
aerobull 的方法首先要设置菜单为OWNERDRAW风格。
 
用第三方的控件吧,有很多很cool的菜单。:)
 
不错,我试了试,要设置ownerdraw为true

但如果使用了skinform中的tskinEngine,它连接的mainmenu中
的字体总是MS Sans Serif中的规则8号字,用老赵和李子的方法
好像都不行

有没有办法?
 
Cool Menu 做起来太复杂了,近于恐怖
 
我想对TMenu加入一个font属性,查看了controls.pas文件,还是一头雾水
不知能否贴上源码?
 
解决!

TMainMenu1.OwnerDraw:=true;

procedure TForm1.FormCreate(Sender: TObject);
begin
screen.MenuFont.name:='@黑体';
end;
 
看来只能靠自己了,给自已打个气:),不知大家还有什么好的方法?
procedure TForm1.FormCreate(Sender: TObject);
var
ncm: TNonClientMetrics;
PixelsPerInch: Integer;
begin
ncm.cbSize := sizeof(TNonClientMetrics);
SystemParametersInfo(
SPI_GETNONCLIENTMETRICS,
sizeof(NONCLIENTMETRICS),
@ncm,
0
);

PixelsPerInch := GetDeviceCaps(GetDC(0), LOGPIXELSY);
//设置字体
ncm.lfMenuFont.lfFaceName:='宋体';
//菜单高度
ncm.iMenuHeight:= -MulDiv(8,PixelsPerInch,72)*(-2);
//字体高度
ncm.lfMenuFont.lfHeight := -MulDiv(9, PixelsPerInch, 72);
SystemParametersInfo(
SPI_SETNONCLIENTMETRICS,
sizeof(NONCLIENTMETRICS),
@ncm,
SPIF_UPDATEINIFILE);
end;
 
上面的不一定是最好,最好的是建立个Tfont类,可惜其
中许多关节打不通,哎,谁能帮我?
 
8qing,提供的参考有没有去试一下?
 
coolmenu 轻松搞定。
不过最好是用高版本的结合低版本的。setsysteminfo()不推荐。菜单效果太单一。
 
后退
顶部