unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ExtCtrls, jpeg;type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
Image1: TImage;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure N4AdvancedDrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; State: TOwnerDrawState);
procedure N5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
Mbitmap:Tbitmap;
implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
Mbitmap:=Tbitmap.Create;
mbitmap.LoadFromFile('2.bmp');
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
mbitmap.Free;
end;procedure TForm1.N4AdvancedDrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; State: TOwnerDrawState);
var
Mrect:Trect;
begin
acanvas.TextWidth(TMenuItem(Sender).Caption);
mrect:= rect(0,0,mbitmap.Width,mbitmap.Height);
acanvas.Draw(arect.Left,arect.Top-arect.Bottom,mbitmap);
acanvas.TextRect(rect(arect.Left+mbitmap.Width+2,arect.Top,arect.Right,arect.Bottom),arect.Left+mbitmap.Width+2,arect.Top+3,TMenuItem(Sender).Caption);
setbkmode(acanvas.Handle,TRANSPARENT);
DrawText(acanvas.Handle,'我'+#13+'的'+#13+'菜'+#13+'单',-1,mrect,DT_LEFT+DT_Center);
end;procedure TForm1.N5Click(Sender: TObject);
begin
Close;
end;end.
从参考书中看到代码如下,但是功能不完善。
问题:
1 现在只有第一列菜单显示了图片,而且如果增加了菜单项,增加部分就没有图片显示了。2 现在的想法是能够让每一列菜单都有这个图片显示,而且最好能做到office2003效果那样的效果。请高手解答一下。谢谢!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ExtCtrls, jpeg;type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
Image1: TImage;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure N4AdvancedDrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; State: TOwnerDrawState);
procedure N5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
Mbitmap:Tbitmap;
implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
Mbitmap:=Tbitmap.Create;
mbitmap.LoadFromFile('2.bmp');
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
mbitmap.Free;
end;procedure TForm1.N4AdvancedDrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; State: TOwnerDrawState);
var
Mrect:Trect;
begin
acanvas.TextWidth(TMenuItem(Sender).Caption);
mrect:= rect(0,0,mbitmap.Width,mbitmap.Height);
acanvas.Draw(arect.Left,arect.Top-arect.Bottom,mbitmap);
acanvas.TextRect(rect(arect.Left+mbitmap.Width+2,arect.Top,arect.Right,arect.Bottom),arect.Left+mbitmap.Width+2,arect.Top+3,TMenuItem(Sender).Caption);
setbkmode(acanvas.Handle,TRANSPARENT);
DrawText(acanvas.Handle,'我'+#13+'的'+#13+'菜'+#13+'单',-1,mrect,DT_LEFT+DT_Center);
end;procedure TForm1.N5Click(Sender: TObject);
begin
Close;
end;end.
从参考书中看到代码如下,但是功能不完善。
问题:
1 现在只有第一列菜单显示了图片,而且如果增加了菜单项,增加部分就没有图片显示了。2 现在的想法是能够让每一列菜单都有这个图片显示,而且最好能做到office2003效果那样的效果。请高手解答一下。谢谢!
解决方案 »
- FastReport4.X 报表预览格式怎么保存到Excel?
- TBitmap的SaveToStream的奇怪问题?
- 请问,如何截取一个字符与另一个字符之间的字符串
- 各位帅哥,请教关于窗体界面打印有关问题!SOS SOS !~~!!~!!
- 各种数据库接口的选择
- 一个超难的问题!(如何用PASCAL语言实现计算图片上一个选中物体的周长?
- 急!转化一段vc++代码为delphi代码!!!(顶有分)
- 请问如何在DBGrid中自动加入一个用于描述记录行数的字段?
- 请问:为何工程执行是出现"Insufficient memory for this operation"的错误提示?
- delphi 实现指定盘符文件搜索过滤功能
- 急!!!!!!!!!!!一个简单的问题!谢谢!(新手)
- 如何让BHO只对IEXPLORE起作用,而对EXPLORE不起作用啊
[email protected]