Schaltflächen aus der Schalterleiste entfernen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Die Hauptobjekte der IDE verwenden


Es gibt keine spezielle Funktion zum Entfernen von Schaltflächen aus der Symbolleiste. Sie müssen daher die Botschaft CM_CONTROLCHANGE senden. Geben Sie als ersten Parameter das zu ändernde Steuerelement an. Besitzt der zweite Parameter den Wert 0, wird das Steuerelement aus der Schalterleiste entfernt; ein Wert ungleich 0 fügt es hinzu. Nach dem Entfernen der Schaltflächen löscht der Konstruktor die Aktion und den Menübefehl. Dadurch werden diese Elemente automatisch auch in der Aktionsliste der IDE bzw. deren Hauptmenü gelöscht.

 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);
   { Alle Schalterleisten prüfen und alle Schaltflächen entfernen, die diese Aktion verwenden. }
 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)
 {
 // romove "button" from "toolbar".
 toolbar->Perform(CM_CONTROLCHANGE, WPARAM(button), 0);
 delete button;
 }
 }
 }
 __fastcall MyWizard::~MyWizard()
 {
 _di_INTAServices services;
   BorlandIDEServices->Supports(services);
   { Alle Schalterleisten prüfen und alle Schaltflächen entfernen,
 // die diese Aktion verwenden.
 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;
 }

Siehe auch