怎么使form中的mainmenu菜单中的字号变大? (20分)

  • 主题发起人 主题发起人 maginnn
  • 开始时间 开始时间
M

maginnn

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么使form中的menu菜单中的字号变大?
 
每个可视组件都有个Font属性的..你说的可以在那里设置
 
菜单的OwnerDraw设成True
Screen.MenuFont.Size := 大小;
 
设FONT属性不行吗?
 
在Windows的显示属性中设置 哈哈[:D]
 
运气不错,昨天刚好有人叫我帮他做此功能:
1.MainMenu1.Ondraw := True;
2.MainMenu1.AutoHotKeys:=maManual;
3.随便在一个菜单项的OnDrawItem写下如下代码
procedure TForm1.gsdagf1DrawItem(Sender: TObject;
ACanvas: TCanvas;
ARect: TRect;
Selected: Boolean);
begin
SetCanvasFont(ACanvas, '宋体', 11, clRed, [fsBold]);
ACanvas.TextOut(ARect.Left, ARect.Top, (Sender as TMenuItem).Caption);
end;
4.{其它代码:}
procedure TForm1.SetCanvasFont(ACanvas: TCanvas;
sFontName: String;
iFontSize, iFontColor: Integer;
fsStyle: TFontStyles);
begin
with ACanvas.Font do
begin
Name := sFontName;
Size := iFontSize;
Color := iFontColor;
Style := fsStyle;
end;
end;
procedure TForm1.DrawMenuItem;
var
i,j: integer;
begin
for i := 0 to MainMenu1.Items.Count - 1 do
begin
MainMenu1.Items.OnDrawItem := gsdagf1DrawItem;
for j := 0 to MainMenu1.Items.Count - 1do
MainMenu1.Items.Items[j].OnDrawItem := gsdagf1DrawItem;
//指向菜单自画事件
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
DrawMenuItem;
end;
 
就是wind2000写的那样
 
那出错了?????????
 
to maginnn:
你再慢慢调试,单步运行一下,看看错误提示是什么?因为我上面代码在Windows2000+D6和
Windows98+D5下都运行通过的。
 
现在的一个问题是,菜单的字体大小可以变了,可是
菜单的每一项的框,容不下太大的字,字显示的不全,半拉咔叽的!
能不能让菜单也相应的变大,(使字体变大后,显示也能正常)
 
而且,好像字体的大小影响不到子菜单上的字体大小??
 
明天给你答案,我今天晚上就可以得出答案,这个问题不是很难解决,以前实现过,在c++builder
1.0 时代就已经不是问题了。
 
多谢 老叫花子 了!!
 
有人可以帮帮我吗?
 
哈哈!两个步骤。
1、MainMenu.OwnerDraw:=True
Screen.MenuFont.Size := 大小;
你可以看到菜单的字都变大了,但菜单的第一项显示不全。
2、设置首项菜单的OnMeasureItem事件,调整Width就可以咯。
 
??
procedure TForm1.a1MeasureItem(Sender: TObject;
ACanvas: TCanvas;
var Width, Height: Integer);
begin

height:=900;//奇怪,怎么高度调整不了??只是宽度可以调?????
width:=200;
end;
谢谢
 
但是 字体显示的很粗糙 与不变大小的相差很远阿
看起来很不舒服
 
多人接受答案了。
 
后退
顶部