RAD Studio |  |

Deleting Toolbar Buttons
See Also
Collapse All

There is no convenient function for removing a button from a toolbar; you must send the CM_CONTROLCHANGE message, where the first parameter is the control to change, and the second parameter is zero to remove it or non-zero to add it to the toolbar. After removing the toolbar buttons, the destructor deletes the action and menu item. Deleting these items automatically removes them from the IDE's ActionList and MainMenu.

Copy Code

    procedure remove_action (Action: TAction; ToolBar: TToolBar);
    var
      I: Integer;
      Btn: TToolButton;
    begin
      for I := ToolBar.ButtonCount - 1 downto 0 do
      begin
        Btn := ToolBar.Buttons[I];
        if Btn.Action = Action then
        begin
          { Remove "Btn" from "ToolBar" }
          ToolBar.Perform(CM_CONTROLCHANGE, WPARAM(Btn), 0);
          Btn.Free;
        end;
      end;
    end;
    destructor MyWizard.Destroy;
    var
      Services: INTAServices;
      Btn: TToolButton;
    begin
      Supports(BorlandIDEServices, INTAServices, Services);
      { Check all the toolbars, and remove any buttons that use this action. }
    remove_action(NewAction, Services.ToolBar[sCustomToolBar]);
    remove_action(NewAction, Services.ToolBar[sDesktopToolBar]);
    remove_action(NewAction, Services.ToolBar[sStandardToolBar]);
    remove_action(NewAction, Services.ToolBar[sDebugToolBar]);
    remove_action(NewAction, Services.ToolBar[sViewToolBar]);
    remove_action(NewAction, Services.ToolBar[sInternetToolBar]);
      NewItem.Free;
      NewAction.Free;
    end;

Copy Code

    void __fastcall remove_action (TAction* action, TToolBar* toolbar)
    {
    for (int i = toolbar->ButtonCount; --i >= 0; )
    {
    TToolButton* button = toolbar->Buttons[i];
    if (button->Action == action)
    {
    // Remove "button" from "toolbar".
    toolbar->Perform(CM_CONTROLCHANGE, WPARAM(button), 0);
    delete button;
    }
    }
    }
    __fastcall MyWizard::~MyWizard()
    {
    _di_INTAServices services;
      BorlandIDEServices->Supports(services);
      // Check all the toolbars, and remove any buttons that use
    // this action.
    remove_action(action, services->ToolBar[sCustomToolBar]);
    remove_action(action, services->ToolBar[sDesktopToolBar]);
    remove_action(action, services->ToolBar[sStandardToolBar]);
    remove_action(action, services->ToolBar[sDebugToolBar]);
    remove_action(action, services->ToolBar[sViewToolBar]);
    remove_action(action, services->ToolBar[sInternetToolBar]);
      delete menu_item;
    delete action;
    }

See Also

Adding an Image to the Image List

Adding an Action to the Action List

Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
What do you think about this topic? Send feedback!