Schaltflächen aus der Schalterleiste entfernen
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; }