摘录,你好好看看在设计程序时,有时我们需要动态地创建菜单, 通常我们使用以下的语句 
    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')); 

解决方案 »

  1.   

    menuitem上不是有acanvas,arect,select吗??? ondrawitem时尽情画退出平保
    SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,0,nil,0);100位长度整数????是什么东西???
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    {Turn it off}
      SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,
                           0,
                           nil,
                           0);
    end;
      

  3.   

    to kmask(上上签):
    100长度整数可能指的是整数的长度为100位,而我们通常的计数器可能达不到100位长
      

  4.   

    100位长度整数必须用数组的方法才能达到unsigned char LongInterger[100];计算的时候要琢位计算..就像算盘一样
      

  5.   

    嗬嗬,这不是实达铭泰的笔试题吗?
    自画菜单:
    在菜单的OnMeasureItem方法里设置菜单项的大小
    在OnDrawItem里通过Canvas自画菜单100位的整数运算:
    用一个链表来表示一个整数,链表中的每一个Item表示整数的4个位……屏保:
    实现的方法太多了
      

  6.   

    to Firing_Sky(火的天空):
    是啊,你也去了吗,我也去面试了,可惜小弟水平低微,以后要请大家多多指教
      

  7.   

    MainMenu或PopupMenu的OwnerDraw为true;
    然后填写OnMenuDrawItem()和OnMenuMeasureItem() 事件;
    然后其它菜单的这两个事件共享已经完成的这两个事件.
    另外还有OnAdvancedMenuDrawItem();计算器就简单了.再谈......email:[email protected].