ツールバーボタンの削除

提供: RAD Studio
移動先: 案内検索

Tools API を使用した IDE の拡張 への移動

ツールバーからボタンを削除する適当な関数はないので,CM_CONTROLCHANGE メッセージを送信する必要があります。最初のパラメータは変更するコントロールです。2 番めのパラメータがゼロの場合はこのコントロールが削除され,ゼロ以外の場合はツールバーにコントロールが追加されます。デストラクタは,ツールバーのボタンを削除してからアクションとメニュー項目を削除します。これらの項目を削除すると,IDE の ActionList と MainMenu の項目が自動的に削除されます。



 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
       { 「ツールバー」から「ボタン」を除去 }
       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);
   { すべてのツールバーをチェックしてこのアクションを使用するすべてのボタンを除去 }
 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;



 void __fastcall remove_action (TAction* action, TToolBar* toolbar)
 {
 for (int i = toolbar->ButtonCount; --i >= 0; )
 {
 TToolButton* button = toolbar->Buttons[i];
 if (button->Action == action)
 {
 // "toolbar" から "button" を削除
 toolbar->Perform(CM_CONTROLCHANGE, WPARAM(button), 0);
 delete button;
 }
 }
 }
 __fastcall MyWizard::~MyWizard()
 {
 _di_INTAServices services;
   BorlandIDEServices->Supports(services);
   // すべてのツールバーをチェックし,このアクションを使用する
 // ボタンを削除
 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;
 }



関連項目