ToolBar 有几个事件用来实现其自定义功能,但我实现这些事件时总是出错,不是index out range 就是很严重的av 错误,有谁知道如何实现这几个事件?使用第三方控件就不要贴出来了。

解决方案 »

  1.   

    OnCustomizeNewButton有个var Button: TButton参数,以创建这个Button就死机OnCustomizeDelete事件(好像是这个)只要一实现,就报index out range 错误我发现ToolBar有这样一些事件:OnCustomDrawButton,OnCustomizeAdded,OnCustomizeCanDelete,CustomizeCanInsert,OnCustomized,OnCustomizeDelete,OnCustomizeNewButton,OnCustomizeReset,OnCustomizing,我想它们和定制工具栏都有关系吧,可是我不知道怎么用,您能举些例子吗?
      

  2.   

    你是不是在这个事件中调用Button进行某些操作?此时Button正在创建,还没创建完成.
      

  3.   

    procedure TfrmMain.Button1Click(Sender: TObject);
    var
     btn : TToolButton;
    begin
      btn := TToolButton.Create(self);
      btn.caption :='tst';
      btn.Parent := ToolBar1;
    end;procedure TfrmMain.ToolBar1CustomizeNewButton(Sender: TToolBar;
      Index: Integer; var Button: TToolButton);
    begin
     ShowMessage(Button.Caption);
    end;
    试过了,没问题呀,是不是你说的问题我没理解,要不说详细点?
      

  4.   

    var Button: TToolButton我看了comctrls中的代码,其实Button是一TControl类型,但根本就没有Create,我想是不是要我们自己来实现,所以我事件里Create它。
    procedure TfrmMain.ToolBar1CustomizeNewButton(Sender: TToolBar;
      Index: Integer; var Button: TToolButton);
    begin
     Button := TToolButton.Create(Self);
     ...
    end;
    然后就死机。这个事件是用来在自定义对话框左边的listbox中添加按钮的,那么如何做呢?
      

  5.   

    This event occurs after the new button is already added to the toolbar. To respond before the button is added, possibly even preventing the user from adding the button, use the OnCustomizeCanInsert event instead.上面是这个事件的帮助主题里的一句话。当Button已经被添加到toolbar上后,才会触发这个事件。所以你不应该在这个事件中又创建