摘录,你好好看看在设计程序时,有时我们需要动态地创建菜单, 通常我们使用以下的语句
PopupMenu1 := TPopupMenu.Create(Self);
Item := TMenuItem.Create(PopupMenu1);
Item.Caption := 'First Menu';
Item.OnClick := MenuItem1Click;
PopupMenu1.Items.Add(Item);
Item := TMenuItem.Create(PopupMenu1);
Item.Caption := 'Second Menu';
Item.OnClick := MenuItem2Click;
PopupMenu1.Items.Add(Item);
Item := TMenuItem.Create(PopupMenu1);
Item.Caption := 'Third Menu';
Item.OnClick := MenuItem3Click;
PopupMenu1.Items.Add(Item); Item := TMenuItem.Create(PopupMenu1);
Item.Caption := '-';
PopupMenu1.Items.Add(Item);
Item := TMenuItem.Create(PopupMenu1);
Item.Caption := 'Fourth Menu';
Item.OnClick := MenuItem4Click;
PopupMenu1.Items.Add(Item);
其实我们可以使用一种更快的方法达到同样的功能, 但使用很少的代码, 那就是用NewLine和NewItem, 看看下面的例子, 是不是很简单?
PopupMenu1 := TPopupMenu.Create(Self);
with PopUpMenu1.Items do
begin
Add(NewItem('First Menu',0,False,True,MenuItem1Click,0,'MenuItem1'));
Add(NewItem('Second Menu',0,False,True,MenuItem2Click,0,'MenuItem2'));
Add(NewItem('Third Menu',0,False,True,MenuItem3Click,0,'MenuItem3'));
Add(NewLine); // 增加一个分割棒
Add(NewItem('Fourth Menu',0,False,True,MenuItem4Click,0,'MenuItem4'));
PopupMenu1 := TPopupMenu.Create(Self);
Item := TMenuItem.Create(PopupMenu1);
Item.Caption := 'First Menu';
Item.OnClick := MenuItem1Click;
PopupMenu1.Items.Add(Item);
Item := TMenuItem.Create(PopupMenu1);
Item.Caption := 'Second Menu';
Item.OnClick := MenuItem2Click;
PopupMenu1.Items.Add(Item);
Item := TMenuItem.Create(PopupMenu1);
Item.Caption := 'Third Menu';
Item.OnClick := MenuItem3Click;
PopupMenu1.Items.Add(Item); Item := TMenuItem.Create(PopupMenu1);
Item.Caption := '-';
PopupMenu1.Items.Add(Item);
Item := TMenuItem.Create(PopupMenu1);
Item.Caption := 'Fourth Menu';
Item.OnClick := MenuItem4Click;
PopupMenu1.Items.Add(Item);
其实我们可以使用一种更快的方法达到同样的功能, 但使用很少的代码, 那就是用NewLine和NewItem, 看看下面的例子, 是不是很简单?
PopupMenu1 := TPopupMenu.Create(Self);
with PopUpMenu1.Items do
begin
Add(NewItem('First Menu',0,False,True,MenuItem1Click,0,'MenuItem1'));
Add(NewItem('Second Menu',0,False,True,MenuItem2Click,0,'MenuItem2'));
Add(NewItem('Third Menu',0,False,True,MenuItem3Click,0,'MenuItem3'));
Add(NewLine); // 增加一个分割棒
Add(NewItem('Fourth Menu',0,False,True,MenuItem4Click,0,'MenuItem4'));
解决方案 »
- SetFileTime修改文件时间,修改后的结果与我传入的不同
- 将数据库记录以及出错信息写到两个文件的问题.提示i/o错误,在线等
- 如果利用程序启动service application?
- QReport中的QRImage打印预览问题
- 倒粪也要往别人身上洒一点嘛!
- 关于corba的lisence问题
- 怎莫登陆网站并取得网页内容?
- cxGrid单元格输入时怎么显示当前输入的字符?
- 我自己编写的软件,能不能在“帮助”、“关于”窗体、“条款”中自己随便写上某某公司(即一个未经注册的公司名,自己瞎编的公司名,不与
- 我想知道网络通信协议及通信的规则,请各位高手指点一下。
- 请教高手问题。谢了!!!!!!!!!!!!!!!!
- 大家帮我看看,这样的项目应该怎样构造数据库?
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,0,nil,0);100位长度整数????是什么东西???
begin
{Turn it off}
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,
0,
nil,
0);
end;
100长度整数可能指的是整数的长度为100位,而我们通常的计数器可能达不到100位长
自画菜单:
在菜单的OnMeasureItem方法里设置菜单项的大小
在OnDrawItem里通过Canvas自画菜单100位的整数运算:
用一个链表来表示一个整数,链表中的每一个Item表示整数的4个位……屏保:
实现的方法太多了
是啊,你也去了吗,我也去面试了,可惜小弟水平低微,以后要请大家多多指教
然后填写OnMenuDrawItem()和OnMenuMeasureItem() 事件;
然后其它菜单的这两个事件共享已经完成的这两个事件.
另外还有OnAdvancedMenuDrawItem();计算器就简单了.再谈......email:[email protected].